【Linux系列教程】权限
一、查看权限信息
1.查看文件和目录的权限信息
[root@localhost ~]# ls -l /etc/fstab #查看文件的权限
- rw- r-- r--. 1 root root 465 7月 5 13:51 /etc/fstab
属主用户权限 属组权限 其他用户 属主用户 属组
[root@localhost ~]# ls -ld /etc/ #查看目录的权限
drwxr-xr-x. 148 root root 8192 7月 13 09:08 /etc/
2.常规权限
- r 读
- w 写
- x 执行
-
针对文件
- r
- 查看文件内容(cat/head/tail/more/less/grep)
- w
- 修改文件内容(vim)
- x
- 脚本文件
- r
-
针对目录
- 用户要正常查看目录下的文件,必须同时拥有rx权限
- r
- 查看目录下的文件 ( ls 目录名称)
- w
- 修改目录下的文件 (touch, rm, mv)
- x
- 可正常切换目录(cd)
- r
二、修改文件、目录的权限
1.修改属主和属组
# chown 用户名[.用户组名] 文件名称
[root@localhost ~]# chown zzj.caiwu /opt/test/1.txt #修改属主和属组
[root@localhost ~]# ls -l /opt/test/1.txt
-rw-r--r--. 1 zzj caiwu 0 7月 13 10:37 /opt/test/1.txt
[root@localhost ~]# chown martin /opt/test/2.txt #修改属主
[root@localhost ~]# ls -l /opt/test/2.txt
-rw-r--r--. 1 martin root 0 7月 13 10:37 /opt/test/2.txt
[root@localhost ~]# chown .martin /opt/test/2.txt #修改属组
[root@localhost ~]# ls -l /opt/test/2.txt
-rw-r--r--. 1 martin martin 0 7月 13 10:37 /opt/test/2.txt
2 -R递归修改属主或属组
[root@localhost ~]# chown -R zzj.caiwu /opt/bj #递归修改文件或者目录的属主和属组(包括下面的所有文件或目录)
3.修改属组
# chgrp 用户组名 文件名称
[root@localhost ~]# chgrp caiwu /opt/test/3.txt #修改属组
[root@localhost ~]# ls -l /opt/test/3.txt
-rw-r--r--. 1 root caiwu 0 7月 13 10:37 /opt/test/3.txt
4.修改权限
# chmod {augo}{+-=}{rwx} 文件名称
或
# chmod xxx 文件名称 #xxx代表数字
- a all 所有
- u user 属主
- g group 属组
- o other 其他用户
rwx分别代表的数字
- r 代表4
- w 代表2
- x 代表1
[root@localhost ~]# chmod g+w /opt/test/1.txt #给1.txt这个文件属组添加修改权限
[root@localhost ~]# ls -l /opt/test/1.txt
-rw-rw-r--. 1 martin caiwu 0 7月 13 10:37 /opt/test/1.txt
[root@localhost ~]# chmod g-rw,o+x /opt/test/1.txt #给1.txt这个文件属组用户取消读写权限,其他用户新增执行权限
[root@localhost ~]# ls -l /opt/test/1.txt
-rw----r-x. 1 martin caiwu 0 7月 13 10:37 /opt/test/1.txt
[root@localhost ~]# chmod 600 /opt/test/2.txt #给2.txt文件属主用户添加读写权限,属组和其他用户没有权限
[root@localhost ~]# ls -l /opt/test/2.txt
-rw-------. 1 martin root 0 7月 13 10:37 /opt/test/2.txt
5. -R递归修改权限
[root@localhost ~]# chmod -R 700 /opt/bj/ #递归修改目录下(所有文件和目录)包括目录本身的权限
三、facl文件访问控制列表
- 针对单个用户、单个用户组设置权限
1.单个用户
# setfacl -m u:用户名:权限 文件名称
[root@localhost ~]# setfacl -m u:user4:r /opt/test/file03 #file03这个文件,user4用户添加只读权限
2.单个用户组
# setfacl -m g:用户组名:权限 文件名称
[root@localhost ~]# setfacl -m g:jishu:rwx /opt/test/file03 #file03这个文件,jishu组添加啊所有权限
3.查看权限
# getfacl 文件名称
[root@localhost ~]# getfacl /opt/test/file03
getfacl: Removing leading '/' from absolute path names
# file: opt/test/file03
# owner: user1
# group: user3
user::rw-
user:user4:r--
group::rwx
mask::rwx
other::r-x
4.撤销权限
# setfacl -x u:用户名 文件名称 #删除用户的权限
# setfacl -x g:用户组名 文件名称 #删除用户组的权限
[root@localhost ~]# setfacl -x u:martin /opt/test/file04 #删除用户martin对file04这个文件的所有权限
[root@localhost ~]# getfacl /opt/test/file04
getfacl: Removing leading '/' from absolute path names
# file: opt/test/file04
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--
四、特殊权限(重要)
1.suid
- 针对脚本文件、命令设置
- 作用
- 当普通用户运行命令期间,会临时获取到该命令对应的属主用户对操作系统的使用权限
- 作用
# chmod u+s /usr/bin/passwd #添加suid权限
# chmod u-s /usr/bin/passwd #撤销suid权限
[root@localhost ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd
2.sgid
- 针对目录设置
- 作用
- 在目录下创建文件时,文件会自动继承目录的属组
- 作用
# chmod g+s /opt/linux #添加sgid权限
# chmod g-s /opt/linux #撤销sgid权限
[root@localhost ~]# chown .jishu /opt/linux
[root@localhost ~]# chmod g+s /opt/linux #添加sgid权限
[root@localhost ~]# ls -ldh /opt/linux/
drwxr-srwx. 2 root jishu 201 7月 13 14:50 /opt/linux/
3.sticky bit
- 针对目录设置
- 作用
- 防止普通用户相互删除文件
- 作用
# chmod o+t /opt/work/ #添加sticky bit权限
# chmod o-t /opt/work/ #撤销sticky bit权限
[root@localhost ~]# chmod o+t /opt/work/ #添加sticky bit权限
[root@localhost ~]# ls -ldh /opt/work/
drwxrwxr-t. 2 root IT 50 7月 13 14:58 /opt/work/
4.特殊权限数字代号
- suid 4
- sgid 2
- sticky bit 1
[root@localhost ~]# chmod 3777 /opt/work #第一位数字代表特殊权限,后三位代表普通权限
#上面命令解释:在opt下work这个目录,属主用户拥有全部权限,属组和其他用户拥有全部权限,目录下以后创建的所有文件和目录都会跟随work文件夹的属组,并且同一组用户创建文件之间不能互相删除彼此的文件(自己的文件可以删除),只有文件夹属主和root用户可以删除全部文件
五、umask反掩码
- 影响文件、目录的默认权限
1.查看
# umask
- root管理员
- 默认值: 0022
- 文件: 666 -0022=0644
- 目录: 777 -0022=0755
- 默认值: 0022
- 普通用户
- 默认值: 0002
- 文件:666 -0002=0664
- 目录:777 -0002=0775
六、文件的隐藏属性
1.查看文件的隐藏属性
# lsattr 文件
2.添加文件的隐藏属性
- -i 防止文件被删除
[root@localhost ~]# chattr +i /opt/a.txt
[root@localhost ~]# rm -rf /opt/a.txt
rm: 无法删除"/opt/a.txt": 不允许的操作 #发现root用户也无法删除文件
3删除文件的隐藏属性
[root@localhost ~]# chattr -i /opt/a.txt
[root@localhost ~]# rm -rf /opt/a.txt #正常删除