2013-02-03 74 views
2

myscript.sh是sudo的shell腳本的mkdir

#/!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

你可以從環境變量$ USER當前用戶。因此,你可以在腳本中使用chown。 – jitendra

+0

@jitendra:我可以設置'USER = anybody'調用腳本之前,該文件將被'chown''d到錯誤的用戶。 –

+0

你不應該簡單的複製文件到'/ usr';它應該只包含正常事件過程中的目錄。爲什麼你想要一個'/ usr/b.txt'文件?它看起來有點像你將兩個單獨的任務捆綁成一個,不正確。 –

回答

1

SUDO_USER環境變量由sudo設置爲調用sudo的用戶的名稱。您可以將其用於chown

由於不良風氣,你不籤任何東西,你$1參數替換被打破用空格的文件名。如果那不重要,你應該關心其餘的嗎?

+0

謝謝,是的,這將工作。 – user2037986

1

你應該加入這一行

chmod ug+rw a.txt 

有了這一個,用戶將已閱讀「A.TXT」 /寫權限。

+2

給予世界寫權限的文件通常是一個壞主意。 –