Linux 文件权限详解

目录

一、文件的一般权限

1、针对三类对象进行定义

2、针对每类访问者定义了三种主要权限

二、修改权限

1、修改文件或目录的权限 chmod

2、对文件和目录来说,rwx有着不同的作用和含义

1)对文件:无意义权限 -wx -w-

2)对文件夹:无意义权限 rw- -w-

3、修改文件或目录的属主和属组

1)修改文件或目录的所属者

2)修改文件或目录的属组

三、ACL权限

四、文件和目录的特殊权限

1、SUID -- 让普通用户临时获取root权限

2、SGID -- 共享目录权限

3、Sticky Bit

五、修改文件属性 chattr

六、umask


一、文件的一般权限

Linux 文件权限详解_第1张图片

1、针对三类对象进行定义

  • owner        属主(u)
  • group         属组(g)
  • other          其他(o)

2、针对每类访问者定义了三种主要权限

  • r        Read 读
  • w       Write 写
  • x        eXecute 执行

Linux 文件权限详解_第2张图片

rwx = 111 = 7
rw- = 110 = 6
r-x  = 101 = 5
r--   = 100 = 4

注意:root账户不受文件权限的读写限制,执行权限受限制

二、修改权限

1、修改文件或目录的权限 chmod

        ——change mode

格式:1)chmod [选项] [ugoa] [+-=] [rwx] 文件或目录...

        :2)chmod [选项] nnn 文件或目录

        ==>chmod [选项] 权限字 文件

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

权限字:  

  • ugoa :表示权限设置所针对的用户类别,可以是其中字母中的一个或组合,u(user)表示文件或目 录的属主(所有者);g(group)表示属组内的用户;o(others)表示其他用户;a(all)表示所有用户(即 u+g+o)。
  • +或-或= :表示设置权限的操作动作,+代表添加某个权限;-代表取消某个权限;=表示只赋予给定 的权限,并取消原有的权限。
  • rwx :用字符形式表示的所设置的权限,可以是其中一个字母或组合。
  • nnn :用三位八进制数字表示的权限。

第一种方式:

Linux 文件权限详解_第3张图片

Linux 文件权限详解_第4张图片

Linux 文件权限详解_第5张图片

Linux 文件权限详解_第6张图片

第二种方式:

Linux 文件权限详解_第7张图片

Linux 文件权限详解_第8张图片

2、对文件和目录来说,rwx有着不同的作用和含义

Linux 文件权限详解_第9张图片

1)对文件:无意义权限 -wx -w-

        (wx权限是建立在r权限之上,当用了r的权限时,wx的权限才有意义)

2)对文件夹:无意义权限 rw- -w-

        (当文件具有x权限的时候w权限才有意义,对于文件夹来说 r--和rw-没有区别都是只能显示文件内容)

3、修改文件或目录的属主和属组

1)修改文件或目录的所属者

        格式chown [选项] 新属主[:[新数组]] 文件或目录

        选项-R 可递归设置指定目录下的全部文件(包括子目录和子目录中的文件)的所属关系。

Linux 文件权限详解_第10张图片

Linux 文件权限详解_第11张图片

2)修改文件或目录的属组

        格式

                1)chown [选项] :新属组 文件或目录……

                2)chgrp [选项] 新属组 文件或目录……        (change group修改文件的组信息)

        ===>chown 用户:组 文件名

                 chown 用户.组 文件名

                 chown 用户 文件名 

                 chgrp 用户组 文件

        选项:-R        递归修改权限 

Linux 文件权限详解_第12张图片

三、ACL权限

        ——给指定的用户指定目录分配指定的权限

        查看ACL权限:getfacl 文件名

        设定ACL权限:setfacl [选项] [u:用户名:权限] 文件名

                选项:

                        -m        添加扩展权限 【如setfacl -m u:redhat:rwx 123.txt】

                        -x         删除指定的ACL扩展权限

                        -b         清空所有的ACL扩展权限

                        -d         设定默认 ACL 权限 只对目录生效 指目录中新建立的文件拥有此默认权限

                        -k         删除默认ACL权限

                        -R        递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效

#给用户和用户组添加ACL权限
给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名
给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名
#通过加上选项 -R 递归设定文件的 ACL 权限,所有的子目录和子文件也会拥有相同的 ACL 权限
setfacl -Rm u:用户名:权限 -R 文件名
# 如果给父目录设定了默认的 ACL 权限,那么父目录中所有新建的子文件会继承父目录的 ACL 权限
setfacl -m d:u:用户名:权限 文件名
setfacl -md u:用户名:权限 文件名
[root@localhost ~]# setfacl -m u:new_user:rwx a
[root@localhost ~]# getfacl a
# file: a
# owner: root
# group: root
user::rw-
user:new_user:rwx
group::r--
mask::rwx
other::r--

#删除指定用户的 ACL 权限

setfacl -x u:用户名 文件名

#删除指定用户组的 ACL 权限

setfacl -x g:组名 文件名

#删除文件的所有 ACL 权限

setfacl -b 文件名 

# 当会用-x删除扩展权限时,虽然权限已经删除掉了 但此时使用ll还能看到.的位置上是一个+,如果想要变回.则取消使用-b
[root@localhost ~]# setfacl -x u:new_user a
[root@localhost ~]# getfacl a

Linux 文件权限详解_第13张图片

Linux 文件权限详解_第14张图片

四、文件和目录的特殊权限

1、SUID -- 让普通用户临时获取root权限

rws------.

当设置了SUID权限到可执行文件上时,假如文件本身是rwx------.,此时就会变为rws------.

