Poniższe informacje uniemożliwiają zablokowanym kontom zmianę ich powłok i pozwalają wybiórczo korzystać z chsh
nich BEZ sudo lub su:
Prosta i wciąż bezpieczna konfiguracja:
Dodaj tę samą górę /etc/pam.d/chsh
:
# This allows users of group chsh to change their shells without a password.
#
# Per: http://serverfault.com/questions/202468/changing-the-shell-using-chsh-via-the-command-line-in-a-script
#
auth sufficient pam_wheel.so trust group=chsh
Utwórz grupę chsh:
groupadd chsh
Dla każdego użytkownika, który może zmienić swoją powłokę:
usermod -a -G chsh username
Zastrzyk gotówki:
user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/bin/bash
user@host:~$ chsh -s `which zsh`
user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/usr/bin/zsh
user@host:~$
chsh tak naprawdę zmienia linię dotyczącą użytkownika w / etc / passwd, chociaż użytkownik może zmienić swoją własną „linię” w / etc / passwd. Dlatego jeśli chcesz zmienić powłokę dla innego użytkownika, potrzebujesz jego / jej hasła.
Jeśli naprawdę chcesz to zrobić (biorąc pod uwagę obawy zawarte w poście Lorenza i możliwe obawy dotyczące bezpieczeństwa), oto jak to zrobić:
Wymaga to uprawnień roota.
Załóżmy, że obecnie działasz jako „alicja” i chcesz zmienić powłokę „boba” bez hasła;
Dodaj do pliku:
Dzięki temu „alicja” może działać na wszystkich hostach jako użytkownicy w grupie SH bez hasła grupy poleceń w SHELL.
Prawdopodobnie trochę za daleko, aby to zrobić, ale jest to możliwe.
Przeczytaj „man sudoers” przed zmianą pliku sudores za pomocą „visudo”, zwłaszcza wiadomości związanych z bezpieczeństwem!
źródło
sudo
polega na tym, że bardzo łatwo jest ominąć i zrootować system. Lepiej nigdy nie zmieniać,sudoers
chyba że istnieje konkretna potrzeba, której nie można zaspokoić w żaden inny sposób (plik wykonywalny setuid / setgid, uprawnienia grupy itp.).Musisz podać nazwę użytkownika; robienie tego przez
sudo
(lub przez roota) pozwoli ci ustawić hasło / powłokę użytkownika bez pytania o stare hasło. Sprawdźman chsh
dalsze informacje.Teraz moje pytanie brzmi: dlaczego chcesz to zrobić? Jeśli jest to skrypt konfiguracyjny, czy nie powinieneś po prostu zmienić powłoki użytkownika podczas tworzenia (tj. Podczas uruchamiania
adduser
)? Jeśli klonujesz system zdalnie, nie powinieneś go/etc/passwd
najpierw zmieniać ? Nie widzę powodów, aby robić to za pomocą skryptu, chyba że zautomatyzujesz cały proces instalacji, a wybór powłok do zainstalowania nastąpi po utworzeniu pierwszego użytkownika.źródło
#!/usr/bin/sudo -s
(linia shebang). Jesteś pewien, że zsh jest w / bin, a może nie w / usr / bin? (tylko sprawdzam, nie znam ec2)sudo
zgodę. Zobacz moje, by zobaczyć inne podejście, które nie wymagasudo
przeciętnego użytkownika.Wierzę, że możesz zmienić powłokę użytkownika w
/etc/password
pliku, prawdopodobnie za pomocąpasswd
polecenia. Jeszcze go nie przeczytałem, ale może to być przydatne: różnice w powłokach UNIX i sposób zmiany powłoki .źródło
chsh
lubusermod
. Nigdy nie edytujpasswd
pliku bezpośrednio, zawsze używaj do tegovipw
polecenia.Spróbuj
sudo chsh -s /bin/zsh
, a następnie:echo $SHELL
- w przypadku powodzenia zmieniło się :)źródło