文件权限管理

1. 文件属性

  • 介绍:通过ls -li可以查看文件的长格式信息

  • 范例:

    [root@centos7 /]#ls -li
    203691331 -rw-r--r--. 1 root root 4424 Mar 26 18:47 all.txt
    
    第1列:inode号  (203691331)
    第2列:第1个字符代表文件的类型(总共有7种文件类型 -是普通文件,d是目录等等) 
    第2-10个字符代表文件权限,rw-个是用户的权限、r--用户组的权限、r--后面其他用户的权限 
    第11个字符.与SELINUX相关,暂时不做描述
    第3列:文件的硬连接数(1)
    第4列:文件对应的属主或者用户(root用户)
    第5列:文件对应的属组或者用户组(root用户组)
    第6列:文件大小(4424个字节)
    第7列:文件最后的修改的时间(Mar 26 18:47)
    第8列:文件名 (all.txt)
    

2.修改文件属主和属组

2.1 设置文件的所有者chown

  • 介绍:chown 命令可以修改文件的属主,也可以修改文件属组

  • 格式:

    chown [OPTION]... [OWNER][:[GROUP]] FILE...
    chown [OPTION]... --reference=RFILE FILE...
    
  • 用法:

    OWNER #只修改所有者
    OWNER:GROUP #同时修改所有者和属组
    :GROUP #只修改属组,冒号也可用 . 替换
    --reference=RFILE #参考指定的的属性,来修改(--reference=源文件或者目标文件)
    -R #递归,此选项慎用,非常危险!
    注意:要授权的用户和组名,必须是linux系统里实际存在的
    
  • 范例:只修改所有者

    [root@centos8 data]#cp /etc/fstab f1.txt
    [root@centos8 data]#pwd
    /data
    [root@centos8 data]#ll
    total 4
    -rw-r--r-- 1 root root 709 Dec 18 10:13 f1.txt
    [root@centos8 data]#chown wang f1.txt
    [root@centos8 data]#ll
    total 4
    -rw-r--r-- 1 wang root 709 Dec 18 10:13 f1.txt
    
  • 范例:只修改所属组

    [root@centos8 data]#chown :admins f1.txt
    [root@centos8 data]#ll f1.txt
    -rw-r--r-- 1 wang admins 709 Dec 18 10:13 f1.txt
    
  • 范例:同时修改用户名和所属组

    [root@centos8 data]#chown root.bin f1.txt
    [root@centos8 data]#ll
    total 4
    -rw-r--r-- 1 root bin 709 Dec 18 10:13 f1.txt
    
  • 范例:另外一种同时修改用户名和所属组

    [root@centos8 data]#chown wang:admins f1.txt
    [root@centos8 data]#ll
    total 4
    -rw-r--r-- 1 wang admins 709 Dec 18 10:13 f1.txt
    
  • 范例:备份一个f2.txt文件,使用--reference选项参考饭f1.txt的属性来修改f2.txt的属性

    [root@centos8 data]#cp /etc/issue f2.txt
    [root@centos8 data]#ll
    total 8
    -rw-r--r-- 1 wang admins 709 Dec 18 10:13 f1.txt
    -rw-r--r-- 1 root root 23 Dec 18 10:15 f2.txt
    [root@centos8 data]#chown --reference=f1.txt f2.txt
    [root@centos8 data]#ll
    total 8
    -rw-r--r-- 1 wang admins 709 Dec 18 10:13 f1.txt
    -rw-r--r-- 1 wang admins 23 Dec 18 10:15 f2.txt
    
  • 范例:-R 递归命令的使用:

    [root@centos8 ~]#chown -R wang.admins /data/
    
    [root@centos7 app]#chgrp ma f1 <==将f1的属组直接修改成ma
    [root@centos7 app]#ll
    -rw-r–r–. 1 ma   ma   0 Jul 29 16:27 f1
    -rw-r–r–. 1 ma   ma   0 Jul 29 16:27 f2
    -rw-r–r–. 1 root root 0 Jul 29 16:37 f3
    [root@centos7 app]#chgrp –reference=/app/f3 f1
    [root@centos7 app]#chgrp –reference=/app/f3 f2
    [root@centos7 app]#ll
    -rw-r–r–. 1 ma   root 0 Jul 29 16:27 f1
    -rw-r–r–. 1 ma   root 0 Jul 29 16:27 f2
    -rw-r–r–. 1 root root 0 Jul 29 16:37 f3
    