当普通用户运行 u权限具有s的可执行文件时(即该程序的权限为-rwsr-xr-x.),普通户在程序的运行过程中临时具备root权限,所以普通户在运行passwd命令时可以,修改/etc/shadow文件

#cat可执行文件本身全显示rwxr-xr-x,也就是说普通用户无法通过cat命令阅读权限不允许的文件
#当使用suid将cat命令权限改为 rwsr-xr-x时,普通用户在使用cat时可以临时获取root权限,这时普通户可以阅读任何文件
[root@localhost tmp]# chmod u+s /usr/bin/cat
[root@localhost tmp]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 36320 Jan  6  2023 /usr/bin/cat
[root@localhost tmp]# cat 123.txt
123

suid仅对二进制文件有效。

在执行过程中,调用者会暂时获得该文件的所有者权限。

该权限只在程序执行的过程中有效。

2、SGID -- 共享目录权限

SGID权限一般赋予给目录,任何用户管在该目录中创建新文件,这个新文件的属组都是拥有SGID这个目录的属组

当设置了SGID权限到文件夹上时,假如文件夹本身是---rwx---.,此时就会变为---rws---.

一般用于协同工作,共同在同一目录下进行文件管理。

#任意用户创建的文件,该文件的属组本应属于该用户的基本组
[qqqq@localhost tmp]$ mkdir qqqqDir
[qqqq@localhost tmp]$ mkdir test
[qqqq@localhost tmp]$ touch test/a
[qqqq@localhost tmp]$ ll test/a
-rw-r--r--. 1 qqqq qqqq 0 Sep 24 21:21 test/a

#当目录具有SGID权限时,任何用户在该目录下创建新文件,文件的属组都会变为用户SGID权限的目录的属组。
[qqqq@localhost tmp]$ chmod g+s qqqqDir/
[qqqq@localhost tmp]$ chmod g=rws qqqqDir/
[qqqq@localhost tmp]$ ll qqqqDir/ -d
drwxrwSr-x. 2 qqqq qqqq 6 Sep 24 21:12 qqqqDir/
[qqqq@localhost tmp]$ cd qqqqDir/
[qqqq@localhost qqqqDir]$ touch a
[qqqq@localhost qqqqDir]$ ll a
-rw-r--r--. 1 qqqq qqqq 0 Sep 24 21:14 a

3、Sticky Bit 粘滞位

当设置了SBit权限到文件夹上时,假如文件夹本身是------rwx.,此时就会变为------rwt.

但目录具有sbit权限时,在文件中的文件只能被文件的所有者删除

#使用redhat创建个test目录 权限给满 这时任何人都可以在这个目录中删除任何文件
[redhat@RHEL tmp]$ mkdir test
[redhat@RHEL tmp]$ chmod 777 test/
[redhat@RHEL tmp]$ ll test/ -d
drwxrwxrwx. 2 redhat redhat 6 Sep 24 11:55 test/
[redhat@RHEL tmp]$ touch test/a
#此时普通用户还可以删除其他用户的文件
[caixukun@RHEL test]$ rm -rf a
#当设置了粘滞位sticky bit权限后,普通用户只能删除自己的文件,别人不可以。
[redhat@RHEL tmp]$ chmod a=rwxrwxrwt test/
[redhat@RHEL tmp]$ ll test/ -d
drwxrwxrwt. 2 redhat redhat 6 Sep 24 11:56 test/
[redhat@RHEL tmp]$ touch test/a
#此时普通用户就不可以删除其他人的文件了
[caixukun@RHEL test]$ rm -rf a
rm: cannot remove 'a': Operation not permitted

为文件或目录添加三种特殊权限同样可以通过chmod命令来实施,使用“u±s”、“g±s”、“o±t”的字符权限模 式分别用于添加和移除SUID、GUID、sticky权限。

若使用数字形式的权限模式,可采用“nnnn”格式的四位八进制数字表示,其中:后面三位是一般权限的数 字表示,前面第一位则是特殊权限的标志数字:

0——表示不设置特殊权限

1——表示只设置sticky

2——表示只设置GUID权限

3——表示只设置SGID和sticky权限

4——表示只设置SUID权限

5——表示只设置SUID和sticky权限

6——表示只设置SUID和SGID

7——表示同时设置SUID、GUID、sticky3种权限

五、修改文件属性 chattr

        ——change attribute

        格式:chattr [选项] 文件名

        选项:

              +a 不可修改 -a拿掉不可修改的属性(root不可以删)

              +i 表示只读 -i取消只读

              +d 不可删除 -d取消不可删除(root可以删)

六、umask

        ——权限掩码

        权限掩码直接影响到新建文件的权限

        新建文件的权限时 666 = rw-rw-rw-

​                                      666 - 权限掩码 rw-r--r--

        新建目录的默认权限=0777-umask值

[root@localhost ~]# umask //查看当前用户的umask权限
0022
#临时赋予权限掩码
[root@RHEL tmp]# umask 000

#永久性质的权限掩码设置 可以在.bashrc .bash_profile 添加 umask 000
[root@localhost ~]# vim .bashrc
#重新加载配置
[root@localhost ~]# source .bashrc

另一种方式:
#修改shell umask值(永久)
[root@localhost ~]# vim /etc/profile
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
[root@localhost ~]# source /etc/profile //立即在当前shell中生效

Linux 文件权限详解_第15张图片

# 在/etc/login.defs中记录权限掩码等系统配置(轻易不要修改)
[root@localhost ~]# vim /etc/login.defs

 

你可能感兴趣的:(RHCSA,linux,运维,服务器)