我正在编写一个程序来禁用系统中的用户,我想替换/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
正则表达式来做这件事。你只需要使用程序奇什更改用户的 shell。
chsh -s /bin/false username
或者:
usermod -s /bin/false username
如果您想用实际的 shell 替换它,您还必须确保它在中列出/etc/shells
。
答案2
请注意,chsh
并非总是可用!高山例如 Linux 或使用嵌入式系统忙碌箱..
简单的内联sed
命令:
sed -i '/www-data/s/false/sh/g' /etc/passwd
(此示例将 shell 从/bin/false到/bin/sh对于用户www-数据)