使用 root 权限读取文件并使用其他用户或组保存

使用 root 权限读取文件并使用其他用户或组保存

我要读取一个需要 root 权限的文件,并且必须将其保存在另一个用户或组的某个位置,例如读取需要 root 的 dmesg 并将其保存在用户/组权限为 770 的其他位置:test/test。这里的问题是我无法将其保存为 root,这是 SElinux 策略,它给了我错误。所以我需要在保存文件时更改进程权限。

有什么建议吗?

答案1

您的脚本正在以 root 身份运行。因此,没有什么可以阻止您sudo以任何用户身份运行。如果您无法以 root 身份写入文件,但可以以其他用户身份写入文件,那么这是一个选择:

target=/path/to/target/file
dmesg | sudo -u test tee "$target" >/dev/null
chmod 770 "$target"

如果您更喜欢使用su而不是sudo可以使用此变体

target=/path/to/target/file
dmesg | su test -c "tee '$target' >/dev/null'
chmod 770 "$target"

答案2

使用zsh,您可以执行以下操作(如root):

zmodload zsh/system
umask 0
() {local EGID=123 EUID=456; sysopen -wu3 -m770 -o excl file}

以0770权限创建并打开fileas euid 456和egid 123。

$ ls -nd file
-rwxrwx--- 1 456 123 0 Sep  5 17:05 file

然后运行:dmesg >&3将其填满。

(注意顺序很重要,一旦你的euid不再为0,你就不能改变egid)。

相关内容