Замена /bin/bash на /bin/false в файле /etc/passwd

Замена /bin/bash на /bin/false в файле /etc/passwd

Я пишу программу для отключения пользователей от системы, я хочу заменить /bin/bashее на/bin/false.

Пример

xxx:x:1:22:xx:/export/home/xx:**/bin/bash**

заменить на

xxx:x:1:22:xx:/export/home/xx:**/bin/false**

Я хочу обойтись без скрипта bash.

Я знаю, что один из способов сделать это — использовать sed. Но я не силен в регулярных выражениях.

Кто-нибудь может помочь?

решение1

Ну, вы вообще не делаете этого с помощью sedрегулярных выражений. То, что вы делаете, это используете программучшдля изменения оболочки пользователя.

chsh -s /bin/false username

альтернативно:

usermod -s /bin/false username

Если вы хотите заменить его реальной оболочкой, вам также придется убедиться, что она указана в /etc/shells.

решение2

Обратите внимание, что chshне всегда доступно!альпийскийLinux например или встраиваемые системы с использованиемbusybox..

Простая встроенная sedкоманда:

sed -i '/www-data/s/false/sh/g' /etc/passwd

(Этот пример изменяет оболочку с/bin/ложьк/bin/шдля пользователяwww-данные)

Связанный контент