日期:2014-05-16  浏览次数:20521 次

linux 文件权限(b)

使用数字方式改变文件权限

  一般而言,作为系统管理员,更喜欢使用数字方式,因为这种方式的速度明显快得多。

  很显然,系统中各种文件的权限设置对特定用户的数据安全有很大影响。但是要求用户逐一明确设置系统中每个文件的权限也是不现实的,为此,需要 使用umask命令,该命令可以为用户账号中新文件的创建进行缺省设置。具体来说,umask是用来设置权限掩码的,权限掩码由3个数字组成,将现有的存 取权限减掉权限掩码后,即可产生建立文件时默认的权限。例如,root的权限为777,若权限掩码设为022,那么两都相减后可得755。下面是在我的系 统更改umask的一些情况:

[root@linuxserver root]# umask
022



  上述命令显示表示我的系统的umask值为022。

[root@linuxserver root]# umask -S
u=rwx,g=rx,o=rx



  当umask值为022时,默认情况下各用户的权限。注意这里的参数“S”是大写。

[root@linuxserver root]# umask 177
[root@linuxserver root]# umask -S
u=rw,g=,o=



  上述两行命令把umask值改为177,结果只有文件所有者具有读写文件的权限,其它用户不能访问该文件。这显然是一种非常安全的状态。


  其它问题

  事实上,一个系统中的文件安全是一个综合问题,对于一些特殊的情况要做特殊的考虑。比如,对于设备文件的安全性、SUID/SGID的设置等。

  一般来说,各Linux发行版在安装时就已经把设备文件的设置做得非常不错。但是对于磁盘设备而言,我认为惟一安全的还是只允许root用户进行读写。否则,其它用户的账号一旦被攻破,黑客通过访问磁盘很快就可以让系统崩溃。要做到这一点,可以使用以下命令:

#cd /dev
#chmod 600 sd* hd *



  Suid和Sgid是Linux系统中最复杂的属性,它跟一个系统的安全息息相关。我们可以利用chmod命令来清除或者设置一个文件的Suid/Sgid属性,具体方法如下所示。

  将/usr/sbin/pppd程序设置为Suid/Sgid状态,使用的命令是:

#chmod ug+s /usr/sbin/pppd



  要清除Sgid状态而保留Suid状态,可用以下命令:

#chmod g-s /usr/sbin/pppd



  此外,如何装载文件系统,特别是将root文件系统装载为只读,以防止非授权的修改也比较重要。

  总之,Linux下文件系统的安全问题是一个非常复杂的问题。

?

下面来看一个例子 ,以便加深理解。首先来看一看图1中的第一行:

drwxrwxr-- 2 root root 4096 2月 11 10:36 guo



  因为guo的第1个位置的字符是d,所以由此知道guo是一个目录。第2至4位置 上的属性是rwx,表示用户root拥有权限列表显示guo 中所有的文件、创建新文件或者删除guo中现有的文件,或者将guo作为当前工作目录。第5至7个位置上的权限是rwx,表示root组 的成员拥有和 root一样的权限。第8至10位上的权限仅是r--,表示不是root的用户及不属于root组 的成员只有对guo目录列表的权限。这些用户不能创建或 者删除guo中的文件、执行junk中的可执行文件,或者将junk作为他们的当前工作目录。