2.2设置文件的属组信息chgrp

  • 介绍:chgrp 命令可以只修改文件的属组

  • 格式:

    chgrp [OPTION]... GROUP FILE...
    chgrp [OPTION]... --reference=RFILE FILE...
    
  • 选项:

    --reference=RFILE #参考指定的的属性,来修改(--reference=源文件或者目标文件)
    -R #递归,此选项慎用,非常危险!
    
  • 范例:将wang用户的所属组改为admins

    [root@centos8 data]#ll f1.txt
    -rw-r--r-- 1 wang root 709 Dec 18 10:13 f1.txt
    [root@centos8 data]#chgrp admins f1.txt
    [root@centos8 data]#ll f1.txt
    -rw-r--r-- 1 wang admins 709 Dec 18 10:13 f1.txt
    

3.文件权限

3.1文件权限的说明

  • 介绍:文件的权限主要针对三类对象进行定义。

  • 三类对象:

    owner 属主 u
    group 属组 g
    other 其他 o
    • 注意:用户的最终权限,是从左向右进行顺序匹配,即,所有者,所属组,其他人,一旦匹配权限立即
      生效,不再向右查看其权限
    • 注意:任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
    • 注意:匹配用户直接生效
  • 注意: 每个文件针对每类访问者都定义了三种常用权限

    • r: Readable

      ​文件:可使用文件查看类工具获取其内容。(比如:cat,可以获取文件内容)

      目录: 可以使用ls查看此目录中文件列表 。(ls命令)

    • w: Writable

      ​文件:可修改其内容。

      目录:可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关。

    • x: eXcutable

    ​ 文件:可以把此文件提请内核启动为一个进程【可以执行运行的文件(必须是可以运行的文件)】。

    ​ 目录:可以使用ls -l查看此目录中文件元数据(须配合r),可以cd进入此目录。

    ​ X:只给目录x权限,不给文件x权限。

    • 区别:

  • ​ 文件权限可以使用8进制来表示:

  • 文件权限可以用八进制来表示:

    • r:4

    • w:2

    • x:1

      范例:

      rwx=4+2+1=7
      
  • 范例:八进制数字

---:000 00
--x: 001 1
-w-: 010 2
-wx: 011 3
r--: 100 4
r-x: 101 5
rw-: 110 6
rwx: 111 7
  • 范例:
rw-r----- 640:rw-为6,r--为4,---为0
rwxr-xr-x 755:rwx为7,r-x为5,r-x为5

3.2修改文件权限chmod

  • 介绍:chmod可以修改文件权限

  • 格式:

    chmod [ugoa][+ - =] [权限字符] 文件/目录名
    "+"是加上权限
    "-"是减去权限
    "="是直接设置权限
    
    #参考RFILE文件的权限,将FILE的修改为同RFILE
    chmod [OPTION]... --reference=RFILE FILE...
    
    说明:
    MODE:who opt permission
    who:u,g,o,a
    opt:+,-,=
    permission:r,w,x
    修改指定一类用户的所有权限
    u= g= o= ug= a= u=,g=
    修改指定一类用户某个或某个权限
    u+ u- g+ g- o+ o- a+ a- + -
    -R: 递归修改权限(递归的意思是一般指的改变目录及其子目录和文件 由后往前层层递归)
    
  • 范例:

    chown root:admins testfile
    chmod u+wx   "表示给user用户添加wx权限"
    chmod g-r    "表示给group去除w权限"
    chmod o=rx   "给予other用户rx权限"
    chmod -R g+rwX /testdir  "表示递归修改testdir里面的用户组增加权限rwx"
    chmod 600 file  "600=rw-------" "表示给文件授予用户权限rw-,用户组与附加组没有权限"
    chown 用户名:组名 文件路径 
    chown xiaomi:xiaomi /temp/temp1   '就是把temp下的temp1的用户名和用户组改成xiaomi和xiaomi(只修改了temp1的属组).”
    chown -R xiaomi:xiaomi /temp/temp1   "就是把temp下的temp1下的所有文件的用户名和属组都改成xiaomi和xiaomi"
    
  • 范例:递归修改权限

    [root@centos8 data]#ll dir
    total 8
    -rw-r--r-- 1 root root 709 Dec 18 11:09 f1.txt
    -rwxr--r-- 1 root root 709 Dec 18 11:09 f2.txt
    drw-r--r-- 2 root root 6 Dec 18 11:15 subdir
    [root@centos8 data]#ll -d dir
    drwxr-xr-- 3 root root 48 Dec 18 11:15 dir
    
    "d表示文件类型为目录文件"
    "rwx表示文件拥有者对它的权限:可读,可写,可执行"
    "r-x表示文件拥有者的所属组对它的权限:可读,不可写,可执行"
    "r--表示文件拥有者的附加组(相对于上面两类用户)对它的权限:可读,不可写,可执行"
    
    [root@centos8 data]#chmod -R a+X dir   "在dir目录递归增加只给目录执行权限,不给文件执行权限"
    [root@centos8 data]#ll -d dir
    drwxr-xr-x 3 root root 48 Dec 18 11:15 dir
    [root@centos8 data]#ll dir
    total 8
    -rw-r--r-- 1 root root 709 Dec 18 11:09 f1.txt
    -rwxr-xr-x 1 root root 709 Dec 18 11:09 f2.txt
    drwxr-xr-x 2 root root 6 Dec 18 11:15 subdir
    
  • 练习:执行 cp /etc/issue /data/dir 所需要的最小权限?

    /bin/cp 需要x权限
    /etc/ 需要x权限
    /etc/issue 需要r 权限
    /data 需要x权限
    /data/dir 需要w,x 权限
    

