我有一台 SUSE 服务器,大约有 300 个用户正在连接它。
其中大约 100 个必须停用。我认为最好使用 chsh 或 usermod 将其 shell 更改为 /bin/false。
我是否必须每行输入一个命令,或者我可以填写可以从脚本中读取的用户列表吗?
我应该提到,所有 100 个用户的用户名结尾都相同。我可以在这里使用通配符吗?例如
usermod -s /bin/fish *ftpuser
chsh -s /sbin/nologin *ftpuser
答案1
另一种方法就是直接锁定帐户:
getent passwd|cut -d: -f1|while read user; do
case "$user" in
*ftpuser) passwd -l $user;;
esac
done
可以通过再次执行相同的操作来重新开设帐户,但要passwd -u
改为。
答案2
你可以运行如下 shell 脚本:
getent passwd|cut -d: -f1|while read user; do
case "$user" in
*ftpuser) echo usermod -s /bin/false "$user";;
esac
done
getent passwd
获取用户列表(与cat /etc/passwd
您不使用 LDAP 或类似工具相同)。
cut -d: -f1
获取第一个列,例如用户。
while 循环读取每一行输入,并检查用户是否与模式匹配。
echo
我在命令前加了一个,usermod
这样您就可以看到将要执行的内容。如果您确定命令没有问题,请在没有回显的情况下运行脚本。