Piszę program, aby wyłączyć użytkowników z systemu, chcę go zastąpić /bin/bash
do /bin/false.
Przykład
xxx:x:1:22:xx:/export/home/xx:**/bin/bash**
zamień na
xxx:x:1:22:xx:/export/home/xx:**/bin/false**
Chcę zrobić ze skryptem bash.
Wiem, jak to zrobić, używając sed
. Ale nie jestem dobry w wyrażeniach regularnych.
Czy ktoś może pomóc?
/bin/bash
niedostępny dla wszystkich.Odpowiedzi:
Cóż, w ogóle tego nie robisz
sed
lub wyrażenia regularne. Co robisz, to korzystać z programu chsh zmienić powłokę użytkownika.alternatywnie:
Jeśli chciałbyś zastąpić go rzeczywistą powłoką, musiałbyś również upewnić się, że jest wymieniony w
/etc/shells
.źródło
SunOS 5.8 SUNW,UltraAX-i2
tak jest zausermod
. A nawet obsługuje-s
. Stoję na mojej odpowiedzi.Pamiętaj, że
chsh
nie zawsze jest dostępny! w alpejski Linux na przykład lub systemy wbudowane używające busybox ..Prosta inline
sed
dowództwo :sed -i '/www-data/s/false/sh/g' /etc/passwd
(Ten przykład zmienia powłokę z / bin / false do / bin / sh dla użytkownika dane www )
źródło