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