我需要为一群用户更改组成员身份。
我如何
- 列出所有用户?
- 将多个用户更改为
nogroup
主要组? - 为多个用户添加次要/辅助组?
基本上,我需要将当前组中的所有用户更改clients
为nogroup
并将其添加clients
为辅助组。
可以通过 shell 完成此操作而无需单独编辑每个用户吗?
答案1
- 列出所有用户?
pw usershow -a
- 将多个用户更改为 nogroup 主要组?
有上百种不同的方法可以做到这一点......我会:
foreach u ("list" "of" "users")
pw usermod -n $u -g NewPrimaryGroup
end
您甚至可以通过子命令获取用户列表,例如pw groupshow OldGroupName | sed -e "s/.*://" -e "s/,/\ /"
- 为多个用户添加次要/辅助组?
再次强调,有几种方法可以做到这一点...
如果您知道用户应该属于的次要组的完整列表:
pw usermod -n UserName -G "Secondary Group List"
如果您不知道完整列表,或者只是想将用户添加到组:
pw groupmod -n SecondaryGroup -m NewUserName
移除也同样如此
pw groupmod -n SecondaryGroup -d OldUserName
基本上,我需要将当前位于客户组中的所有用户更改为无组,并将客户作为辅助组添加给他们。
foreach u (`pw groupshow clients | sed -e "s/.*://" -e "s/,/\ /"`)
pw usermod $u -g nogroup
pw groupmod clients -m $u
end
(上述代码片段未经测试,但经过 3 秒的仔细检查后看起来不错,也是为csh
FreeBSD 为用户提供的默认 shell 而编写的)