在 /etc/passwd 文件中将 /bin/bash 替换为 /bin/false

在 /etc/passwd 文件中将 /bin/bash 替换为 /bin/false

我正在编写一个程序来禁用系统中的用户,我想替换/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-数据

相关内容