文件权限管理

本文详细介绍了Linux文件权限的含义,包括读、写、执行权限及其数字表示。讲解了如何修改文件权限、设置高级权限如SETUID、SETGID和STICKY位,以及如何修改文件的属主和属组。此外,还探讨了ACL访问控制策略的获取和设置,以及如何修改文件属性和处理特殊权限目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、权限的含义:

-rwx-r-xr-x. root root

-rwx-r-xr-x+ root root

第一位表示文件类型

最后面的点“.”表示此文件是在开启selinux的状态下创建的。

加号表示此文件设置有acl权限策略

①读权限—r(read):

目录:可以查看目录中的文件

文件:可以查看文件中的内容

读权限数字表示为4

②写权限—w(write):

目录:可以在此目录中创建、删除、复制、重命名等操作

文件:可以添加或修改文件中的内容

写权限数字表示为2

③执行权限—x(execute):

目录:可以进入或切换到此目录

文件:此文件可以执行

执行权限数字表示为1

④没有权限

‘-’表示没有权限,数字表示为0

二、权限的设置

①修改文件权限

chmod [选项] 权限设置 文件名

常用选项:

-R 表示递归

权限设置:

a.数字形式设置:"r,w,x,-“权限对应数字"4,2,1,0”

	数字形式设置权限为覆盖式操作

b.字符形式:“u,g,o,a"分别代表文件的“属主,属组,其他用户,全部用户”(使用”+,-,="分别对文件进行"增加,删除,赋予"等操作)

	字符设置权限使用a时,a可以省略

②高级权限(了解)

a.冒险位(SETUID)

  • 冒险位,指得是让文件操作者临时拥有文件拥有者的权限

  • 冒险位,一般针对的是命令或者脚本文件

  • 冒险位,用字母表示为s或S;数字表示为4

  • 冒险位设置:chmod u+s 文件名或者 chmod 4XXX 文件名
    补充:冒险位所占位置有其它权限时为s,无其他权限为S.

    [root@localhost ~]# ls -l /etc/shadow
    ---------- 1 root root 2685 3月 10 14:28 /etc/shadow

    ###普通用户没有权限查看此文件
    [root@localhost ~]# su - tom
    上一次登录:二 3月 10 09:10:45 CST 2020从 192.168.216.1pts/2 上
    [tom@localhost ~]$ cat /etc/shadow
    cat: /etc/shadow: 权限不够

    [tom@localhost ~]$ exit
    登出
    [root@localhost ~]# which cat
    /usr/bin/cat
    [root@localhost ~]# ll /usr/bin/cat
    -rwxr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat
    [root@localhost ~]# chmod 4755 /usr/bin/cat

    ###冒险位权限增加
    [tom@localhost ~]$ ll /usr/bin/cat
    -rwsr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat

    [root@localhost ~]# su - tom
    上一次登录:二 3月 10 15:31:35 CST 2020pts/1 上

    ###cat可以临时行驶文件属主权限
    [tom@localhost ~]$ cat /etc/shadow
    root:$6 5 j y U S y o m 6 u D 0 t w 5. 5jyUSyom6uD0tw5. 5jyUSyom6uD0tw5.mPuddDDRaIyEbazfp0qUVTL4TEthIDjRzGtTWxtVCkEdaeYevARq9LNkWgsUD2/o9U5xgcBWe73ktNJPe6Rbh1::0:99999:7:::

    ###取消设置冒险位方法
    chmod u-s /usr/bin/cat

b.强制位(SETGID)

  • 强制位,一般针对目录。如果一个目录拥有强制位,那么任何用户在这个目录内创建的所有文件的属组都为该目录的属组
  • 强制位,用字母表示为s或S;数字表示为2
  • 强制位设置:chmod g+s 文件名 或者 chmod 2xxx 文件名

补充:强制位所占位置有其它权限时为s,无其他权限为S.

[root@localhost tmp]# ll -d ./dir1
drwxr-xr-x 3 root root 82 3月  10 15:56 ./dir1
[root@localhost tmp]# chmod 2775 ./dir1
###强制位权限修改成功
[root@localhost tmp]# ll -d ./dir1
drwxrwsr-x 3 root root 82 3月  10 15:56 ./dir1

[root@localhost tmp]# su - harry
上一次登录:二 3月 10 17:45:28 CST 2020pts/1 上
[harry@localhost ~]$ touch /tmp/dir1/test.txt
[harry@localhost ~]$ mkdir /tmp/dir1/test

###发现harry用户创建的文件和目录的属组为/tmp/dir1目录的属组
[harry@localhost ~]$ ll /tmp/dir1/
总用量 0
drwxrwsr-x 2 harry root 6 3月  10 17:51 test
-rw-rw-r-- 1 harry root 0 3月  10 17:51 test.txt

