Dlaczego nie mogę uruchomić `su`? (i jak mam to zrobić?)

32

Za każdym razem, gdy próbuję wydać su, otrzymuję to:

$ su  
Password:  
su: Sorry

Nie trzeba dodawać, że wprowadzam prawidłowe hasło administratora, które działa sudo. Nie chcę za sudokażdym razem wchodzić .

Petruza
źródło

Odpowiedzi:

33

W systemie MacOS X użytkownik root jest domyślnie wyłączony, dlatego sunie będzie działać. Jak stwierdzili inni, najlepiej go używać sudo.

Jeśli musi umożliwić użytkownikowi root zobaczyć TechNote Apple: Włączanie i stosując „root” użytkownika w systemie Mac OS X .

ghoppe
źródło
13
sudo sunadal działa, więc nie jest tak naprawdę wyłączone. Po prostu nie ma hasła.
Fałszywe imię
@FakeName To jest najbardziej zabawne backdoor! Jeśli potrafisz biegać sudo su, co na świecie jest sens w wyłączaniu su?
Kanion Kolob
3
@KolobCanyon - Nie chodzi tak naprawdę o „wyłączenie su”, lecz o zapobieganie logowaniu do roota . Nie zezwalając na logowanie jako root, zapobiega się wielu możliwym problemom bezpieczeństwa. Nie pozwalając ktoś, kto może sudodo suniby głupie. Zasadniczo suwystarczy zmienić bieżący identyfikator użytkownika i wykonać polecenie (powłokę, jeśli nie została określona). Jeśli identyfikator użytkownika ma już 0 (root), na przykład gdy jest wykonywany przy pomocy sudo, nie ma nic do zrobienia, więc po prostu wykonuje powłokę. Możesz uzyskać podobny efekt, robiąc sudo bash.
Fałszywe imię
1
@FakeName Nadal mylić. Jaka jest różnica między zalogowaniem się jako root a uruchomieniem „sudo su”? Czy to nie jest efektywnie ten sam poziom?
Kolob Canyon
2
@KolobCanyon - Nope. Zasadniczo, jeśli wyłączysz logowanie , oznacza to, że jeśli istnieje luka w procesie logowania, haker nie może użyć go do bezpośredniego rootowania. Zasadniczo przenosi wymagany kompromis administratora z „kompromisu logowania” na „kompromis logowania dla konta użytkownika + privesc”. Zasadniczo odbywa się to w ramach obrony.
Fałszywe imię
13

Masz dwie opcje. Pierwszym z nich jest użycie sudo -s- da ci to dostęp do administratora, ale nadal będziesz „sobą” (że tak powiem), więc rzeczy takie jak ~nadal będą twoim katalogiem domowym. Alternatywnie możesz użyć sudo su, co daje powłokę jako rzeczywisty użytkownik root twojego komputera Mac.

Kyle Cronin
źródło
5
Apple Way (tm) służy sudodo uruchamiania poleceń wymagających podwyższonych uprawnień, a nie do przełączania się na powłokę root i pracy z tym.
Ian C.
3
@Ian C. - Nie, tak naprawdę jest to uniksowy sposób. Apple po prostu go używa, ponieważ jest również oparty na * nix.
Fałszywe imię
@Fake Name: Apple dokłada wszelkich starań, aby nigdy nie rozmawiać ani nie udostępniać powłoki root użytkownikom. Można powiedzieć, że sudoskrajnie podnoszą etos. Ale cokolwiek: semantyka. Nie używaj powłok roota w OS X.
Ian C.
1
@Ian C - Apple nie robi dużo więcej niż projektanci * nix, Apple po prostu o tym nie mówi. W obu przypadkach jest dostępny, tylko w przypadku takich rzeczy jak Linux, mówią ci, jak go łatwo używać. Jeśli to sprawia, że ​​jest on szerzej stosowany , nie wskazuje to na różnicę w architekturze.
Fałszywe imię
1

Na przykład, jeśli potrzebujesz przenieść pliki lub użyć git za pomocą interfejsu CLI, wówczas najlepszym rozwiązaniem będzie użycie sudo -spolecenia. Po tym poleceniu nie musisz ciągle wprowadzać hasła.

Kahef Mirza
źródło
1

Myślę, że nie możesz tego zrobić jako „normalny” użytkownik ...

Jeśli istnieje inne konto użytkownika z uprawnieniami administratora, musisz z niego skorzystać

restricted user$ su
Password:(the root password here)
Sorry!

restricted user$ su - (an admin account here)
password:(the admin account password)
$ su - root
Password:(The root password here)
# -> You are root user now
użytkownik302849
źródło
1

Nowoczesne rozwiązanie: sudo -u

Aby uruchomić jako inne użycie, użyj sudo -u.

Na przykład, aby uruchomić edytor tekstu, taki jak nano :

sudo -u someuser nano

… I wprowadź hasło administratora Macintosh po wyświetleniu monitu. W tym momencie przywołuje użytkownika administrator Mac sudo, a nie someuserużytkownik, więc nie wprowadzasz someuserhasła.

  • sudo oznacza uruchomienie czegoś przy użyciu uprawnień administratora.
  • -u oznacza „uruchom określone polecenie jako ten określony użytkownik”.
  • someuser należy zastąpić żądaną nazwą użytkownika.

Aby zasymulować początkowe logowanie dla konkretnego użytkownika, w tym uruchomienie skryptów uruchamiania, użyj -I.

sudo -u someuser -i nano

Spowoduje to uruchomienie nanoaplikacji jako użytkownika, someuserale dopiero po uruchomieniu skryptów uruchamiania dla tego użytkownika.

Jeśli zdecydujemy się nie określać polecenia lub aplikacji do uruchomienia, otrzymamy interaktywną powłokę działającą jako ten użytkownik.

sudo -u someuser -i

Stara szkoła: sudo su someuser

Inne podejście wykorzystuje supolecenie w połączeniu z sudo. suKomenda oznacza „przełączenie”.

sudo su someuser

Lub, aby włączyć uruchamianie skryptów uruchamiania użytkownika, dodaj łącznik.

sudo su - someuser

root użytkownik

rootŁatwy w Unix związanych z systemami operacyjnymi mieć władzę absolutną na nic.

Firma Apple postanowiła wyłączyć rootkonto w systemie macOS, aby uniknąć luk w zabezpieczeniach i zabezpieczyć Cię przed postrzeleniem w nogę. Apple stworzył ideę kont użytkowników Administrator, które mają wiele uprawnień, więcej mocy niż standardowe konto użytkownika, ale nie rootma takiej mocy absolutnej jak ma. W celu omówienia zapoznaj się z uwagą na temat wsparcia Apple .

W razie potrzeby możesz włączyć rootużytkownika w systemie macOS, a następnie przełączyć się na tego użytkownika. Jest to zdecydowanie odradzane. Zejdę tą ścieżką tylko w rozpaczliwej ostateczności.


Aby omówić to w kontekście postgresużytkownika korzystającego z systemu bazy danych Postgres w systemie macOS, zobacz to pytanie na stronie siostrzanej DBA Stack Exchange .

Basil Bourque
źródło