文件权限管理
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