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.
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.
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
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ła su
jako root, a root może su
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. Gdy sudo -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. Niestety man 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:
$ PATH reset zgodnie z opcjami /etc/login.defs ENV_PATH lub ENV_SUPATH (patrz poniżej);
$ IFS zresetuj do „<space> <tab> <newline>”, jeśli zostało ustawione.
Pamiętaj, że domyślne zachowanie środowiska jest następujące:
Zmienne środowiskowe $ HOME, $ SHELL, $ USER, $ LOGNAME, $ PATH i $ IFS są resetowane.
Jeśli nie użyto opcji --login, środowisko jest kopiowane, z wyjątkiem powyższych zmiennych.
Jeśli użyto opcji --login, zmienne środowiskowe $ TERM, $ COLORTERM, $ DISPLAY i $ XAUTHORITY są kopiowane, jeśli zostały ustawione.
Inne środowiska mogą być ustawione przez moduły PAM.
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.
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, aby PWD
pozostało to samo?)
sudo su -
i sudo -i
?
$PATH
zmienia się, gdy używam su
bez sudo
(używając hasła roota). Według info 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
. Moja man
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 wersjami su
.
/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.
sudo -i
są podobne do tego sudo su -
, co tak naprawdę nie pobiera środowiska od użytkownika wydającego polecenie.
sudo su
wersetach sudo -i
.