Dlaczego w tym przykładzie jedna jest preferowana?
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
Podaj linki do dokumentacji Ubuntu.
command-line
sudo
chili555
źródło
źródło
Odpowiedzi:
sudo su
Komenda oznacza „użytkownik switch” i pozwala stać się inny użytkownik. Umożliwia uprawnionemu użytkownikowi wykonanie polecenia jako administrator lub inny użytkownik, jak określono w pliku sudoers.Opcja –i (symuluj początkowe logowanie) uruchamia powłokę określoną przez wpis bazy danych haseł użytkownika docelowego jako powłokę logowania. Oznacza to, że pliki zasobów specyficzne dla logowania, takie jak .profile lub .login, zostaną odczytane przez powłokę. Jeśli podano polecenie, jest ono przekazywane do powłoki w celu wykonania za pomocą opcji ‑c powłoki. Jeśli nie podano polecenia, wykonywana jest powłoka interaktywna.
Źródło: ManPage
źródło
sudo su
, zostaniesz poproszony o podanie hasła, a nie hasła roota. Użytkownik root nie musi nawet mieć hasła. Niezależnie od tego, jeśli administrator używa hasła roota, nie oznacza to, że wszyscy zwykli użytkownicy go znają.sudo
działasu
jako root, a root możesu
dla każdego użytkownika bez znajomości swojego hasła. Podstawowe nieporozumienia na temat działania systemu zasługują na głosowanie IMO.sudo -i
nie poprosi również o podanie hasła roota, więc nie dotyczy to pytania.sudo su
zmienia tylko bieżącego użytkownika na root. Ustawienia środowiska (takie jak ŚCIEŻKA) pozostają takie same.sudo -i
tworzy świeże środowisko, jakby root właśnie się zalogował.Różnica jest bardziej zauważalna, jeśli korzystasz z innych użytkowników. Po
sudo su bob
tym będziesz bobem, ale w tym samym miejscu. Gdysudo -i -u bob
będziesz bobem, w katalogu domowym boba, z domyślną powłoką boba.profile
oraz z uruchomionym bobem i innymi skryptami logowania.Zobacz
man sudo
więcej szczegółów na temat tego, co-i
robi. Niestetyman su
jest lekki w szczegółach.Znaleziono wersję
man su
(z login-1: 4.1.4.2 + svn3283-3ubuntu5.1), która ma następujące zdanie:Zatem to, czy iw jakim stopniu
sudo su
zmieni się środowisko, zależy od dystrybucji i konfiguracji.sudo -i
Jest więc teoretycznie bardziej przenośny.źródło
su
czy zmiana ustawień środowiska i mogą być wykorzystane do symulacji logowanie za pomocą-
lub-l
. Nawet bez-l
,$PATH
jest zmieniona. Przetestuj te twierdzenia przed ich zgłoszeniem! (Czy chodziło Ci o to, abyPWD
pozostało to samo?)sudo su -
isudo -i
?$PATH
zmienia się, gdy używamsu
bezsudo
(używając hasła roota). Wedługinfo su
(co może być lepszym rozwiązaniem, do którego link można znaleźć w odpowiedzi),su
rzeczywiście czyta hasło dla użytkownika, którym się stajesz. Być może$PATH
zmiana, którą obserwuję, zależy od systemu (korzystam z Debiana 7).man su
(który jest dłuższy niż ten, z którym masz link) mówi, że jest częściąshadow-utils 4.1.5.1
. Mojaman
strona mówi również, że$PATH
jest ustawiona, nawet jeśli--preserve-environment
jest używana. Sądzę więc, że tak naprawdę jest to tylko różnica między różnymi wersjamisu
./etc/pam.d/sudo
i/etc/pam.d/su
może być skonfigurowany do robienia zupełnie innych lub dokładnie takich samych rzeczy.Głównym problemem jest jedno z (nie tak) zdrowych ustawień środowiska.
Użycie
sudo su
nowej powłoki pobiera środowisko od użytkownika, który wydaje polecenie - co może być problematyczne.Otrzymasz
sudo -i
czystą powłokę roota.Zobacz specjalne uwagi na temat sudo i muszli
Pozostaje zauważyć, że rzadko jest konieczne utworzenie powłoki roota.
źródło
sudo -i
są podobne do tegosudo su -
, co tak naprawdę nie pobiera środowiska od użytkownika wydającego polecenie.sudo su
wersetachsudo -i
.