文件的权限

一、基本概念


文件权限是指文件的访问控制,即哪些用户可以访问文件并执行什么样的操作。对某个文件执行某种操作,必须具有对应的权限方可执行成功。

[root@centos7 ~]#ll
drwxr-xr-x. 2 root root    6 Aug  2  2022 Downloads
-rw-r--r--. 1 root root   91 Feb 21 10:56 f1

利用ls -l命令可以看到某个文件或目录的权限,它以显示数据的第一个字段为准。第一个字段由10个字符组成,如下:


在这里插入图片描述

第一位表示文件类型,-表示文件,d表示目录
2-4位表示文件所有者的权限,u权限
5-7位表示文件所有者所属组成员的权限,g权限
8-10位表示所有者所属组之外的用户的权限,o权限
2-10位的权限总和有时称为a权限


1.三个用户

Linux下权限的属组有 所有者群组其它组 三种。每个文件都可以针对这三个属组,设置不同的rwx(读写执行)权限。

u文件所有者(owner):建立文件或者目录的用户 。
g组用户(group):文件所属组群中的所有用户。
o其他用户(other):既不是文件所有者,也不是同组用户的其他用户。


2.三个权限

r读取权限:
文件:浏览文件(cat、more、less
目录:目录中内容的权限 (ls

w写入权限:
文件:修改文件内容的权限 (vim)
目录:删除、添加和重命名目录内文件的权限(mv/rm/cp)

x执行权限:
文件:对可执行文件而言,是允许执行的权限./
目录:进入目录的权限(cd)。


通常情况下:
一个文件只能归属于一个用户和组,如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。


文件夹必须有执行权限

二、模式法


1.谁-操作-权限

每个Linux文件具有四种访问权限:可读r、可写w、可执行x和无权限-


谁—操作—权限:

人:
所有者(user) —u
所属组(group)—g
其他人(other)—o
所有人(all)—a


操作:
增加权限 —+
减少权限 —
赋予权限 —=


权限:
读取权限—r
写入权限—w
执行权限—x


案例1:chmod u+r

root@centos7 a]#ll f1
----------. 1 root root 83 Feb 25 21:13 f1
[root@centos7 a]#chmod u+r f1
[root@centos7 a]#ll f1
-r--------. 1 root root 83 Feb 25 21:13 f1

可以看出 f1文件的所有者增加了读(r)的权限。读、写、执行增加权限同样。


案例2:chmod g+w

[root@centos7 a]#ll f1
-r--------. 1 root root 83 Feb 25 21:13 f1
[root@centos7 a]#chmod g+w f1
[root@centos7 a]#ll f1
-r---w----. 1 root root 83 Feb 25 21:13 f1

可以看出 f1文件的所属组增加了写(w)的权限。

案例3:chmod o+x

[root@centos7 a]#ll f1
-r---w----. 1 root root 83 Feb 25 21:13 f1
[root@centos7 a]#chmod o+x f1
[root@centos7 a]#ll f1
-r---w---x. 1 root root 83 Feb 25 21:13 f1

可以看出 f1文件的其他组增加了执行(x)的权限。

案例4:chmod a= f1

[root@centos7 a]#chmod a= f1
[root@centos7 a]#ll f1
----------. 1 root root 83 Feb 25 21:13 f1

可以看出 f1文件的其他组增删除了所有的权限。

案例5:chmod u=rw,go=rw f1

[root@centos7 a]#ll f1
----------. 1 root root 83 Feb 25 21:13 f1
[root@centos7 a]#chmod u=rw,go=rw f1
[root@centos7 a]#ll f1
-rw-rw-rw-. 1 root root 83 Feb 25 21:13 f1

混合命令增加权限,可以看到f1文件权限变为-rw-rw-rw-,说明可以直接使用u|g|o = r|w|x的方式直接修改文件权限。

案例6:chmod u+x,go-w

[root@centos7 a]#ll f1
-rw-rw-rw-. 1 root root 83 Feb 25 21:13 f1
[root@centos7 a]#chmod u+x,go-w f1
[root@centos7 a]#ll f1
-rwxr--r--. 1 root root 83 Feb 25 21:13 f1

可以看到f1文件权限变为-rwxr--r--,说明可以直接使用u|g|o +|- r|w|x的方式直接给指定身份添加或删除文件权限。

案例7:chomod a-x

[root@centos7 a]#ll f1
-rwxr-xr-x. 1 root root 83 Feb 25 21:13 f1
[root@centos7 a]#chmod a-x f1
[root@centos7 a]#ll f1
-rw-r--r--. 1 root root 83 Feb 25 21:13 f1

可以看到tf1文件权限变为-rw-r--r--,这里a代表的是所有用户的意思,所以直接将owner、group、others的权限都删去了x权限。


三、数字法


1.r=4、w=2、x=1

在这里插入图片描述二进制表示:相对应的权限位,有权限表示为1,无权限表示0,然后转换为八进制表示。

rwx=7
2^0=1 x
2^1=2 w
2^2=4 r

可以看见r w x的权限,对应数字4、2、1

数字法权限:
r —4
w—2
x—1


将所有的权限用二进制形式表现出来,并进一步转变成八进制数字
rwx = 111 = 7      #4+2+1
rw- = 110 = 6      #4+2+0
r-x = 101 = 5      #4+0+1
r-- = 100 = 4      #4+0+0
-wx = 011 = 3      #0+2+1
-w- = 010 = 2      #0+2+0
--x = 001 = 1      #0+0+1
--- = 000 = 0      #0+0+0

案例1:chmod 670

670对应的所有者读(r)写(w)权限,组用户读(r)写(w)执行(x),其他无权限。

[root@centos7 a]#ll f1
----------. 1 root root 83 Feb 25 21:13 f1
[root@centos7 a]#chmod 670 f1
[root@centos7 a]#ll f1
-rw-rwx---. 1 root root 83 Feb 25 21:13 f1

案例2:chmod 777

777是最大权限,全部都是读(r)写(w)执行(x)。

[root@centos7 a]#chmod 777 f1
[root@centos7 a]#ll f1
-rwxrwxrwx. 1 root root 83 Feb 25 21:13 f1

一旦有奇数,必有执行权限。


在这里插入图片描述


Chmod -R 777 f1
-R 递归使目录下的所有文件和目录,统一设置。


四、文件的判断方式

文件判断方式
1)先看文件所有者,是所有者就不看组了,直接生效。