3.3新建文件和目录的默认权限

3.3.1Umask

  • 介绍:umask 的值可以用来保留在创建文件权限

  • 实现方式:

    • 新建文件的默认权限: 666-umask(如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶
      数不变)

    • 新建目录的默认权限: 777-umask。

    • 非特权用户umask默认是 002

    • root的umask 默认是 022

  • umask的查看:

    umask
    #模式方式显示
    umask –S
    #输出可被调用
    umask –p
    
  • 修改umask

    umask #
    
    • 范例:

      [root@centos8 ~]# umask #
      0022
      [root@centos8 ~]#umask
      0022
      [root@centos8 ~]#umask -S
      u=rwx,g=rx,o=rx
      [root@centos8 ~]#umask -p
      umask 0022
      
  • 持久保存umask

    全局设置: /etc/bashrc
    用户设置:~/.bashrc
    
    • 范例:

      [root@centos8 ~]#umask
      0022
      [root@centos8 ~]#( umask 666; touch /data/f1.txt )
      [root@centos8 ~]#umask
      0022
      [root@centos8 ~]#ll /data/f1.txt
      ---------- 1 root root 0 Mar 27 14:55 /data/f1.txt
      

4.文件权限总结:

  • 对目录只有执行权限,可以进入到该目录,但不能看到文件名,如事先知道该目录下已存在的文件(有读权限)或者目录(有执行权限)可以进行复制操作

  • 对目录只有读权限,可以访问该目录下的文件名,但不能访问文件的原数据

  • 普通用户对文件有读权限,则可以复制该文件

  • 普通用户对目录有读、执行权限,则可以复制目录下可读的文件

5.练习

  • 当用户docker对/testdir 目录无执行权限时,意味着无法做哪些操作?
答:能查看目录的元数据信息,不能进入目录,用ls命令能看到目录下的文件面,但不能查看文件的元数据信息。
  • 当用户mongodb对/testdir 目录无读权限时,意味着无法做哪些操作?
答:能查看目录的元数据信息,能进入目录,但查看不了目录里面的内容
  • 当用户redis 对/testdir 目录无写权限时,该目录下的只读文件file1是否可修改和删除?
答:可以查看file1的内容,不能修改和删除。
  • 当用户zabbix对/testdir 目录有写和执行权限时,该目录下的只读文件file1是否可修改和删除?
答:可以修改和删除file1文件,因没有读权限,所以没法用ls命令查看、也没法补全路径
  • 复制/etc/fstab文件到/var/tmp下,设置文件所有者为tomcat读写权限,所属组为apps组有读写权限,其他人无权限
cp /etc/fstab /var/tmp/
chown tomcat:apps /var/tmp/fstab
chmod 660 /var/tmp/fstab
  • 误删除了用户git的家目录,请重建并恢复该用户家目录及相应的权限属性
cp -r /etc/skel/ /home/git 
chmod 700 /home/git  
chown -R git:git /home/git
posted @ 2020-03-31 16:52  Coolcoc  阅读(445)  评论(0)    收藏  举报