
在建置腳本中,我想建立一個具有唯一生成名稱的臨時文件,然後向其中寫入一些數據,然後將該文件重命名為其最終名稱(此過程的原因是我希望重命名發生(主要是)原子)。
但如果我使用mktemp
,新文件將具有非常嚴格的權限:
檔案建立為 u+rw,目錄建立為 u+rwx,減去 umask 限制。
...並且當檔案重命名時,這些權限將被保留。但是,我希望生成的文件具有“正常”權限;也就是說,它應該與touch
shell 重定向建立的檔案具有相同的權限。
實現這目標的推薦方法是什麼?是否有(常見的)替代方案mktemp
;或者是否有一種簡單可靠的方法可以將檔案權限變更為正常umask
權限?
答案1
答案2
使用此連結來取得您想要的權限http://permissions-calculator.org/
手動的
建立一個腳本文件,該文件建立一個新文件,然後更改其權限。
#!/bin/bash
Filename=$1
Perms=$2
#Create a temp file
touch $Filename
#Change the file's permissions (Use your own desired permissions)
chmod $Perms $Filename
使腳本可執行後chmod +x myscript.sh
,像這樣執行腳本文件./myscript.sh tempfile 600
使用 Umask(不建議)
umask 600
您可以使用例如臨時更改預設檔案權限。
若要永久變更預設檔案權限,請編輯使用者根目錄中的 .bashrc 檔案。
nano ~/.bashrc
添加umask 600
到文件底部。當然,請確保符合您所需的權限。確保您也編輯了正確的使用者。
如果這是用於建立腳本,我將使用手動方法而不是依賴 umask。特別是如果您的建置腳本將在不同的系統上使用。