
我正在嘗試建立一個 Bash shell 腳本,該腳本允許將檔案從快閃裝置傳輸到使用者指定的存檔中。儘管我想限制該用戶無法在此存檔目錄中建立任何子目錄。
筆記:所以本質上,我希望使用者建立/指定的存檔目錄是一個扁平的一級結構。
我不知道如何實現這一目標,並且非常感謝我能得到的任何幫助。
答案1
沒有任何本地機制可以輕鬆實現它。 Linux的權限系統無法為建立檔案和目錄指定單獨的權限,因為目錄其實就是檔案。但嘗試這樣的方式:
- 使所有存檔目錄由一個(或幾個不同的)使用者擁有,專為此目的而建立。讓我們假設它的名稱為 archiveuser。
讓所有存檔目錄(我猜你有很多)都歸該用戶所有,例如:
$ chown archiveuser:archiveuser /somedir/archivedir1 $ chown archiveuser:archiveuser /somedir/archivedir2 $ chown archiveuser:archiveuser /somedir/archivedir3
限制對存檔目錄的存取僅由所有者存取:
$ chmod 700 /somedir/archivedir1 $ chmod 700 /somedir/archivedir2 $ chmod 700 /somedir/archivedir3
使用
sudo
機制授予cp
對存檔目錄的命令存取權限:添加
/etc/sudoers
:someuser1 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/* someuser2 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/*
當然,為所有應該允許使用此命令的使用者建立適當的群組是很方便的。閱讀
sudo
教學:-)。就這樣。使用者必須使用:
$ sudo -u archiveuser cp /path/to/pendrive/somefile /somedir/archiveuser/
您可以建立一些別名以使其更方便使用(即alias cpt='sudo -u archiveuser cp'
)。另請注意,在這種情況cp -r
下不允許複製目錄。命令sudo
也mkdir
被權限阻止。這樣你的目標就達成了。