【发布时间】:2013-02-03 21:37:29
【问题描述】:
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 没有帮助?
【问题讨论】:
-
可以从环境变量$USER中获取当前用户。因此,您可以在脚本中使用 chown。
-
@jitendra:我可以在调用脚本之前设置
USER=anybody,文件将chown'd 给错误的用户。 -
你不应该将普通文件复制到
/usr;它应该只包含正常事件过程中的目录。为什么你想要一个/usr/b.txt文件呢?在我看来,好像您将两个单独的任务错误地捆绑为一个。