2)再看组,判断是否在用户组。

3)最后是other。

权限是最终的结果,还是看用户。

自己的所属文件,自己可以改模式。 管理员root不受控制(读写),执行权限例外


任何用户无执行权限,将无法执行。
任何人有执行权限,root就能执行。
执行权限一般慎用。
至少得有一个执行权限


对目录写权限,才能删里面的内容
对目录有权限,才能修改里面的内容,目录的内容就是里面的文件名字。


对目录的含义
① 无读(r):无法看目录的文件列表,可以cd进去,可读文件内容
② 只写:没有用,不能创建,也不能删除
③ 无执行(x):不可以cd进到目录内,不可读目录内文件内容,在外面可以看见文件名字,属性看不见。


目录的执行权限是基本权限,通常会有。 一般给用户,是rx同时给,要不都给,要不都不给。

程序能不能运行,在于有没有执行权限,和读权限无关。

五、umask

umask 命令允许设定

umask的作用是在用户登录Linux系统环境下,设置用户创建目录和文件的初始化权限。
文件默认权限 666 目录默认权限 777。

文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相同的umask值中的数字。

[root@centos7 a]#vim /etc/profile
 ...省略...
 60     umask 002
 61 else
 62     umask 022
 63 fi
 
[root@centos7 a]#umask
0022

文件默认权限=666-umask值 666-022=644
目录默认权限=777-umask值 777-022=755


六、文件的特殊权限

1.SUID

Set UID,简称为SUID特殊权限。SUID是为了使“没有取得特权用户要完成一项必须要有特权才可以执行的任务”而产生的。
一般用于给可执行的程序或脚本文件进行设置,其中SUID表示对属主用户增加SET位权限。

