【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 执行
  1. 针对文件

    1. r
      • 查看文件内容(cat/head/tail/more/less/grep)
    2. w
      • 修改文件内容(vim)
    3. x
      • 脚本文件
  2. 针对目录

  • 用户要正常查看目录下的文件,必须同时拥有rx权限
    1. r
      • 查看目录下的文件 ( ls 目录名称)
    2. w
      • 修改目录下的文件 (touch, rm, mv)
    3. x
      • 可正常切换目录(cd)

二、修改文件、目录的权限

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
  • 普通用户
    • 默认值: 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	#正常删除