Linux权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作。
Linux每个进程都是以某个用户身份运行,进程的权限与该用户的权限一样,用户的权限越大,则进程拥有的权限就越大。
Lnux中有的文件及文件夹都有至少权限三种权限,常见的权限如表所示:
注:r=4 w=2 x=1
权限分为UGO、ACL以及特殊权限,下面我来详细介绍一下!!~~~
一、UGO
其实UGO就是赋于某个用户或组能够以何种方式访问某个文件(图片文件,视频文件,普通文件) 。
Linux权限授权,默认是授权给三种角色,分别是user、group、other,Linux权限与用户之间的关联是:
U代表User,G代表Group,O代表Other;
每个文件的权限基于UGO进行设置;
权限三位一组(rwx),同时需授权给三种角色,UGO;
每个文件拥有一个所属用户和所属组,对应UGO,不属于该文件所属用户或所属组使用O来表示。
如图,查看当前目录的文件权限:
首先可以看到红色方框中文件的三种权限属性,分别是r(读),w(写),x(执行)。 权限,代表了指定用户能以哪种方式访问文件。每个文件都有三组权限,举个栗子:
file1.txt是属主权限rwx,只对属主alice账号生效,说明alice对该文件有rwx的全部权限。
然后是属组权限rw-,对hr用户组生效,hr组内的所有用户对该文件都有读写权限。
最后是其他人权限r--,仅有读取权限,对除去属主和属组用户外的所有用户生效。
因此权限的对象一共有三种,分别是U(属主)、G(属组)、O(其他人)。
1.权限的配置
(1)chown 更改属主与属组
同时修改属主和属组:
只修改属主:
只修改属组:
(2)chgrp 更改属组
//如果是文件夹,加上-R参数,会同时修改目录及目录下的所有文件的权限
(3)chmod 更改文件权限
u+x 为属主增加执行权限:
为属组、其他人分别增加写入、执行权限:
a=rwx 所有人增加读写执行权限:
a=- 取消文件所有权限:
还可以通过数字的方法修改,r=4,w=2,x=1。
例如:
(4)小结
- 对目录有 w 权限,可以在目录中创建新文件、删除目录中的文件(跟文件权限无关)
- 文件:x 权限要小心给予
- 目录:w 权限要小心给予
- root有所有权限,设置权限对root没意义
二、ACL
1.ACL与UGO的区别
ACL文件权限管理: 设置不同用户,不同的基本权限(r、w、x)。对象数量不同。
UGO设置基本权限: 只能一个用户,一个组和其他人
(1)ACL的语法:
setfacl -m u:alice:rw /home/test.txt
命令 设置 用户或组:用户名:权限 文件对象
(2)ACL用法
首先要准备文件:
[root@localhost ~]# touch /home/test.txt
[root@localhost~]# ll /home/test.txt
-rw-r--r-- 1 root root 0 10-26 13:59 /home/test.txt
然后设置ACL,分为两步:
- 查看文件有哪些ACL权限
[root@localhost ~]# getfacl /home/test.txt
- 设置用户alice,jack权限
[root@localhost ~]# setfacl -m u:alice:rw /home/test.txt
[root@localhost ~]# setfacl -m u:jack:- /home/test.txt
(记得提前创建alice 和jack用户哦~~~~)
最后,查看与删除ACL~
- 查看ACL
[root@localhost ~]# getfacl /home/test.txt
getfacl: Removing leading '/' from absolute path names
查看文件权限,删除了根路径。
# file: home/test.txt 文件名
# owner: root 属主:root
# group: root 属组:root
user::rwx 用户:属主:rwx
user:alice:rw- 用户:alice:rw-
user:jack:--- 用户:jack:---
group::rwx 组:属组:rwx
mask::rwx 掩码::rwx
other::rwx other:其他人:rwx
- 删除ACL
首先,增加hr组对test.txt文件读取的权限
[root@localhost ~]# setfacl -m g:hr:r /home/test.txt
其次,若删除部分:
[root@localhost ~]# setfacl -x g:hr /home/test.txt
//删除组hr的acl权限
若删除所有,
[root@localhost ~]# setfacl -b /home/test.txt
//删除所有acl权限
三、特殊权限
1.特殊位 suid
suid权限(属主权限)
如果我们想修改账号的用户密码,会使用passwd命令,如alice账号修改密码:
passwd文件其实是操作的shadow文件,该文件权限如下:
可以看到,只有root账号能对它进行操作,那么alice的写操作是怎么执行成功的捏?
使用alice在后台运行passwd命令,查看进程:
会发现是root账号在执行此操作,因此才能修改成功。
再看看passwd命令是执行的哪个文件:
会发现passwd文件的执行权限为s,这就是alice成功修改密码的原因。
suid权限,标记为s,代表让任何账号执行该程序时,身份都以文件所有者身份(此处为root)进行执行。
因此虽然操作者是alice,但执行者其实是root。
2.chattr(隐藏文件权限)
chattr 命令,常用于锁定某个文件,拒绝修改。专门用来修改文件或目录的隐藏属性,只有 root 用户可以使用。该命令的基本格式为:
[root@localhost ~]# chattr [+ - =] [属性] 文件或目录名
+表示给文件或目录添加属性,- 表示移除文件或目录拥有的某些属性,= 表示给文件或目录设定一些属性。
如下表所示:chattr常用的属性选项及其功能。
查看文件及目录的隐藏属性
lsattr filename
[root@localhost ~]# lschattr -d /etc/
---------------- /etc/
// 查看该文件夹etc的特殊权限
[root@localhost ~]# lschattr /test/1.txt
-----a---------- /test/1.txt
// 查看文件1.txt的特殊权限
3.umask(进程掩码)
默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的目录的默认权限是755(7-0,7-2,7-2)
同理若将umask改为0011,则新建目录默认权限为755,新建文件默认权限为644
好啦!今日的分享到此结束~下次见哦!!