gpt4 book ai didi

linux - 在 Linux 中使用另一个组写入文件

转载 作者:IT王子 更新时间:2023-10-29 01:04:33 25 4
gpt4 key购买 nike

我有一个用户 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

参见 sgusermod .

须藤

还有一种方法是使用 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

这个概念也适用于 sgsg 不接受命令的原始参数。它只接受一个字符串参数并将其传递给 /bin/sh。当您将多个参数(尤其是那些带有空格的参数)传递给脚本时,这不是一个好方法。引用是一个很大的问题。

关于linux - 在 Linux 中使用另一个组写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25300132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com