美文网首页
Linux学习之文件权限及访问模式

Linux学习之文件权限及访问模式

作者: 郭之源 | 来源:发表于2016-04-11 19:37 被阅读67次

    为了更加安全的存储文件,Linux为不同的文件赋予了不同的权限,每个文件都拥有下面三种权限:

    • 所有者权限:文件所有者能够进行的操作
    • 组权限:文件所属用户组能够进行的操作
    • 外部权限(其他权限):其他用户可以进行的操作

    查看文件权限

    #[root@localhost test]# ls -l
    total 4
    -rwx-r--r--. 1 root root 0 Apr 8 09:34 test1.txt
    -rw-r--r--. 1 root root 55 Apr 8 09:37 test.txt

    第一列就包含了文件或目录的权限。第一列的字符可以分为三组,每一组有三个,每个字符都代表不同的权限,分别为读取(r)、写入(w)和执行(x):
    - 第一组字符(2-4)表示文件所有者的权限,-rwx-r--r-- 表示所有者拥有读取(r)、写入(w)和执行(x)的权限。
    - 第二组字符(5-7)表示文件所属用户组的权限,-rwx-r--r-- 表示该组拥有读取(r)和执行(x)的权限,但没有写入权限。
    - 第三组字符(8-10)表示所有其他用户的权限,-rwx-r--r-- 表示其他用户只能读取(r)文件。

    文件目录访问模式

    文件权限是Linux系统的第一道安全防线,基本的权限有读取(r)、写入(w)和执行(x):

    • 读取:用户能够读取文件信息,查看文件内容。
    • 写入:用户可以编辑文件,可以向文件写入内容,也可以删除文件内容。
    • 执行:用户可以将文件作为程序来运行。

    修改文件权限

    修改文件访问模式使用chmod(change mode)命令,权限可以使用符号或数字表示:

    使用符号表示权限

    对于初学者来说最简单的就是使用符号来改变文件或目录的权限,你可以增加(+)和删除(-)权限,也可以指定特定权限。符号说明

    符号 说明
    + 为文件或目录增加权限
    - 删除文件或目录的权限
    = 设置指定的权限
    修改所有者权限的权限

    [root@localhost test]# chmod u-x test1.txt
    [root@localhost test]# ls -l test1.txt
    -rw-r--r--. 1 root root 0 Apr 8 09:34 test1.txt

    修改组权限的权限

    [root@localhost test]# chmod g+x test1.txt
    [root@localhost test]#ls -l test1.txt
    -rw-r-xr--. 1 root root 0 Apr 8 09:34 test1.txt

    修改外部权限的权限

    [root@localhost test]# chmod o+w test1.txt
    [root@localhost test]# ls -l test1.txt
    -rw-r-xrw-. 1 root root 0 Apr 8 09:34 test1.txt

    使用数字表示权限

    | 数字 | 说明 | 权限|
    | ------ |:-----------:------:|
    | 0 | 没有任何权限|---|
    | 1 | 执行权限 |--x|
    | 2| 写入权限|-w-|
    | 3 | 执行权限和写入权限|-wx|
    | 4 | 读取权限 |r--|
    | 5| 读取和执行权限|r-x|
    | 6 | 读取和写入权限|rw-|
    | 7 | 所有权限 |rwx|

    修改test.txt权限

    [root@localhost test]# chmod 755 test.txt
    [root@localhost test]# ls -l test.txt
    total 4
    -rwxr-xr-x. 1 root root 55 Apr 8 09:37 test.txt

    更改所有者和用户组

    在Linux中,每添加一个新用户,就会为它分配一个用户ID和群组ID,上面提到的文件权限也是基于用户和群组来分配的。有两个命令可以改变文件的所有者或群组:

    • chown:chown 命令是"change owner"的缩写,用来改变文件的所有者。
    • chgrp:chgrp 命令是"change group"的缩写,用来改变文件所在的群组。

    chown 命令用来更改文件所有者,其语法如下:

    $ chown user filelist
    $ chown amrood testfile

    user 可以是用户名或用户ID
    注意:超级用户 root 可以不受限制的更改文件的所有者和用户组,但是普通用户只能更改所有者是自己的文件或目录。

    chgrp 命令用来改变文件所属群组,其语法为:

    $ chgrp group filelist
    $ chgrp special testfile

    group可以是群组名或群组ID,将文件 testfile 的群组改为 special。

    SUID和SGID位

    在Linux中,一些程序需要特殊权限才能完成用户指定的操作。例如,用户的密码保存在 /etc/shadow 文件中,出于安全考虑,一般用户没有读取和写入的权限。
    但是当我们使用passwd 命令来更改密码时,需要对 /etc/shadow 文件有写入权限。这就意味着,passwd 程序必须要给我们一些特殊权限,才可以向 /etc/shadow 文件写入内容。

    Linux 通过给程序设置SUID(Set User ID)和SGID(Set Group ID)位来赋予普通用户特殊权限。当我们运行一个带有SUID位的程序时,就会继承该程序所有者的权限;
    如果程序不带SUID位,则会根据程序使用者的权限来运行。SGID也是一样。一般情况下程序会根据你的组权限来运行,但是给程序设置SGID后,就会根据程序所在组的组权限运行。如果程序设置了SUID位,就会在表示文件所有者可执行权限的位置上出现's'字母;同样,如果设置了SGID,就会在表示文件群组可执行权限的位置上出现's'字母。如下所示:

    [root@localhost home]# ls -l /usr/bin/passwd
    -rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd

    上面第一列第四个字符不是'x'或'-',而是's',说明 /usr/bin/passwd 文件设置了SUID位,这时普通用户会以root用户的权限来执行passwd程序。
    注意:小写字母's'说明文件所有者有执行权限(x),大写字母'S'说明程序所有者没有执行权限(x)。如果在表示群组权限的位置上出现SGID位,那么也仅有三类用户可以删除该目录下的文件:目录所有者、文件所有者、超级用户 root。
    为一个目录设置SUID和SGID位可以使用下面的命令:

    chmod ug+s test
    [root@localhost home]# ls -l
    dr-Sr-Sr--. 2 devteam root 4096 Apr 8 17:13 test

    好了,今天就先学到这吧,文中可能有误,欢迎朋友们指出!最后一点笔者也不是很明白,欢迎简友讨论!文中内容参考自 学习网站,十分感谢!

    相关文章

      网友评论

          本文标题:Linux学习之文件权限及访问模式

          本文链接:https://www.haomeiwen.com/subject/nmsilttx.html