把資料設成「唯讀」應是不錯的想法,可是修改、更新時又要將檔案屬性改回,似乎也不太方便。所幸,Linux 的「多工、多用戶」設計,讓這種需求有另一種解決辦法。那就是
「分身用戶」、「檔案鏈結」及「檔案存取模式」三者合併應用想要用這個方法保護自已的檔案,需要:
- 兩個具有同一「私有群組」的帳號,
- 會使用 ln (鏈結)命令,用「終端機」管理資料。
這些步驟都需要系統管理者(root)幫忙操作,如果這是個人使用的電腦,那就沒問題了。先切換到 root 權限,再開始操作,
一、設定用戶帳號、群組
這個步驟要有系統管理者幫忙,如果這是個人使用的電腦,那就沒問題了。先切換到 root 權限,再做以下的修改,- 新增一個用戶(假設原用戶為 SiB),例:SiB2
[root@Celeron-D ~]# adduser -N SiB
- 新增加一群組,例:SiB_group
[root@Celeron-D ~]# groupadd SiB_group
- 將兩個用戶加入 SiB_group 這個群組,並將 SiB2 的「主群組」設為 SiB_group
[root@Celeron-D ~]# usermod -G SiB_group -a SiB
[root@Celeron-D ~]# usermod -g SiB_group SiB2 - 將用戶 SiB2 移出除 SiB_group 外的其它群組,
[root@Celeron-D ~]# usermod -G SiB_group SiB2
設定後,SiB2 新建立的檔案、目錄的「群組」屬性都會是 SiB_group,而 SiB 也是 SiB_group 群組的一員,也就有權限可以存取 SiB2 的所有檔案、目錄了。
二、修改目錄屬性
假設平常使用的帳號是 SiB,那麼「家目錄」應為『/home/SiB』,其中的「模式」、「擁有者」及「群組」三個「屬性值」應為『drwx------』、『SiB』及『users』,也就是每個用戶只能讀、寫自己的「家目錄」,其他用戶連看有哪些檔案都不行。[SiB@Celeron-D ~]$ ll /home/更改目錄 SiB2 及其子目錄的「群組」屬性為:SiB_group
總計 44
[SiB@Celeron-D ~]$
drwx------. 55 SiB users 4096 9月 12 21:51 SiB drwx------. 33 SiB2 users 4096 10月 12 16:25 SiB2 drwx------. 2 root root 16384 2月 17 2012 lost+found
[root@Celeron-D ~]# cd /home參數『-R』會將之前已建立的檔案、目錄的「群組」屬性,全部(含所有子目錄)更改。
[root@Celeron-D home]# chgrp -R SiB_group
最後,再更改目錄的「存取模式」,
[root@Celeron-D home]# chmod -R g+rx SiB2即,目錄『/home/SiB2』以下的所有檔案、目錄,都設定為『可被同屬一個群組』的 SiB 所讀取,但不能寫入。
三、設定目錄鏈結
現在可以切換回用戶身份了,在用戶 SiB 的「家目錄」下建立「目錄鏈結」指向 SiB2 的目錄,假設該分享給 SiB 的目錄名為『/home/SiB2/ReadOnly』,則在 SiB 所下的命令為,[SiB@Celeron-D ~]$ ln -s /home/SiB2/ReadOnly ReadOnlyInSiB2這個命令,會在 SiB 的「家目錄」中,建立一個名為『ReadOnlyInSiB2』的鏈結。用戶 SiB 可以經由這個目錄鏈結,讀取 SiB2 的資料,但是不會更改內容。
已測試版本:
- Fedora: 14, 17
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)