我有一个用户 ID ops,它属于多个组,例如 sysgroup、usergroup。当我默认写入其他用户目录时,它是在 sysgroup 下写入的。但是对于某些用户,我需要使用用户组权限来编写。我怎样才能做到这一点?
这是我的示例代码
if ls n18_????_??????????.txt &> /dev/null; then
cp n18_????_??????????.txt /export/home/user
chgrp usergroup /export/home/user/n18_????_??????????.txt
mv n18_????_??????????.txt $archDir
fi
我正在复制然后更改组,所以每次它都会更改所有匹配模式的文件的组。
最佳答案
新加坡
另一种方法是使用sg
:
sg usergroup bash
它会调用另一个 shell,其中的事件组是 usergroup
。如果你退出,它会恢复到原来的状态。
用户模式
您还可以使用usermod
来更改用户的主要组。它使其成为每次登录的默认值。
usermod -g usergroup user
须藤
还有一种方法是使用 sudo
。看这个thread也是。
sudo -g usergroup id -gn ## Verify that it works.
sudo -g usergroup bash
脚本解决方案
您可以使用 sudo
让脚本再次调用自身。
#!/bin/bash
if [[ $1 == __GROUP_CHANGED__ ]]; then
shift
else
exec /usr/bin/sudo -g users "$0" __GROUP_CHANGED__ "$@"
fi
或者
#!/bin/sh
if [ "$1" = __GROUP_CHANGED__ ]; then
shift
else
exec /usr/bin/sudo -g users "$0" __GROUP_CHANGED__ "$@"
fi
这个概念也适用于 sg
但 sg
不接受命令的原始参数。它只接受一个字符串参数并将其传递给 /bin/sh
。当您将多个参数(尤其是那些带有空格的参数)传递给脚本时,这不是一个好方法。引用是一个很大的问题。
关于linux - 在 Linux 中使用另一个组写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25300132/