行使我们的特权
现在我们已经了解了这个权限的工作原理,是时候展示它了。 我们将演示一个常见问题的解决方案 - 设置共享目录。 假设我们有两个名为“bill”和“karen”的用户。 他们都有音乐 CD 收藏,并希望建立一个共享目录,将他们的音乐文件存储为 Ogg Vorbis 或 MP3。 用户 法案 可以通过以下方式访问超级用户权限 须藤.
需要做的第一件事是创建一个同时拥有两者的组 法案 和 卡伦 作为会员。 使用图形用户管理工具, 法案 创建一个名为的组 音乐 并添加用户 法案 和 卡伦 对此:
图 3:使用 GNOME 创建新组
接下来, 法案 为音乐文件创建目录:
[比尔@linuxbox ~]$ 须藤 mkdir /usr/local/share/Music
密码:
[比尔@linuxbox ~]$ 须藤 mkdir /usr/local/share/Music
密码:
建立 法案 正在操作其主目录外的文件,则需要超级用户权限。 创建目录后,它具有以下所有权和权限:
[比尔@linuxbox ~]$ ls -ld /usr/local/share/音乐
drwxr-xr-x 2 根 4096 2016-03-21 18:05 /usr/local/share/Music
[比尔@linuxbox ~]$ ls -ld /usr/local/share/音乐
drwxr-xr-x 2 根 4096 2016-03-21 18:05 /usr/local/share/Music
如我们所见,该目录归 根 并拥有 755 个权限。 要使此目录可共享, 法案 需要更改组所有权和组权限以允许写入:
[比尔@linuxbox ~]$ 须藤 chown : 音乐 /usr/local/share/Music [比尔@linuxbox ~]$ 须藤 chmod 775 /usr/local/share/Music [比尔@linuxbox ~]$ ls -ld /usr/local/share/音乐
drwxrwxr-x 2 根音乐 4096 2016-03-21 18:05 /usr/local/share/Music
[比尔@linuxbox ~]$ 须藤 chown : 音乐 /usr/local/share/Music [比尔@linuxbox ~]$ 须藤 chmod 775 /usr/local/share/Music [比尔@linuxbox ~]$ ls -ld /usr/local/share/音乐
drwxrwxr-x 2 根音乐 4096 2016-03-21 18:05 /usr/local/share/Music
那么,这意味着什么? 这意味着我们现在有一个目录,
/usr/local/share/Music 由 root 拥有并允许对组音乐进行读写访问。 音乐组有成员 bill 和 karen,因此 bill 和 karen 可以在目录 /usr/local/share/Music 中创建文件。 其他用户可以列出目录的内容,但不能在那里创建文件。
但是我们仍然有问题。 使用当前权限,在 Music 目录中创建的文件和目录将具有用户的正常权限 法案 和 卡伦:
[比尔@linuxbox ~]$ > /usr/local/share/Music/test_file
[比尔@linuxbox ~]$ ls -l /usr/local/share/音乐
-rw-r--r-- 1 bill bill 0 2016-03-24 20:03 test_file
[比尔@linuxbox ~]$ > /usr/local/share/Music/test_file
[比尔@linuxbox ~]$ ls -l /usr/local/share/音乐
-rw-r--r-- 1 bill bill 0 2016-03-24 20:03 test_file
其实有两个问题。 一、默认 遮罩 该系统上的 0022 可防止组成员写入属于该组其他成员的文件。 如果共享目录只包含文件,这不会有问题,但由于该目录将存储音乐,并且音乐通常以艺术家和专辑的层次结构组织,组成员将需要创建文件的能力和其他成员创建的目录中的目录。 我们需要改变 遮罩 用于 法案 和 卡伦 改为 0002。
其次,一个成员创建的每个文件和目录都会被设置为用户的主组而不是组 音乐. 这可以通过在目录上设置 setgid 位来解决:
[比尔@linuxbox ~]$ 须藤 chmod g+s /usr/local/share/Music
[比尔@linuxbox ~]$ 须藤 chmod g+s /usr/local/share/Music
行使我们的特权
[比尔@linuxbox ~]$ ls -ld /usr/local/share/音乐
drwxrwsr-x 2 根音乐 4096 2016-03-24 20:03 /usr/local/share/Music
[比尔@linuxbox ~]$ ls -ld /usr/local/share/音乐
drwxrwsr-x 2 根音乐 4096 2016-03-24 20:03 /usr/local/share/Music
现在我们测试看看新权限是否解决了问题。 法案 设置他的 遮罩 到 0002,删除之前的测试文件,并创建一个新的测试文件和目录:
[比尔@linuxbox ~]$ 第 0002 章
[比尔@linuxbox ~]$ rm /usr/local/share/音乐/test_file [比尔@linuxbox ~]$ > /usr/local/share/Music/test_file [比尔@linuxbox ~]$ mkdir /usr/local/share/Music/test_dir [比尔@linuxbox ~]$ ls -l /usr/local/share/音乐
drwxrwsr-x 2 bill 音乐 4096 2016-03-24 20:24 test_dir
-rw-rw-r-- 1 bill 音乐 0 2016-03-24 20:22 test_file [bill@linuxbox ~]$
[比尔@linuxbox ~]$ 第 0002 章
[比尔@linuxbox ~]$ rm /usr/local/share/音乐/test_file [比尔@linuxbox ~]$ > /usr/local/share/Music/test_file [比尔@linuxbox ~]$ mkdir /usr/local/share/Music/test_dir [比尔@linuxbox ~]$ ls -l /usr/local/share/音乐
drwxrwsr-x 2 bill 音乐 4096 2016-03-24 20:24 test_dir
-rw-rw-r-- 1 bill 音乐 0 2016-03-24 20:22 test_file [bill@linuxbox ~]$
现在创建的文件和目录都具有正确的权限以允许组的所有成员 音乐 在里面创建文件和目录 音乐 目录。
剩下的一个问题是 遮罩. 必要的设置仅持续到会话结束并且必须重置。 在第 11 章中,我们将研究对 遮罩 永恒的。