Nie można wykonać pliku binarnego, gdy nie jest zalogowany jako su


3

Bawię się z Linuksem i zaczynam korzystać z terminala. Próbuję utworzyć foldery w katalogu głównym systemu plików, do którego mój zwykły użytkownik nie ma uprawnień.

Podczas biegu su root mkdir u01; Zostałem poproszony o podanie poświadczeń, a następnie Terminal zwraca błąd „Nie można wykonać pliku binarnego”

Jeśli ucieknę su root i wtedy mkdir u01, polecenie działa dobrze.

Jakieś pomysły?

Jestem na Oracle Linux 6.5


może użytkownik, którego próbujesz wykonać komendę, nie ma wystarczających poświadczeń, aby to zrobić!
— wisdom

Jaka jest twoja domyślna powłoka dla roota? Jaki jest wynik locate mkdir? Pytam, ponieważ w jednym przypadku możesz spróbować uruchomić plik binarny o nazwie mkdir, aw przypadku su możesz użyć wewnętrznego polecenia powłoki.
— Hennes

Nie zapytano, ale rozważ utworzenie tych folderów na / usr / local /. Prawdopodobnie jest to partycja lokalna, która powinna pozostać nienaruszona, jeśli kiedykolwiek będziesz musiał ponownie zainstalować system operacyjny. Widzieć man hier
— Hennes

Używam środowiska testowego VM, regularnie snapshotowanego, więc wkręcanie nie jest wielkim problemem. Używanie / u01 / u02 itd. Jest normą w systemach Oracle, dlatego musiałem utworzyć ten folder.
— razumny

Odpowiedzi:


7

Problemem jest twoje wezwanie do su.

Prawidłowa składnia wykonywania polecenia jako inny użytkownik to:

su [username] -c "[command]"

Zanotuj cytaty wokół polecenia; ważne jest, aby pozostałe argumenty polecenia były poprawnie wykonywane.


Kiedy to próbuję, trafiam na nową blokadę drogi: terminal zwraca mkdir: brakujący argument. Polecenie, które uruchamiam, to: su root -c mkdir u03
— razumny

1
@razumny Powinieneś wpisać su root -c 'mkdir u03' Apostrofy są częścią polecenia, musisz je wpisać.
— MariusMatutiae

1
Tak, cytaty są ważne. Zaktualizuję moją odpowiedź, aby uwzględnić to.
— ethanwu10

To wyjaśnia to, dzięki!
— razumny

0

Ogólnie rzecz biorąc, „normalny” użytkownik nie powinien mieć możliwości tworzenia plików lub folderów w katalogu głównym systemu plików. Dopuszczenie tego prowadzi do wszelkiego rodzaju problemów związanych z bezpieczeństwem.

Gdy uruchomisz „su root mkdir u01”, system poprosi Cię o hasło roota. To, co prawdopodobnie powinieneś uruchomić, to „sudo mkdir u01”, który zapyta cię o twoje normalne hasło użytkownika. Zauważ, że zakłada to, że sudo jest poprawnie skonfigurowane, aby to umożliwić.


Dlaczego miałbyś -1 odpowiedzieć. Zakładałem, że przeczytałeś już stronę podręcznika dla su i zobaczyłeś przełącznik „-c”. Moja odpowiedź jest poprawna. Gdyby nie to, co lubisz, bardziej uprzejma odpowiedź byłaby pozostawiona na 0.
— joat

0

Jeśli masz sudo prawidłowo skonfigurowany, jest to właściwy sposób na utworzenie tego katalogu:

sudo mkdir u01

Jeśli sudo nie działa z jakiegoś powodu (lub nawet nie jest zainstalowane - mało prawdopodobne, ale możliwe), możesz użyć su z parametrem polecenia -c, lubię to:

su -c "mkdir u01"

(zauważ, że komenda musi być cytowana, aby mogła być poprawnie przekazana do su ).

Ważna różnica między używaniem sudo vs su: po wyświetleniu monitu o hasło sudo potrzebuje hasła do konta użytkownika, ale su potrzebuje hasła do konta roota. W wielu dystrybucjach Linuksa (w szczególności rodzina Ubuntu / Debian) hasło do konta roota nie może być nigdy przypisane, więc su może się nie powieść (chyba że wcześniej przypiszesz hasło do konta root).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.