当看到文件拥有者owner的x权限上有s标志,此时称为SUID特殊权限。

[root@centos7 ~]#ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /usr/bin/passwd
[root@centos7 ~]#

特性:


SUID权限仅对二进制程序(命令)有效,对shell script和目录无效。
用户对于该程序需要具有x的可执行权限。
此权限仅在执行该程序的过程中有效。
执行者将具有该程序拥有者(owner)的权限。(普通用户具有临时root权限执行此命令)


2.SGID

SGID是为了使“没有取得特权用户要完成一项必须要有特权才可以执行的任务”而产生的。

一般用于给可执行的程序或脚本文件进行设置,SGID表示对属组内用户增加SET位权限。执行文件被设置了,任何用户执行该文件时,将获得该文件属主、属组账号对应的身份。

如果一个文件被设置了SUID或SGID位,会分别表现在所有者或同组用户的权限的可执行位上;如果文件设置了suid还设置了x(执行)位,则相应的执行位表示为s(小写)。但是,如果没有设置x位,它将表示为S(大写)。如:

1、-rwsr-xr-x 表示设置了suid,且拥有者有可执行权限
2、-rwSr--r-- 表示suid被设置,但拥有者没有可执行权限
3、-rwxr-sr-x 表示sgid被设置,且群组用户有可执行权限
4、-rw-r-Sr-- 表示sgid被设置,但群组用户没有可执行权限

命令如下:

chmod u+s   文件名 	设置suid位
chmod u-s   文件名 	去掉suid设置
chmod g+s   文件名 	设置sgid位
chmod g-s   文件名	去掉sgid设置

3.SBIT

SBIT主要的作用是禁止文件的其他人删除、修改文件。

说明:
针对的是目录,对文件是无效的。

权限设定

如果有执行权限rwt显示。
如果没有执行权限rwT显示。

chmod o+t   文件名 	设置SBIT位
chmod 0-t   文件名 	去掉SBIT设置

七、ACL

ACL:是文件控制访问,文件的权限除了所有者、所属组,其他人的权限之外,还有一个额外的控制访问.


setfacl
命令用于设置文件控制访问权限。

语法:setfacl+【选项】+【ugo】:【用户】:【rwx】+文件名

选项:

-m:添加acl权限
-x:取消一条acl权限
-b:取消文件的acl权限
-d:默认的acl权限
-R:递归acl全向


getfacl:
命令用于查看默认的acl权限

作用:

语法:getfacl+文件名

[root@centos7 a]#setfacl -m u:jack:rwx f2
[root@centos7 a]#getfacl f2
# file: f2
# owner: cyan
# group: root
user::rw-
user:cyan:rwx
user:jack:rwx
group::r--
mask::rwx
other::r--

添加ACL的文件,后面带个+

[root@centos7 a]#ll f2
-rw-rwxr--+ 1 cyan root 178189 Mar 19 21:50 f2

Setfacl 能改变基础权限,使用请注意


八、权限修改

chmod 修改权限
chown 修改属主,组
chgrp 修改数组

-R递归使目录下的所有文件和目录,统一设置。

案例1 chown

命令
chown 用户 文件
chown 用户.组 文件

root@centos7 a]#ll
-rw-r--r--.   1 root root  178189 Mar 19 21:50 f2
[root@centos7 a]#chown cyan f2
[root@centos7 a]#ll
-rw-r--r--.   1 cyan root  178189 Mar 19 21:50 f2
[root@centos7 a]#chown cyan.cyan f2
[root@centos7 a]#ll
-rw-r--r--.   1 cyan cyan  178189 Mar 19 21:50 f2

案例2.chgrp

[root@centos7 a]#ll
-rw-r--r--.   1 cyan cyan  178189 Mar 19 21:50 f2
[root@centos7 a]#chgrp root /a/f2
[root@centos7 a]#ll /a/f2
-rw-r--r--. 1 cyan root 178189 Mar 19 21:50 /a/f2
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值