c.粘滞位(STICKY)

粘滞位,一般针对公共目录,如果一个公共目录具有粘滞位,那么该目录下的文件,只有文件的属主与root用户可以删除。

粘滞位,用字母表示为t或T;数字表示为1

粘滞位设置:chmod o+t 文件名 或者 chmod 1xxx 文件名

[root@localhost tmp]# useradd test01
[root@localhost tmp]# useradd -G test01 test02
[root@localhost tmp]# useradd -g test01 test03

[root@localhost tmp]# su - test01
[test01@localhost ~]$ mkdir /tmp/sticky/test -p
[test01@localhost ~]$ touch /tmp/sticky/test.txt
[test01@localhost ~]$ ll /tmp/sticky/
总用量 0
drwxrwxr-x 2 test01 test01 6 3月  10 18:06 test
-rw-rw-r-- 1 test01 test01 0 3月  10 18:06 test.txt
[test01@localhost ~]$ exit
登出
###给目录增加粘滞位权限
[root@localhost tmp]# chmod 1777 /tmp/sticky/

###附加组内用户无权限删除此目录内文件与目录
[root@localhost tmp]# su - test02
[test02@localhost ~]$ cd /tmp/sticky/
[test02@localhost sticky]$ ll
总用量 0
drwxrwxr-x 2 test01 test01 6 3月  10 18:06 test
-rw-rw-r-- 1 test01 test01 0 3月  10 18:06 test.txt
[test02@localhost sticky]$ rm -rf ./*
rm: 无法删除"./test": 不允许的操作
[test02@localhost sticky]$ exit
登出

###同一个主组内用户也无权限删除其内文件与目录
[root@localhost tmp]# su - test03
[test03@localhost ~]$ rm -rf /tmp/sticky/
rm: 无法删除"/tmp/sticky/test": 不允许的操作
[test03@localhost ~]$ rm -rf /tmp/sticky/test
rm: 无法删除"/tmp/sticky/test": 不允许的操作
[test03@localhost ~]$ rm -rf /tmp/sticky
rm: 无法删除"/tmp/sticky/test": 不允许的操作
[test03@localhost ~]$

③修改默认权限

  • linux中目录的最大权限为0777,文件的最大权限为0666。
  • 默认权限由umask值来控制:
    目录的默认权限为0777对应的权限减去umask值对应的权限,文件的默认权限为0666减去umask值对应的权限。
  • 修改umask值有临时修改和永久修改:

a.临时修改

umask umask值

b.永久修改

在/etc/profile或者/etc/bashrc文件末尾加上"umask umask值"

在~/bashrc文件末尾加上"umask umask值"是只修改当前用户的

三、修改文件属主与属组

①只修改文件的属主:

chown 用户名 文件名

②修改文件的属主和属组:

chown 用户名.组名 文件名

chown 用户名:组名 文件名

chown 用户名. 文件名 //不指定组名,默认修改为用户的主组

chown 用户名: 文件名 //不指定组名,默认修改为用户的主组

③只修改文件的属组:

chown .组名 文件名

chown :组名 文件名

chgrp 组名 文件名

可以加 -R 选项,表示递归

四、ACL访问控制策略(扩展)

①获取文件的ACL策略

语法: getfacl 文件名

②设置ACL策略

语法:

a.添加ACL策略

给用户设置:setfacl [选项] u:用户名:权限 文件名

给用户组设置:setfacl [选项] g:组名:权限 文件名

常用选项:

-m 修改或者设置ACL策略

-R 递归授权,但新建的文件或目录没有策略

-x 去掉某个用户或者某个组的ACL策略;不会删除mask值

-b 删除所有的ACL策略;同时删除文件上的mask值和权限末尾的加号(加号出现的原因在权限的含义里面)

-d 默认ACL策略,只针对目录,该目录下新建的目录或文件都会继承该ACL策略

mask:定义除其他人和所有者外的最大权限

b.删除ACL策略

删除某个用户的ACL策略:

setfacl -x u:用户名 文件名

删除某个用户的ACL策略:

setfacl -x g:组名 文件名

删除文件上的全部策略:

setfacl -b 文件名

五、修改文件属性

chattr [选项] 文件名

常用选项:

使用"+","-"对文件进项增加或者减少属性

a:只允许追加内容,不允许删除或者覆盖

i:锁定,不能删除,不能修改

查看属性:

lsattr 文件名

六、一些特殊权限的目录

/root 0550

/boot 0555

/proc 0555 存储linux系统的进程文件,不可以进行操作

/sys 0555 存储系统的相关信息,不可以进行操作

/tmp 1777

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值