zoukankan      html  css  js  c++  java
  • 细说Linux权限

    目录:

    一、归属和访问权限简介

    1、归属(所有权)

      1、u:文件拥有者(owner):拥有该文件或目录的用户帐号user

      2、g:属组(group):拥有该文件或目录的组帐号

      3、o:其它人(others):除了属主和属组的其他人

      4、a:所有的人(all)  :“公有财产”

    2、访问权限

      1、r:可读(read):允许查看文件内容、显示目录列表

        1、对文件而言,就是查看里面的内容

          shell> cat,vim,less,more ....“file”

        2、对目录而言,就是查看目录里的内容

          shell> ls “dir”

      2、w---可写(write):允许修改文件内容,允许在目录中新建、移动、删除文件或子目录

        1、对文件而言,就是修改里面的内容

          shell> vi “file”

        2、对目录而言,就是新建、删除、重命名、移动

          shell> mkdir 、touch 、rm、mv、cp  “dir”

      3、x---可执行(execute):允许运行程序、切换目录

        1、对文件而言,就是执行这个文件里的命令。例如执行脚本文件

          shell> ./timeover.sh (执行脚本文件)

        2、对目录而言,就是进入目录

          shell> cd  “dir”

    操作者--->对象(自己、组、其他人)--->权限

     

    二、chmod命令

    作用:

      change file mode bits:修改权限(r、w、x)

    修改对象:

      user、group、others、all

    形式:

      +  增加权限

      -  去掉权限

      =  直接等于某些权限

    -R:递归修改指定目录下所有文件、子目录的权限

    1、普通权限修改

    [root@localhost lianxi]# mkdir dasheng  //新建目录
    [root@localhost lianxi]# ls
    dasheng
    [root@localhost lianxi]# ls -ld dasheng  //显示目录详细信息
    drwxr-xr-x 2 root root 4096 Nov 10 11:06 dasheng
    d:directory目录
    rwx:root主有读写执行权限
    r-x:root组有读执行权限
    r-x:其他人有读执行权限
    注:由此可见,默认新建目录的权限如上。
    
    [root@localhost lianxi]# chmod u=rwx,g=rx,o=--- dasheng
      //user读写执行权限,group读执行权限,others没有权限
    [root@localhost lianxi]# ls -ld dasheng
    drwxr-x--- 2 root root 4096 Nov 10 11:06 dasheng
    
    [root@localhost lianxi]# chmod o+rx dasheng  //others增加读执行的权限
    [root@localhost lianxi]# ls -ld dasheng
    drwxr-xr-x 2 root root 4096 Nov 10 11:06 dasheng
    
    [root@localhost lianxi]# chmod o-rx dasheng  //others去掉读执行的权限
    [root@localhost lianxi]# ls -ld dasheng
    drwxr-x--- 2 root root 4096 Nov 10 11:06 dasheng

    2、递归修改权限

    [root@localhost lianxi]# cd dasheng/ ; mkdir huaguoshan shuiliandong
    [root@localhost dasheng]# ls
    huaguoshan  shuiliandong
    [root@localhost dasheng]# ll
    total 8
    drwxr-xr-x 2 root root 4096 Nov 10 11:10 huaguoshan
    drwxr-xr-x 2 root root 4096 Nov 10 11:10 shuiliandong
    [root@localhost dasheng]# cd ..
    
    [root@localhost lianxi]# chmod -R o-rx dasheng  //递归修改dasheng目录及子目录的others权限
    [root@localhost lianxi]# cd dasheng/ ; ll
    total 8
    drwxr-x--- 2 root root 4096 Nov 10 11:10 huaguoshan
    drwxr-x--- 2 root root 4096 Nov 10 11:10 shuiliandong

    3、利用数值修改权限

      r=4

      w=2

      x=1

      -=0

    由此即可通过数值的形式替代上述的修改操作

      7=4+2+1=rwx、6=4+2=rw-、……类推

    [root@localhost lianxi]# chmod -R 757 dasheng
    [root@localhost lianxi]# ls -ld dasheng
    drwxr-xrwx 4 root root 4096 Nov 10 11:10 dasheng
    [root@localhost lianxi]# ll  dasheng
    total 8
    drwxr-xrwx 2 root root 4096 Nov 10 11:10 huaguoshan
    drwxr-xrwx 2 root root 4096 Nov 10 11:10 shuiliandong

     

    三、chown命令

    作用:

      change file owner and group:修改文件的属主和属组(u、g、o、a)

    注意:

      1、所属修改的用户和组必须存在

      2、chown操作只有root用户可以执行(chmod操作是root和所属者可以执行)

    格式:

      chown  属主  文件

      chown  :属组  文件

      chown  属主:属组  文件

      chown  -R  属主:属组  目录  #递归修改指定目录下的所有文件、子目录的属主和属组

    1、普通归属权修改

    [root@localhost zhang]# mkdir wudangshan  //新建目录wudangshan
    [root@localhost zhang]# useradd zhangwuji  //创建用户zhangwuji,同时也创建了该组
    [root@localhost zhang]# useradd zhaomin  //创建用户zhaomin,同时也创建了该组
    [root@localhost zhang]# ll
    total 4
    drwxr-xr-x 2 root root 4096 Nov 10 13:29 wudangshan
      //默认归属是创建者,因为当前是root用户,所以该目录属于root用户,root组的。
    
    [root@localhost zhang]# chown  zhangwuji  wudangshan/  //修改属主归属zhangwuji
    [root@localhost zhang]# ll
    total 4
    drwxr-xr-x 2 zhangwuji root 4096 Nov 10 13:29 wudangshan
    [root@localhost zhang]# chown :zhangwuji wudangshan/  //修改属组归属zhangwuji
    [root@localhost zhang]# ll
    total 4
    drwxr-xr-x 2 zhangwuji zhangwuji 4096 Nov 10 13:29 wudangshan

    //目前wudangshan目录,zhangwuji是除了root的最高所属,也是唯一所属者。也就是说现在wudangshan这个目录除了root和zhangwuji用户,其他人谁都不能动。

    [root@localhost zhang]# su - zhangwuji 
    [zhangwuji@localhost ~]$ cd /zhang/
    [zhangwuji@localhost zhang]$ ll
    total 4
    drwxr-xr-x 2 zhangwuji zhangwuji 4096 Nov 10 13:29 wudangshan
    
    [zhangwuji@localhost zhang]$ chown zhaomin:zhaomin wudangshan/
    chown: changing ownership of `wudangshan/': Operation not permitted  //无修改归属权限
    
    [zhangwuji@localhost zhang]$ chmod 777 wudangshan/  //有修改rwx权限(作为拥有者)
    [zhangwuji@localhost zhang]$ ll
    total 4
    drwxrwxrwx 2 zhangwuji zhangwuji 4096 Nov 10 13:29 wudangshan
    [zhangwuji@localhost zhang]$ exit
    logout

    2、递归修改

    [root@localhost zhang]# ll
    total 4
    drwxrwxrwx 2 zhangwuji zhangwuji 4096 Nov 10 13:29 wudangshan
    [root@localhost zhang]# chown zhaomin:zhaomin wudangshan/ -R  //递归修改属主:属组归属
    [root@localhost zhang]# ll
    total 4
    drwxrwxrwx 2 zhaomin zhaomin 4096 Nov 10 13:29 wudangshan
    
    [root@localhost zhang]# chown zhangwuji.zhangwuji wudangshan/ -R  // : 和 . 形式不同而已
    [root@localhost zhang]# ll
    total 4
    drwxrwxrwx 2 zhangwuji zhangwuji 4096 Nov 10 13:29 wudangshan

    注意:

    shell> ll  test.txt

    -rw-r--r--. 1 502 root  247 Jan 12 10:20 test.txt

    Q:这里为什么显示的是502?不是显示的用户名?

    A:

      因为该文件原来的owner是UID为502这个用户;

      但目前该用户已经被删除了,所以这里显示的是原来用户的UID;

      owner和文件没有绑定的关系。

     

    四、umask命令

    作用:

      The user file-creation mask is set to mode.

      设置用户在创建文件的时候该文件有的默认的权限的一种权限掩码。

    注:

      1、在内核级别,文件的初始权限666

      2、在内核级别,目录的初始权限777

    [root@localhost /]# umask  //查看当前用户的权限掩码

    0022     

    注意:前面的0是特殊权限位

    Q:如何计算?

    A:

      777-022=755:新建目录权限是755

      666-022=644:新建文件权限是644

    也就是说group和others去掉了写的权限

    [root@localhost /]# umask -S  //查看当前用户的权限设置

    u=rwx,g=rx,o=rx

    [root@localhost /]# mkdir weigai
    [root@localhost /]# ll |grep weigai
    drwxr-xr-x    2 root root  4096 Nov 10 14:07 weigai
      //未改,默认权限掩码022,新建目录777-022=755:rwxr-xr-x
    
    [root@localhost /]# umask 077  //直接修改权限掩码,只是临时有效
    
    [root@localhost
    /]# mkdir gaile [root@localhost /]# ll |grep gaile drwx------ 2 root root 4096 Nov 10 14:08 gaile   //
    改了,权限掩码077,新建目录777-077=700:rwx------

    注意:

      除非有特殊需求,不推荐修改系统默认umask。

      若要永久修改:vim  /root/.bashrc等方式添加umask命令修改,让系统自动执行此条命令。

     

    五、隐藏属性

    1、chattr命令:设置文件的隐藏属性

    格式:

      chattr  [+-=]  [a、i]  文件或目录

    常用命令选项:

      R:递归修改

      a:可以增加文件内容,但不能修改和删除

      i:锁定保护文件,写保护,不能修改

    +、-、=分别表示增加、去除、设置参数

    2、lsattr命令:查看文件的隐藏属性

    格式:

      lsattr  [Rda]  文件或目录

    常用命令选项:

      -R:递归查看

      -d:查看目录

    3、文件的写保护

    [root@guili lianxi]# touch biyao
    [root@guili lianxi]# ll
    total 0
    -rw-r--r-- 1 root root 0 Nov 10 17:30 biyao
    
    [root@guili lianxi]# chattr +i biyao  //biyao文件被锁定(写保护)
    
    [root@guili lianxi]# echo shangxinhua>>biyao
    -bash: biyao: Permission denied
    
    [root@guili lianxi]# lsattr biyao  //查看文件的隐藏属性
    ----i--------e- biyao
    [root@guili lianxi]# ll biyao
    -rw-r--r-- 1 root root 8 Nov 10 17:30 biyao
    
    [root@guili lianxi]# chattr +i /etc/passwd
    [root@guili lianxi]# useradd huqishan
    useradd: cannot open /etc/passwd  
      //passwd文件被锁定,因为新建用户就需要向该文件插入新建用户信息,被锁定,所以就无法新建用户。
    
    [root@guili lianxi]# chattr -i /etc/passwd  //-i解锁
    [root@guili lianxi]# useradd huqishan
    [root@guili lianxi]# id huqishan
    uid=921(huqishan) gid=922(huqishan) groups=922(huqishan)

    4、目录的误删保护

    [root@guili lianxi]# mkdir zhangxiaofan
    [root@guili lianxi]# ls
    biyao  zhangxiaofan
    [root@guili lianxi]# chattr +a zhangxiaofan  //添加a属性
    [root@guili lianxi]# lsattr -d  zhangxiaofan  //查看目录-d
    -----a-------e- zhangxiaofan
    
    [root@guili lianxi]# cd zhangxiaofan/
    [root@guili zhangxiaofan]# touch dazhufeng  //可进入可建文件(或目录)
    [root@guili zhangxiaofan]# ls
    dazhufeng
    [root@guili zhangxiaofan]# rm -rf dazhufeng 
    rm: cannot remove `dazhufeng': Operation not permitted  //无法删除

    由上可见,添加隐藏属性a、i,亦有一定的保护数据的功效

     

    六、单独限权

    setfacl命令

      针对任意指定的用户/组使用权限字符分配rwx权限。

    格式:

      setfacl  选项  规则  文件

    常见选项:

      -m:新增或修改

      -x:删除

    查看单独权限:getfacl  文件

    [root@localhost ~]# mkdir dir
    [root@localhost ~]# id zhaomin
    uid=504(zhaomin) gid=504(zhaomin) groups=504(zhaomin)
    [root@localhost
    ~]# setfacl -m u:zhaomin:--- dir [root@localhost ~]# getfacl dir # file: dir # owner: root # group: root user::rwx user:zhaomin:--- group::r-x mask::r-x other::r-x
    [root@localhost
    ~]# setfacl -x u:zhaomin dir [root@localhost ~]# getfacl dir # file: dir # owner: root # group: root user::rwx group::r-x mask::r-x other::r-x
  • 相关阅读:
    ImportError: Matplotlib qt-based backends require an external PyQt4, PyQt5, PySide or PySide2 package to be installed, but it was not found.
    cannot load library 'libportaudio.so.2': libportaudio.so.2: cannot open shared object file: No such file or directory
    如何解决Linux系统下pyaudio安装缺少文件问题error: portaudio.h: 没有那个文件或目录
    完美解决 python ImportError: Failed to import any qt binding
    Linux傻瓜式四步完美安装Python3.7
    为什么诺贝尔奖得主很少有中国人?
    Web前端入门知识
    MySQL通用编程
    其实我想做个诗人
    八皇后问题Python实现
  • 原文地址:https://www.cnblogs.com/geaozhang/p/6920143.html
Copyright © 2011-2022 走看看