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

razumny
źródło
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.

ethanwu10
źródło
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ć.

joat
źródło
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).

mvp
źródło