在脚本中的很多次我都将输出从终端重定向到文件或其他内容。有时,我会为命令指定一个用户,但是该用户在重定向的另一端不起作用。
sudo -i
# We are now the root user.
sudo -u abc echo 'Something...' > a_file.txt
即使以abc用户身份进行回显,该文件仍将以root用户身份创建。
我了解为什么会发生这种情况,我希望有人知道一种使其按需运行的方法,以便以所有者abc用户身份创建文件a_file.txt。
答案 0 :(得分:1)
您可以在sudo shell中运行多个命令,然后所有这些命令都将在同一用户下运行:
sudo -u abc sh -c 'echo sth > a_file.txt'
或者您可以使用三通管道:
sudo -u abc sthRequiringSudo | sudo -u abc tee a_file.txt >/dev/null
或者您可以将命令传递给sudo shell标准输入:
sudo -u abc -s <<< "echo sth >a_file.txt"
您甚至可以将多行命令发送到sudo shell标准输入:
sudo -u abc -s << EOF
echo sth >a_file.txt
echo sthelse >>a_file.txt
EOF