我需要一个 bash 脚本来修改 /etc/group,以便将 NIS 用户附加到 Solaris 10u8 系统上的特定本地组并删除这些用户。最好有一个或两个以 uid 和 groupname 为变量的函数。
在文件 /etc/group 中将用户 myuser 添加到 groupbbb 之前输入文件
...
groupaaa::98000:
groupbbb::98001:hisuser
groupccc::98003:
...
输出文件
...
groupaaa::98000:
groupbbb::98001:hisuser,myuser
groupccc::98003:
...该函数应该检查用户是否已经属于本地组并退出
我应该使用 sed 还是 nawk 还是其他什么。有没有人有好的单行代码 :-)
在 Linux 中有 gpasswd,但我在 Solaris 中没有找到相应的命令。用户不是系统上的本地用户,而是 NIS 用户,所以我认为 usermod 不起作用!
感谢任何指点!
/斯梅迪斯
答案1
调用此函数:
gradd () { local group=$1 user=$2; sed "/^${group}:/{/\<${user}\>/! s/$/,${user}/}' /etc/group; }
像这样:
gradd groupbbb myuser > /tmp/newgroups && mv /tmp/newgroups /etc/group
文件重定向和重命名可以移到函数内部:
gradd () { local group=$1 user=$2; sed "/^${group}:/{/\<${user}\>/! s/$/,${user}/}' /etc/group > /tmp/newgroups && mv /tmp/newgroups /etc/group; }
那么调用将会是:
gradd groupbbb myuser