4

Я пишу программу для отключения пользователей из системы, я хочу заменить /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 . Но я не силен в регулярных выражениях.

Может ли кто-нибудь помочь?

2 ответа2

8

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

chsh -s /bin/false username

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

usermod -s /bin/false username

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

1

Пожалуйста, помните, что chsh не всегда доступен! в альпийской Linux, например , или погруженных систем с использованием BusyBox ..

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .