Administration
通過 setgid 共享文件/目錄
為了允許對特定組的寫訪問,預設情況下可以使該組中的每個人都可以寫入共享文件/文件夾,並且可以通過在該目錄上設置 setgid 位自動將擁有組固定到擁有父目錄的組:
chmod g+s our_shared_directory
否則使用文件創建者的預設組(通常與使用者名相同)。
以上引用來自Arch Linux Wiki。我不清楚如何製作共享文件和文件夾。假設使用者A和B都屬於一個公共組G。現在如何創建
our_shared_directory
預設情況下G中的每個人都有寫權限?其次,為什麼我需要
setgid
onour_shared_directory
?為什麼我需要將擁有組固定到父目錄的組our_shared_directory
?
如果您想在兩者之間共享文件夾的控制權
- 使用者
a
- 使用者
b
創建使用者
% sudo adduser a Adding user `a' ... Adding new group `a' (1002) ... Adding new user `a' (1001) with group `a' ... Creating home directory `/home/a' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: ....
和
% sudo adduser b Adding user `b' ...
建立一個目錄
% mkdir our_shared_directory
創建一個新組並將使用者添加到其中
% sudo addgroup cool_kids Adding group `cool_kids' (GID 1001) ... Done. % sudo adduser a cool_kids Adding user `a' to group `cool_kids' ... Adding user a to group cool_kids Done. % sudo adduser b cool_kids ....
使目錄屬於
cool_kids
組和setgid
位sudo chmod g+s our_shared_directory sudo chown -v ubuntu:cool_kids our_shared_directory
檢查我們的工作
ls -al drwxrwsr-x 2 ubuntu cool_kids 40 Feb 29 20:37 our_shared_directory/ ^ setgid bit is set and group is now "sticky"
看看當使用者
a
在普通目錄中創建文件時會發生什麼% touch file_made_by_user_a % ls -al -rw-rw-r-- 1 a a 0 Feb 29 20:57 file_made_by_a
現在使用者
a
在our_shared_directory
% cd our_shared_directory/ % ls -al -rw-rw-r-- 1 a cool_kids 0 Feb 29 20:59 another_by_a ^^^^^^ note the group
重要的
- cool_kids組自動應用於新文件
現在切換到使用者
b
% su b Password: ...
b 現在可以編輯由 a - 創建的文件,因為該
another_by_a
文件的預設模式為-rw-rw-r--
,b
因此無法正常編輯它。但隨著
b% vim another_by_a ^ note this means we are user "b" now [make some edit and save]
b
能夠修改文件**因為 b 屬於該組cool_kids
,並且因為保證按位cool_kids
應用於新文件setgid
ls -al -rw-rw-r-- 1 a cool_kids 7 Feb 29 21:03 another_by_a ^ the file is 7bytes - slightly bigger because of changes made by b