📄 0240network-secure-1.htm
字号:
<span class=text_import2>建议你先关闭 SELinux ,等到两三年后对于 Linux 有很深的概念后,
再来尝试配置 SELinux 这个有趣的咚咚!</span><br /><br />
也就是说,如果你没有关闭 SELinux 的话,那么你就得要针对 SELinux 进行档案权限的额外配置,
否则你的网路服务就不可能会正常的启动!那么如何关闭 SELinux 呢?你可以这样做∶<br />
<table class="term"><tr><td class="term"><pre>
<span class=term_hd>1. 先关闭 /etc/selinux/config 的内容 </span>
[root@linux ~]# <span class=term_command>vi /etc/selinux/config</span>
<span class=term_say># 将底下的设定值改成这样∶</span>
<span class=term_write>SELINUX=disabled</span>
<span class=term_hd>2. 修改开机时 grub 的设定档</span>
[root@linux ~]# <span class=term_command>vi /boot/grub/menu.lst</span>
<span class=term_say>.....省略.....</span>
kernel /boot/vmlinuz-2.6.9 ro root=/dev/hda1 rhgb <span class=term_write>selinux=0</span>
<span class=term_say>.....省略.....</span>
<span class=term_hd>3. 重新开机</span>
[root@linux ~]# <span class=term_command>sync; reboot</span>
</pre></td></tr></table>
因为 SELinux 必须要在开机的时候载入,同样的,要卸载也必须要重新开机才行!
因此,如果你使用的是您 distributions 的预设安装,那么几乎 SELinux 都是预设启动的!
你可以依据上述的几个步骤将 SELinux 取消后,重新开机即可。如果对于 SELinux 有兴趣的话,
底下的连结可以参考看看∶<br />
<ul>
<li><a href="http://fedora.redhat.com/docs/selinux-faq-fc5/"
target="_blank">http://fedora.redhat.com/docs/selinux-faq-fc5/</a></li>
<li><a href="http://selinux.sourceforge.net/"
target="_blank">http://selinux.sourceforge.net/</a></li>
<li><a href="http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/selinux-guide/index.html"
target="_blank">http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/selinux-guide/index.html</a>
</ul>
</div>
</div>
</div>
<hr /><a NAME="acl"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">主机的细部权限规划∶ACL 的使用</span><br />
<div class=block1>
在前一小节当中我们提到 Linux 系统的权限是很重要的,偏偏传统的权限仅有三种身份、三种权限而已,
配合 <a href="../linux_basic/0210filepermission.php#chmod">chmod</a>,
<a href="../linux_basic/0220filemanager.php#umask">umask</a>,
<a href="../linux_basic/0210filepermission.php#chown">chown</a>,
<a href="../linux_basic/0210filepermission.php#chgrp">chgrp</a>
等指令来进行使用者与群组相关权限的设定。如果要进行比较复杂的权限设定时,
例如某个目录要开放给某个特定的使用者来使用时,传统的 owner,group,others 的权限方法可能就无法满足了。
不过还好,我们有 ACL 这个玩意儿可以使用!这玩意挺有趣的,底下我们就来谈一谈∶<br /><br />
<hr /><a NAME="acl_what"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">什么是 ACL?</span><br />
<div class=block2>
<span class=text_import2>ACL 是 Access Control List 的缩写,主要的目的是在提供传统的
owner,group,others 的 read,write,execute 权限之外的细部权限设定。ACL 可以针对单一使用者,
单一档案或目录来进行 r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助。</span><br /><br />
由于 ACL 是传统的 Unix-like 作业系统权限的额外支援项目,因此要使用 ACL 必须要有档案系统的支援才行。
目前绝大部分的档案系统都有支援 ACL 的功能,包括 ReiserFS, EXT2/EXT3, JFS, XFS 等等。
在 SuSE 这个版本当中,预设是有启动 ACL 控制的,不过在 CentOS 则预设没有启动 ACL。
所以等一下要使用 ACL 的功能时,你必须要先启动你系统 filesystem 的支援才行喔!<br /><br />
那 ACL 主要可以针对哪些方面来控制权限呢?他主要可以针对几个项目∶<br />
<ul>
<li>使用者 (user)∶可以针对使用者来设定权限;
<li>群组 (group)∶针对群组为对象来设定其权限;
<li>预设属性 (mask)∶还可以针对在该目录下在建立新档案/目录时,规范新资料的预设权限;
</ul>
好了,再来看看如何让你的档案系统可以支援 ACL 吧!<br /><br />
</div>
<hr /><a NAME="acl_support"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">如何启动 ACL</span><br />
<div class=block2>
要让你的档案系统支援 ACL 非常的简单!假如要让你的 /home 支援 ACL 的话,可以直接这样做∶<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>mount -o remount,acl /home</span>
[root@linux ~]# <span class=term_command>mount | grep /home</span>
/dev/hda5 on /home type ext3 (rw,<span class=term_write>acl</span>)
</pre></td></tr></table>
看到那个出现的 ACL 了吧!那就对了~如果没有出现这一行,你的档案系统是无法支援 ACL 的,
那下一节的练习您可就无能为力了~那如果想要一开机就让你的档案系统支援 ACL 呢?
呵呵!修改 /etc/fstab 就对了!将他改成类似底下的模样∶<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/fstab</span>
/dev/hda5 /home ext3 defaults<span class=term_write>,acl</span> 1 2
</pre></td></tr></table>
加入那一段特殊字体的资料,那么下次开机就能够支援 ACL 了!很简单吧! ^_^
<br /><br />
</div>
<hr /><a NAME="acl_use"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">ACL 的设定技巧∶ getfacl, setfacl</span><br />
<div class=block2>
好了,让你的 filesystem 启动 ACL 支援后,接下来该如何设定与观察 ACL 呢?
很简单,利用这两个指令就可以了∶<br />
<ul>
<a name=getfacl></a><li>getfacl∶取得某个档案/目录的 ACL 设定项目;
<a name=setfacl></a><li>setfacl∶设定某个目录/档案的 ACL 规范。
</ul>
先让我们来瞧一瞧 setfacl 如何使用吧!<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>setfacl [-mxdb] 设定值</span>
<span class=term_say>参数∶
-m ∶设定一个 ACL 规范;
-x ∶取消一个 ACL 规范;
-b ∶全部的 ACL 规范都移除;
-d ∶设定预设的 ACL 规范,仅能针对目录使用。</span>
</pre></td></tr></table>
最常用的就是那个 -m 的参数啦!用来定义一笔 ACL 的设定规范说。那么 ACL 该如何设定呢?
不同的使用者、群组与预设权限设定方法有点不同,不过,基本上有底下这三种简易的设定方法∶<br />
<table class="term"><tr><td class="term"><pre>
<span class=term_hd>1. 针对使用者</span>
<span class=term_say>设定值的规范为∶ u:[使用者帐号列表]:[rwx]
例如针对 dmtsai 这个使用者来规范其权限为 rx ,则∶</span>
[root@linux ~]# <span class=term_command>setfacl -m u:dmtsai:rx somefilename</span>
<span class=term_hd>2. 针对群组来设定</span>
<span class=term_say>设定值的规范为∶ g:[群组名]:[rwx]
例如针对 users 这个群组来规范其权限为 rw ,则∶</span>
[root@linux ~]# <span class=term_command>setfacl -m g:users:rw somefilename</span>
<span class=term_hd>3. 针对预设权限来规范,类似 umask 的功能</span>
<span class=term_say>设定值的规范为∶ m:[rwx]
例如假设预设权限为 rwx,则∶</span>
[root@linux ~]# <span class=term_command>setfacl -m m:rwx somefilename</span>
</pre></td></tr></table>
了解了上面的设定方式后,现在让我们来实际操作一下吧!假设∶<br />
<ul>
<li>你已经将 /home 这个独立的 partition 设定了 ACL 的支援了,
<li>并且在 /home 底下设定了一个名称为 project 的目录,
<li>该目录要给 eric 这个使用者,且属于 users 这个群组,预设权限应该是 770 ;
<li>有个使用者帐号名称为 jordan ,他属于 jordan 那个群组,但他想要进入到 project 那个目录来工作,
意思是说,jordan 在该目录下需有 w 的权限才行;
<li>有个使用者他是其他班级的老师,名称为 tip ,群组名亦为 tip ,他想要进入该目录查阅所有档案资料,
但是不能够进行删除与新增的工作,亦即他不能拥有 w 的权限。
</ul>
在传统的 Linux 档案权限中,要达成上述的功能时,你得要让 jordan 与 tip 这两个使用者加入 users
那个群组才行,但是 jordan 是希望可以在该目录内工作的,所以他必须要拥有 w 的权限,
而 tip 却仅能读取,所以他不能拥有 w 的权限!哇!如此一来,就无法完成上述的交代事项了!
此时我们只好透过 ACL 来单独的针对 tip/jordan 这两个使用者来设定他的权限呐!整个流程可以是这样的∶<br />
<table class="term"><tr><td class="term"><pre>
<span class=term_hd>1. 建立该目录并规划好权限∶</span>
[root@linux ~]# <span class=term_command>mkdir /home/project</span>
[root@linux ~]# <span class=term_command>chown eric:users /home/project</span>
[root@linux ~]# <span class=term_command>chmod 770 /home/project</span>
[root@linux ~]# <span class=term_command>ls -ld /home/project</span>
<span class=term_write>drwxrwx---</span> 2 <span class=term_write>eric users</span> 4096 Sep 5 15:54 /home/project/
<span class=term_say># 瞧!已经将需要的目录规划好了!使用者/群组与权限都OK了;</span>
<span class=term_hd>2. 建立 jordan 的使用权限(需要有 w)∶</span>
[root@linux ~]# <span class=term_command>cd /home</span>
[root@linux home]# <span class=term_command>setfacl -m u:jordan:rwx project</span>
[root@linux home]# <span class=term_command>getfacl project</span>
# file: project <span class=term_say><==前面三行只是指出这个档名的传统 Linux 权限</span>
# owner: eric
# group: users
user::rwx <span class=term_say><==注意看,这是针对『预设使用者』的权限设定;</span>
user:jordan:rwx <span class=term_say><==这是针对 jordan 的权限设定</span>
group::rwx <span class=term_say><==这是针对『预设群组』的权限设定</span>
mask::rwx <span class=term_say><==这玩意儿则是预设属性啦!</span>
other::---
<span class=term_say># 上面这个输出共 8 行我们会在底下详细说明!</span>
[root@linux home]# <span class=term_command>ls -ld project</span>
<span class=term_write>drwxrwx---+</span> 2 eric users 4096 Sep 5 15:54 project
<span class=term_say># 看看!多了一个 + 的标
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -