更改/停用 SUSE Enterprise Server 上一定数量的用户的 shell

更改/停用 SUSE Enterprise Server 上一定数量的用户的 shell

我有一台 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这样您就可以看到将要执行的内容。如果您确定命令没有问题,请在没有回显的情况下运行脚本。

相关内容