Co to jest powłoka interaktywna i nieinteraktywna?
Pytania: Utwórz użytkownika, który nie powinien otrzymywać interaktywnej powłoki.
Jak możemy to zrobić?
/etc/passwd
Plik ma jako ostatni element w wierszu użytkownika program do uruchamiania podczas logowania. Dla zwykłych użytkowników jest to zwykle ustawione na /bin/sh
lub inną powłokę (np. Bash, zsh).
Tradycyjnie tożsamości używane do procesów lub plików lub innych zasobów mają ustawioną „powłokę” na „ /bin/false
in”
syslog:x:101:102::/home/syslog:/bin/false
Pseudo-użytkownik syslog jest właścicielem /var/log/syslog
i jest jedynym UID, który ma uprawnienia do zapisu dla tego pliku, ale nie można zalogować się jako syslog użytkownika, ponieważ nie ma uruchomionego interpretera poleceń.
Jeśli chodzi o pytanie, na które próbujesz odpowiedzieć:
Utwórz użytkownika Johna, który nie powinien otrzymywać interaktywnej powłoki.
Pytanie oznacza „Utwórz użytkownika o nazwie, john
który nie będzie mógł się zalogować i uruchamiać poleceń z powłoki”. Interaktywny opisuje sposób działania powłoki: użytkownik coś pisze, a powłoka robi coś odpowiednio (istnieje rodzaj komunikacji między użytkownikiem a powłoką). Słowo „interaktywne” tak naprawdę nie dodaje żadnych informacji do pytania, ponieważ dopóki istnieje polecenie wpisywania przez użytkownika, sesja powłoki jest interaktywna.
Istnieje również tryb nieinteraktywny, w którym użytkownik zapisuje serię poleceń, które chce uruchomić w pliku (zwany skryptem powłoki), a następnie wykonuje plik. Niektóre polecenia zachowują się inaczej w zależności od tego, czy powłoka jest uruchamiana interaktywnie, czy nie. Możesz przeczytać więcej tutaj (ten dokument dotyczy bash
, ale ta sama koncepcja dotyczy innych powłok).
Jak utworzyć takiego użytkownika, jeśli przejrzysz, man useradd
istnieje możliwość ustawienia powłoki logowania -s
lub --shell
. Możesz także utworzyć użytkownika normalnie, w każdym razie, co chcesz (co zakładam, że już wiesz?), A następnie edytować /etc/passwd
jak w odpowiedzi msw .
adduser username -s /sbin/nologin