美文网首页
Linux下的文件、目录权限

Linux下的文件、目录权限

作者: jie0112 | 来源:发表于2017-05-30 21:52 被阅读0次

    对于Linux的初学者来说,熟悉了Windows下的文件类型,接触到Linux的下的文件类型是有所区别的。如Windows的:



    而Linux下:


    你会发现Linux下前面的几列不同如drwxr-xr-x. 2 root root,这又代表的什么?下面我们来说说Linux的文件权限......

    一 、文件的属性

    1. 文件的权限:
    文件的权限主要针对三类对象进行定义:

    owner: 属主, u
    group: 属组, g
    other: 其他, o

    每个文件针对每类访问者都定义了三种权限:

    r: Readable 读权限
    w: Writable 写权限
    x: eXcutable 执行权限

    文件:(例:-rw-r--r--. 1 root root 21 May 30 13:43 test.txt)

    r: 可使用文件查看类工具获取其内容
    w: 可修改其内容
    x: 可以把此文件提请内核启动为一个进程

    目录:(例:drwxr-xr-x. 2 root root 6 May 27 21:12 Music)

    r: 可以使用ls查看此目录中文件列表
    w: 可在此目录中创建文件,也可删除此目录中的文件
    x: 可以使用ls -l查看此目录中文件列表,可以cd进入此

    为什么Linux上要设置这么多的属性呢?其实,最大的用途是在『数据安全性』上面的。

    1.系统保护的功能:

    -r--------. 1 root root 2211 May 29 12:44 /etc/shadow```
    像/etc/shadow 这一个账号管理的文件,由于该文件记录了你系统中所有账号的数据。你不希望所有普通用户都能访问它,否则就存在安全隐患。因此像这类很重要的配置文件通常只有root (管理员)才能读写或者是执行。
    2.组成员数据共享的功能:
    例如你有一个组,你希望你的每个组成员都有访问这个组下的文件,而其他人不可访问,你则可以设置组的权限。
    3.未将权限设定的危害:
    假如你的目录权限没有设定好的话,可能造成其他人随意访问,修改配置权限,像一些重要的的文件,本来只有管理员,组内成员可修改,没设定好造成其他人可执行管理员的权限,会造成数据的流失,系统得不到安全的保障。
    
    ## 二 、文件属性的设定与权限操作
    1.设置文件的所有者:chown
    chown [OPTION]... [OWNER][:[GROUP]] FILE...
    [root@centos7 ~]# chown [-R] 账号名称:组名 文件或目录
    >[root@centos7 ~]#ls -l test.txt
    -rwxrwxr-x. 1 root root 21 May 30 13:43 test.txt
    [root@centos7 ~]#useradd xiao
    [root@centos7 ~]#chown xiao test.txt 
    [root@centos7 ~]#ls -l test.txt
    -rwxrwxr-x. 1 xiao root 21 May 30 13:43 test.txt
    
    PS.改文件的所有者只能在root下有效,在普通用户下改所有者无效,改所属组有条件性(如wang用户在xiao组中可以修改为wang为所属组,不在这个组中修改不了)。
    >[root@centos7 ~]#useradd wang
    [root@centos7 ~]#id xiao
    uid=2009(xiao) gid=2014(xiao) groups=2014(xiao),
    [root@centos7 ~]#su - xiao
    [xiao@centos7 ~]$touch b
    [xiao@centos7 ~]$ll
    -rw-rw-r--. 1 xiao xiao 0 May 30 15:51 b
    [xiao@centos7 ~]$chown wang b
    chown: changing ownership of ‘b’: Operation not permitted
    [xiao@centos7 ~]$chown :wang b
    chown: changing group of ‘b’: Operation not permitted
    [xiao@centos7 ~]$exit
    [root@centos7 ~]#usermod -G  xiao wang 
    [root@centos7 ~]#id xiao
    uid=2009(xiao) gid=2014(xiao) groups=2014(xiao),2010(wang)
    [root@centos7 ~]#su - xiao
    [xiao@centos7 ~]$chown :wang b
    [xiao@centos7 ~]$ll
    -rw-rw-r--. 1 xiao wang 0 May 30 15:51 b
    [xiao@centos7 ~]$exit
    
    
    -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更
     >[root@centos7 ~]#chown -R xiao:xiao /etc
    [root@centos7 ~]#ll /etc
    total 1396
    drwxr-xr-x.  3 xiao xiao    101 May 30 15:33 abrt
    -rw-r--r--.  1 xiao xiao     16 May 30 15:33 adjtime
    -rw-r--r--.  1 xiao xiao   1518 May 30 15:33 aliases
    -rw-r--r--.  1 xiao xiao  12288 May 30 15:33 aliases.db
    drwxr-xr-x.  2 xiao xiao     51 May 30 15:33 alsa
    drwxr-xr-x.  2 xiao xiao   4096 May 30 15:33 alternatives
    -rw-------.  1 xiao xiao    541 May 30 15:33 anacrontab
    PS.用递归变更目录下的文件需注意,特别是在root模式下,会把重要的配置文件所有者所属组改变。
    
    2.设置文件的属组信息:chgrp
    >chgrp [OPTION]... GROUP FILE...
    [root@centos7 app]#touch c
    [root@centos7 app]#chgrp wang c
    [root@centos7 app]#ll
    -rw-r--r--.   1 root wang    0 May 30 16:07 c
    
    3.修改文件权限:chmod
    通常修改文件权限为**模式法与数字法**。
    **模式法:**
    chmod [OPTION]... MODE[,MODE]... FILE...
    修改一类用户的所有权限:
    u= g= o= ug= a= 
    >[root@centos7 app]#ls -l cc
    -rw-r--r--. 1 root root 0 May 30 17:37 cc
    [root@centos7 app]#chmod u=rwx,g=rx,o=rx cc
    [root@centos7 app]#ls -l cc
    -rwxr-xr-x. 1 root root 0 May 30 17:37 cc
    [root@centos7 app]#chmod ug=rx cc
    [root@centos7 app]#ls -l cc
    -r-xr-xr-x. 1 root root 0 May 30 17:37 cc
    [root@centos7 app]#chmod a=rwx cc
    [root@centos7 app]#ls -l cc
    -rwxrwxrwx. 1 root root 0 May 30 17:37 cc
    
    修改一类用户某位或某些位权限
    u+ u-g+ g-o+ o-a+ a-+ -
    >[root@centos7 app]#chmod a-w cc
    [root@centos7 app]#ls -l cc
    -r-xr-xr-x. 1 root root 0 May 30 17:37 cc
    [root@centos7 app]#chmod u+w cc
    [root@centos7 app]#ls -l cc
    -rwxr-xr-x. 1 root root 0 May 30 17:37 cc
    [root@centos7 app]#chmod g+w,o-x cc
    [root@centos7 app]#ls -l cc
    -rwxrwxr--. 1 root root 0 May 30 17:37 cc
    [root@centos7 app]#
    
    **数字法:**
    
    ![](https://img.haomeiwen.com/i6137254/83a9f5a529887d11.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    >八进制数
    --- 000 0
    --x 001 1
    -w- 010 2
    -wx 011 3
    r-- 100 4
    r-x 101 5
    rw- 110 6
    rwx 111 7
    例如:640: rw-r----- 、755: rwxr-xr-x
    [root@centos7 app]#chmod 755 cc
    [root@centos7 app]#ls -l cc
    -rwxr-xr-x. 1 root root 0 May 30 17:37 cc
    
    在某些情况下修改文件权限需注意:
    例:
    >在普通用户下:
    1.[xiao@centos7 ~]$touch a.txt
    [xiao@centos7 ~]$nano a.txt
    [xiao@centos7 ~]$ls -l a.txt 
    -rw-rw-r--. 1 xiao xiao 12 May 30 17:59 a.txt
    [xiao@centos7 ~]$chmod u=,g=rw,o=rx a.txt 
    [xiao@centos7 ~]$cat a.txt
    cat: a.txt: Permission denied
    [xiao@centos7 ~]$chmod u=rwx a.txt 
    [xiao@centos7 ~]$cat a.txt 
    hello linux
    [xiao@centos7 ~]$rm a.txt 
    对普通用户来说,把自己权限设为u=0,所有者没有任何权限,访问不了文件,但所有者有资格改所有者权限,亦可删除。
    2.[root@centos7 ~]#groupadd g1
    [root@centos7 ~]#useradd -g g1 xiaohong
    [root@centos7 ~]#useradd -g g1 xiaoming
    [root@centos7 ~]#useradd xiaodong
    [root@centos7 ~]#touch ab.txt
    [root@centos7 app]#cat>>ab.txt
    hello linux
    [root@centos7 app]#chown xiaoming:g1 ab.txt
    [root@centos7 app]#chmod u=,g=r,o=rw ab.txt
    [root@centos7 app]#su xiaoming
    [xiaoming@centos7 app]$ cat ab.txt
    cat: ab.txt: Permission denied
    [xiaoming@centos7 app]$ exit
    [root@centos7 app]#su xiaohong
    [xiaohong@centos7 app]$ cat ab.txt
    hello linux
    [xiaohong@centos7 app]$ cat >>ab.txt
    bash: ab.txt: Permission denied
    [xiaohong@centos7 app]$ exit
    [root@centos7 app]#su xiaodong
    [xiaodong@centos7 app]$ cat ab.txt
    hello linux
    [xiaodong@centos7 app]$ cat >>ab.txt
    abc
    [xiaodong@centos7 app]$ cat ab.txt
    hello linuxabc
    用户访问一个文件,他的权限,执行过程为:先判断这个文件是否为所有者,如果是则匹配权限,后面则省略权限匹配,及使在别的组你对这个文件有更大的权限,如果不是所有者,判断是否为所属组,再然后是其他人。
    匹配顺序为所有者--所属组---其他人,不是用户权限的累加。
    3.
    [root@centos7 app]#cp /usr/bin/cat /app
    [root@centos7 app]#chmod a= /app/cat
    [root@centos7 app]#/app/cat ab.txt
    -bash: /app/cat: Permission denied
    [root@centos7 app]#chmod g=x /app/cat
    [root@centos7 app]#/app/cat ab.txt
    hello linuxabc
    对root用户来说rw权限不受影响,x权限受限制,如果u,g,o,只要一项有x权限,则root有x权限。
    4.
    chown [OPTION]... --reference=aFILE bFILE...
     b文件参考a文件的权限来设。
    [root@centos7 app]#ll
    -r-xr-xr-x. 1 xiaoming g1      20 May 30 20:30 ab.txt
    ----------. 1 root     root    26 May 30 20:47 ac.txt
    [root@centos7 app]#chmod --reference ab.txt ac.txt
    [root@centos7 app]#ll
    -r-xr-xr-x. 1 xiaoming g1      20 May 30 20:30 ab.txt
    -r-xr-xr-x. 1 root     root    26 May 30 20:47 ac.txt
    
    ##三.目录的权限
    目录的权限一般为```drwxr-xr-x. 2 root root    6 May 27 21:12 Videos```
    但不排除特殊情况;例只有r或w或x权限时:
    >[root@centos7 app]#mkdir test1
    [root@centos7 app]#cd /app/test1
    [root@centos7 test1]#touch a 
    [root@centos7 test1]#touch b
    [root@centos7 app]#cp -rp /app/test1/ /app/test2
    [root@centos7 app]#cp -rp /app/test1/ /app/test32
    [root@centos7 app]#tree
    ├── test1
    │   ├── a
    │   └── b
    ├── test2
    │   ├── a
    │   └── b
    ├── test32
    │   ├── a
    │   └── b
    [root@centos7 app]#chmod u=x,g=,o= test1
    [root@centos7 app]#chmod u=w,g=,o= test2
    [root@centos7 app]#chmod u=r,g=,o= test32
    [root@centos7 app]#chown xiaoming: test1
    [root@centos7 app]#chown xiaoming: test2
    [root@centos7 app]#chown xiaoming: test32
    [root@centos7 app]#su xiaoming
    [xiaoming@centos7 app]$ ls /app/test32
    ls: cannot access /app/test32/a: Permission denied
    ls: cannot access /app/test32/b: Permission denied
    a  b
    [xiaoming@centos7 app]$ cd /app/test32
    bash: cd: /app/test32: Permission denied
    [xiaoming@centos7 app]$ rm -rf /app/test32
    rm: cannot remove ‘/app/test32/a’: Permission denied
    rm: cannot remove ‘/app/test32/b’: Permission denied
    [xiaoming@centos7 app]$ cd test1
    [xiaoming@centos7 test1]$ ls
    ls: cannot open directory .: Permission denied
    [xiaoming@centos7 test1]$ cat a
    只有读:只能查看目录文件列表,不能访问文件,也不能cd目录(查看,删除)
    只有执行:可以cd,不能ls,可以访问目录中的文件。执行是基础权限
    写权取:配合x权限才生效
    [root@centos7 test1]#mkdir a
    [root@centos7 test1]#mkdir b
    [root@centos7 test1]#touch c
    [root@centos7 test1]#chmod u=rw,g=rw,o=r a
    [root@centos7 test1]#chmod u=rw,g=rw,o=r b
    [root@centos7 test1]#chmod u=rw,g=rw,o=r c
    [root@centos7 app]#ll /app/test1
    -rw-rw-r--. 1 root root 0 May 30 21:26 a
    -rw-rw-r--.. 1 root root 0 May 30 21:26 b
    -rw-rw-r--. 1 root root 0 May 30 21:43 c
    [root@centos7 app]#chmod -R  a=rwX test1
    [root@centos7 app]#ll /app/test1
    -rwxrwxr-x. 1 root root 0 May 30 21:26 a
    -rwxrwxr-x. 1 root root 0 May 30 21:26 b
    -rw-rw-r--. 1 root root 0 May 30 21:43 c
    [root@centos7 test1]#chmod u=rw,g=rw,o=rx c
    [root@centos7 test1]#cd ..
    [root@centos7 app]#chmod -R  a=rwX test1
    [root@centos7 app]#cd /app/test1
    [root@centos7 test1]#ll
    -rwxrwxrwx. 1 root root 0 May 30 21:26 a
    -rwxrwxrwx. 1 root root 0 May 30 21:26 b
    -rwxrwxrwx. 1 root root 0 May 30 21:43 c
    X的作用(x权限特殊形式)
    针对目录增加x权限
    对文件
    1 无执行的文件,不会增加x权限
    2 任意三种人有执行权限,也会增加x权限

    相关文章

      网友评论

          本文标题:Linux下的文件、目录权限

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