FreeBSD / FreeNAS:如何更改多个用户组?

我需要改变一群用户的员身份。

我如何

  1. 列出所有用户?
  2. 将多个用户更改为nogroup主要组?
  3. 将辅助/辅助组添加到多个用户?

基本上我需要将当前在clients组中的所有用户改为nogroup ,并将clients作为辅助组添加到他们。

这可以通过shell来完成,而不需要单独编辑每个用户?

  1. 列出所有用户?
 pw usershow -a 
  1. 将多个用户更改为nogroup主要组?

有一百种不同的方式来做到这一点…我会:

 foreach u ("list" "of" "users") pw usermod -n $u -g NewPrimaryGroup end 

您甚至可以从子命令中获取用户列表,如pw groupshow OldGroupName | sed -e "s/.*://" -e "s/,/\ /" pw groupshow OldGroupName | sed -e "s/.*://" -e "s/,/\ /"

  1. 将辅助/辅助组添加到多个用户?

再次,几个方法来做到这一点…

如果您知道用户应该在的辅助组的完整列表:

 pw usermod -n UserName -G "Secondary Group List" 

如果您不知道完整列表,或者只想将用户添加到组中:

 pw groupmod -n SecondaryGroup -m NewUserName 

和去除是类似的

 pw groupmod -n SecondaryGroup -d OldUserName 

基本上我需要将当前在客户端组中的所有用户改为nogroup,并将客户端作为辅助组添加到他们。

 foreach u (`pw groupshow clients | sed -e "s/.*://" -e "s/,/\ /"`) pw usermod $u -g nogroup pw groupmod clients -m $u end 

(上面的代码片段没有经过testing,但是在3秒的双重检查后看起来不错,也是为csh编写的,因为这是FreeBSD用户的默认shell)