|
权限标志: 对每个文件或目录都有 4 类不同的用户。每类用户各有一组读、写和执行(搜索)文件的访问权限,这 4 类用户是: root:系统特权用户类,既 UID = 0 的用户。 owner:拥有文件的用户。 group:共享文件的组访问权限的用户类的用户组名称。 world:不属于上面 3 类的所有其他用户。 作为 root,他们自动拥有了所有文件和目录的全面的读、写和搜索的权限,所以没有必要明确指定他们的权限。其他三类用户则可以在耽搁文件或者目录的基础上别授权或撤消权限。因此对另外三类用户,一共 9 个权限位与之对应,分为 3 组,每组 3 个,分别用 r、w、x 来表示,分别对应 owner、group、world。 权限位对于文件和目录的含义有些许不同。每组 3 个字符对应的含义从左至右的顺序,对于文件来说是:读文件的内容(r)、写数据到文件(w)、做为命令执行该文件(x)。对于目录来说是:读包含在目录中的文件名称(r)、写信息到目录中去(增加和删除索引点的连接)、搜索目录(能用该目录名称作为路径名去访问它所包含的文件或子目录)。具体来说就是: 1. 有只读权限的用户不能用 cd 进入该目录;还必须有执行权限才能进入。 2. 有执行权限的用户只有在知道文件名并拥有该文件的读权限的情况下才可以访问目录下的文件。 3. 必须有读和执行权限才可以使用 ls 列出目录清单,或使用 cd 进入目录。 4. 如用户有目录的写权限,则可以创建、删除或修改目录下的任何文件或子目录,既是该文件或子目录属于其他用户。 修改文件权限 首先讲修改文件的所有权,使用 chown 和 chgrp 命令: chown new_user file or directory:修改文件或目录的所有者。 chgrp new_group file or directory:修改文件或目录的所属组。 这里需要注意的是:普通用户不能将文件或目录的所有权交与他人,只有 root 有这一权限。但是普通用户有权改变文件或目录的所属组。 由于每类用户的权限都是由 rwx 三位组成,因此可以用三个八进制数字表示文件的访问权。一个八进制数字可以用三个二进制数字表示,那么与其对应,权值为 4 的位对应 r,权值为 2 的位对应 w,权值为 1 的位对应 x。对于一类用户,将这三位与其对应的权值相乘求和,就可以得出对该类用户的访问权限。 改变文件访问权限的命令是 chmod,格式是: chmod permission file_name 比如 chmod 764 a.txt,它表示对于文件的所有者,具有对该文件读、写、执行的权限。对于文件所属组的用户,拥有读、写的权限。对于其他用户,只有读权限。 这里需要注意的是:文件的创建者是唯一可以修改该文件访问权限的普通用户,另外一个可以修改文件访问权限的用户是 root。 还有一种表示方法,就是用字符串来设定文件访问权限。其中读用 r 表示,写用 w 表示,执行用 x 表示;所有者用 u 表示,组用户用 g 表示,其他用户用 o 表示,所有用户用 a 表示。那么上面例子就写成西面的模样: chmod a+r,u+w,u+x,g+w a.txt 理解 SUID 和 SGID 在上面的章节中,我们知道了文件的权限可以用三个八进制数字表示。其实文件的权限应该用四个八进制来表示,不过用 ls -l 命令时,只显示三个罢了。那个没有显示的八进制数字其实是第一个,它用来设定一些特殊权限。这个八进制数字的三个位是: SUID SGID sticky-bit 它们的含义是: SUID当设置了SUID 位的文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。如果所有者是 root 的话,那么执行人就有超级用户的特权了。这时该位将变成一个安全漏洞,因此不要轻易设置该位。 SGID与上面的内容类似。文件运行时,运行者将具有所属组的特权。 sticky-bitsticky 位要求操作系统既是在可执行程序退出后,仍要在内存中保留该程序的映象。这样做是为了节省大型程序的启动时间。但是会占用系统资源。因此设置该位,不如把程序写好。
上一页 [1] [2] |