2

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が役に立たない一般的なケースでどのように進めるのですか?

4

2 に答える 2

1

SUDO_USER環境変数はsudo、 を呼び出したユーザーの名前に設定されますsudo。に使用できますchown

悪い習慣として、何もチェックせず$1、スペースを含むファイル名の引数置換が壊れています。それだけが問題ではない場合、残りのことを気にする必要がありますか?

于 2013-02-03T21:45:13.407 に答える
1

この行を追加する必要があります

chmod ug+rw a.txt

これにより、ユーザーは「a.txt」に対する読み取り/書き込み権限を持ちます。

于 2013-02-03T22:57:44.380 に答える