myscript.sh是
#/!bin/sh
mkdir -p $1
cp -p a.txt ./$1
cp b.txt /usr
如果我用sudo ./myscript.sh调用它,目录$ 1由root拥有,因此用户无法修改a.txt(这是一个问题)。我可以将脚本更改为
#/!bin/sh
mkdir -p $1
cp -p a.txt ./$1
sudo cp b.txt /usr
并使用./myscript.sh调用,但我得到的印象是这是不好的做法。如何进行一般情况下,我不知道用户,所以chown没有帮助?
答案 0 :(得分:1)
SUDO_USER
环境变量由sudo
设置为调用sudo
的用户的名称。您可以将其用于chown
。
在不良做法中,您不会检查任何内容,并且对于包含空格的文件名,您的$1
参数替换会被破坏。如果那么重要,你应该关心其余的吗?
答案 1 :(得分:1)
你应该添加这一行
chmod ug+rw a.txt
使用这个,用户将拥有'a.txt'的读/写权限。