Linux篇(权限管理命令)
目录
一、权限概述
1. 什么是权限
在多用户计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权利
在Linux 中分别有读、写、执行权限:
权限针对文件 | 权限针对目录 | |
读r | 表示可以查看文件内容;cat | 表示可以(ls)查看目录中存在的文件名称 |
写w | 表示可以更改文件的内容;vim 修改,保存退出 | 表示是否可以删除目录中的子文件或者新建子目录(rm/touch/mkdir) |
执行x | 表示是否可以开启文件当中记录的程序,一般指二进制文件(.sh) | 表示是否可以进入目录中(cd) |
一般给予目录读权限时,也将会给其执行权限,属于“套餐”组合
2. 为什么要设置权限
- 服务器中的数据价值
- 员工的工作职责和分工不同
- 应对自外部的攻击
- 内部管理的需要
3. Linux中的权限类别
Linux 系统一般将文件权限分为3 类:
read(读)
write(写)
execute(执行)
4. Linux中文件所有者
4.1. 所有者分类
对于文件的所有者,又分为3类:
user(属主)
group(属组)
other(其他用户)
user(属主):文件的创建者或拥有者,换句话说,某个账户对这个文件有的权限
A 一个人
B 多个人
group(属组):文件所属的用户组,换句话或,某个用户组对这个文件有的权限。
A 一个人
B 多个人
other(其他用户):除了上面提到的属主和属组之外的所有用户,对这个文件有的权限
A 一个人
B 多个人
举例:
爱情公寓拆迁,拆迁款按照政策,分配如下:一半给张伟,另一半由爱情公寓3601和3602室的其余的伙伴平分
如果把拆迁款看做一个文件,那么这个文件的权限是:
属主:张伟
属组:3601和3602的其他伙伴,他们是一个组
其他用户:没有
4.2. 所有者的表示方法
属主权限
u(the user who owns it)(属主权限)
用 u 表示,文件所有者,默认为文档的创建者
属组权限
g(other users in the file's group)(属组权限)
用 g 表示,在文件所属组(默认是创建文件的用户的主组)里的用户
其他权限
o(other user not in the file's group)(其他权限)
用 o 表示,既不是文件的创建者,也不在文件属组里的用户,称为其他人!
linux ugo权限,所谓ugo,就是User, Group,Other三个单词的首字母
就指属主,主组,其他三种权限。
ugo 等于 u + g + o
a (all) 等于u + g + o
root用户(超级管理员)
在Linux 中,root 用户,在所有用户中 root 用户 拥有最大的权限 ,可以管理着普通用户,设置文档的权
限时不必考虑 root 用户
二、普通权限管理
1. ls查看文件权限
要设置权限,就需要知道文件的一些基本属性和权限的分配规则
在Linux 中,ls 命令常用来查看文档的属性,用于显示文件的文件名和相关属性
ls命令本人之前概述过,用于查看文件信息,简写用法:ll
用法一:ll
示例代码:
# ll
含义:查看当前文件夹下的所有目录和文件的详细信息
![](media/quanxian02.png)
2. 文件权限详解
Linux 中存在三类身份:
属主(owner拥有者)
属组(group用户组)
其他用户(others)
各自有不同的权限,对于一个文档来说,其权限具体分配如下:
linux一共有7种文件类型,分别如下:
-:普通文件
d:目录文件
l: 软链接(类似Windows的快捷方式)
下面四种是特殊文件:
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如猫等串口设备)
s:套接口文件/数据接口文件(例如启动一个MySql服务器时会产生一个mysql.sock文件)
文件权限对应关系:对应数字
权限 | 对应数字 | 意义 |
r | 4 | 可读 |
w | 2 | 可写 |
x | 1 | 可执行 |
前10位字符表示含义:
第1位:表示文件类型
第2-4位:表示文件所有者的权限情况,第2位r表示读权限,第3位w表示写权限,第4位x表示执行权限
第5-7位:表示与文件所有者同组的用户的权限情况,第5位r表示读权限,第6位-表示不可写,第7位x表示执行权限
第8-10位:表示除了组外的其他用户权限情况,第8位r表示读权限,第9位-表示不可写,第10位x表示执行权限
简述:
第1位:表示文件类型
第2-4位:表示文件 属主(所有者)的权限情况
第5-7位:表示与文件 属组(用户组)的用户的权限情况
第8-10位:表示 其他(除了属主和属组之外的其他用户)权限情况
3. 设置文件/文件夹权限
命令:chmod
语法:# chmod [选项] 权限模式 文档
作用:增加或者减少当前文件所有者的权限(不能改变所有者,只能改变现有所有者的权限)
常用选项:-R:递归设置权限 (当文档类型为文件夹的时候)
权限模式:就是该文档需要设置的权限信息
文档:可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径。
注意点:如果想要给文档设置权限,操作者要么是root 用户,要么就是文档的所有者
字母形式
字母形式(对应前面提到的u g o,r w x的表示方法)
使用root用户登录
用法一:chmod -R 要增加的权限 文件名
示例代码:
#chmod -R u+x quanxian.txt
含义:对于quanxian.txt文件,给 属主 增加 执行 权限
用法二:chmod -R 多个要增加的权限 文件名
示例代码:
#chmod -R g+x,o+x quanxian.txt
含义:对于quanxian.txt文件,给 属组 增加 执行 权限,给 其他 增加 执行权限
注意:同时改变多个对象的权限,中间使用“逗号“分割。
用法三:chmod -R 要减少的权限 文件名
示例代码:
#chmod -R o-x quanxian.txt
含义:对于quanxian.txt文件,给 其他用户 减少 执行权限
<img src="assets/chmod03.jpg" style="width:960px" />
用法四:chmod -R 要赋予的权限 文件名
示例代码:
#chmod -R u=rwx,g=rwx,o=rwx quanxian.txt
含义:对于quanxian.txt文件,给属主,属组,其他,都 赋予 读,写,执行权限
用法五:chmod -R 要赋予的权限 文件夹
示例代码:
#chmod -R a=rwx quanxianfolder
含义:对于quanxianfolder文件夹,给所有用户(属主,属组,其他),都 赋予 读,写,执行权限
相关参数总结:
字母 | 选项 | 作用 |
u(谁) | user | 属主 |
g(谁) | group | 属组 |
o(谁) | other | 其他用户 |
a(谁) | all | 所有人(包含ugo) |
+(作用) | 加 | 增加作用 |
-(作用) | 减 | 移除作用 |
=(作用) | 等于 | 赋值作用 |
r(权限) | read | 可读权限 |
w(权限) | write | 可写权限 |
x(权限) | execute | 可执行权限 |
-(权限) | - | 没有任何权限 |
1、如果同时设置多个身份的权限时候,每个身份之间需要通过英文逗号分开:
例如:
#chmod -R u=rwx,g=rwx,o=rwx quanxian.txt
2、在权限设置中,如果有两部分权限一样则可以合在一起写
例如:
# chmod u=rwx,g=rwx
等价于:
# chmod ug=rwx
数字形式
经常会在技术网站上看到类似于# chmod 777 a.txt 这样的命令,这种形式称之为 数字形式权限
文件权限与数字的对应关系,我们会发现没有7这个数字
权限 | 对应数字 | 意义 |
r | 4 | 可读 |
w | 2 | 可写 |
x | 1 | 可执行 |
权限与数字对应详解
数字 | 权限 | 作用 |
0 | - | 不能读,不能写,不能执行 |
1 | execute | 不能读,不能写,可执行 |
2 | write | 不能读,可写,不能执行 |
3 | 2+1 | 不能读,可写,可执行 |
4 | read | 可读,不能写,不能执行 |
5 | 4+1 | 可读,不能写,可执行 |
6 | 4+2 | 可读,可写,不能执行 |
7 | 4+2+1 | 可读,可写,可执行 |
技巧:不要背上面的表格,只要记住R,W,X对应4,2,1,之后做10以内加法
用法六:chmod -R 要赋予的权限(数字形式) 文件名
示例代码:
#chmod -R 765 quanxian.txt
含义:对于quanxian.txt文件,给属主所有权限,属组读写权限,其他读和执行权限
注意:
全部权限:7 = r+w+x = 4 + 2 + 1
读写权限:6 = r+w = 4 + 2
读和执行:5 = r+x = 4 + 1
综上所述,u=7,g=6,o=5
问题:用超级管理员设置文档的权限命令是# chmod -R 731 shop,请问这个命令有没有什么不合理的地方?
分析:
所有者权限:7 = 4 + 2 + 1 = 读 + 写 + 执行
同组用户权限:3 = 2 + 1 = 写 + 执行
其他用户权限:1 = 执行
问题在权限731中的3权限,3表示写+执行权限,但是写又必须需要能打开之后才可以写,因此必须需要具备可读权限,因此此权限设置不合理。
注:实际工作中,各位小伙伴在设置权限时一定不要设置这种"奇葩权限",一般情况下,单独出现2、3的权限数字一般都是有问题的权限。
一般linux系统中,不允许出现 777 的权限
练习题
1、使用root 用户设置文件夹/root/shop 的权限为:属主全部权限,属组拥有读和执行权限,其他用户没有权
限,请使用数字权限的形式设置
rwx=7,rx=4+1=5,0
# chmod -R 750 /root/shop
2、请置文件/root/readme.txt 的权限,权限要求为:
属主拥有全部权限,属组要求可以读写,其他用户只读,要求使用数字形式;
rwx=7,rw=4+2=6,r=4
# chmod 764 /root/readme.txt
3、请设置/root/email.doc权限,权限要求只有属主可以读写,除此之外任何人没有权限;
rw=6,0,0
# chmod 600 /root/email.doc
4. 特别说明
在Linux 中,如果要删除一个文件,不是看文件有没有对应的权限,
而是看文件所在的目录是否有写权限,如果有才可以删除(同时必须具备执行权限)
权限针对文件 | 权限针对目录 | |
读r | 表示可以查看文件内容 | 表示可以(ls)查看目录中存在的文件名称 |
写w | 表示可以更改文件的内容 | 表示是否可以删除目录中的子文件或者新建子目录(rm/touch/mkdir) |
执行x | 表示是否可以开启文件当中记录的程序,一般指二进制文件(.sh) | 表示是否可以进入目录中(cd) |
三、属主(zhu)与属组(zu)设置
1. 什么是属主与属组?
属主:所属的用户,文档所有者,这是一个账户,这是一个人
属组:所属的用户组,这是一个组
基本语法:# ls -l查看文档属主与属组
2. 为什么要修改属主与属组?
举例:
一个财务表格,以前由胡一菲进行更新,她有读写权限,现在胡一菲去阿拉善沙漠找曾老师了,改权限没用,
需要把属主改成诸葛大力,由诸葛大力更新
3. chown修改文件的属主
基本语法:# chown [-R] 新文档拥有者名称 文档路径
作用:更改文档的所属用户(change owner)
选项:-R 代表递归修改文件的属主
示例代码1:将readme.txt文档属主更改为 zhengge
#touch readme.txt
#ll readme.txt
#chown zhengge readme.txt
将readme.txt文件的属主设置为zhengge
#ll readme.txt
示例代码2:将shop文件夹的拥有者更改为zhengge
#mkdir shop
#ll
#chown zhengge shop
将shop文件夹的属主设置为zhengge
#ll
4. chgrp修改文件的属组
基本语法:# chgrp [-R] 新文档组名称 文档的路径
作用:更改文档的所属用户组(change group)
示例代码1:将readme.txt文档所属组修改为 zhengge
错误信息:invalid user: ‘zhengge’
不可用的账户"zhengge"
原因:检查是否有这个账户,如果没有,需要新建
示例代码2:将shop文档所属组修改为 zhengge
5. chown同时修改属主与属组
基本语法:语法:# chown [-R] username:groupname 文档路径
示例代码:将readme.txt文件的拥有者与所属组都更改为root
#ll readme.txt
#chown root:root readme.txt
将readme.txt文件的属主和属组同时设置为root
#ll readme.txt
注意:
一般来说,chown 指令只有是由系统管理者(root)所使用,
普通用户没有权限可以改变别人的档案拥有者,也没有权限可以将自己的档案拥有者改设为别人
只有系统管理者(root)才有这样的权限
四、特殊权限
1. 设置位S(SetUid)
作用:为了让一般使用者临时具有该文件所属主/组的执行权限
例如:
/usr/bin/passwd在执行它的时候需要去修改/etc/passwd和/etc/shadow等文件,
这些文件除了root外,其他用户都没有写权限,但是又为了能让普通用户修改自己的密码,该怎么办呢?
可以临时让他们具有root的权限,而这个 s 权限就是用来完成这个特殊任务的
s 权限只能应用在二进制的可执行文件上
示例代码:不想让普通用户修改自己的密码
which命令可以用于查看二进制可执行文件所在位置
去除s权限,基本语法:
#which passwd
#ll /usr/bin/passwd
#chmod u-s /usr/bin/passwd
或者
#chmod 0755 /usr/bin/passwd
去除passwd程序的s权限
#ll /usr/bin/passwd
测试普通用户:
# 查看当前用户
whoami
# 修改密码
passwd
注意:
0755最前面的0表示不使用任何特殊权限,如果想使用数字设置特殊权限,可以使用4表示设置S位
2. 沾滞位T (sticky bit)
命令:chmod
语法:# chmod [选项] 文件夹
作用:只允许文件的创建者和root用户删除文件
常用选项:
o+t 添加粘滞位
o-t 去掉粘滞位
用法:chmod o+t 目录名
示例代码:
#chmod o+t
含义:给目录增加粘滞位权限。
举例:
公司多个部门公用一个文件夹work,为了让所有人都能访问,work文件夹赋予了777权限,
用户root新建了一个文件root.txt,发现被别人删除了,我们希望root建立的文件,只有root自己可以删。
步骤1:root用户下操作
root用户新建文件夹/work,并且新建两个文件root.txt和root1.txt,赋予/work文件夹和下面的文件777权限
#mkdir /work
#cd /work
#touch root.txt
#touch root1.txt
#chmod -R 777 /work
#ll -d /work
<img src="assets/teshu02.jpg" style="width:960px" />
步骤2: wangwu用户下操作
在没有设置粘滞位的时候,wangwu可以删除root创建的文件
cd /work
ll -d /work
ll
rm -rf root.txt
ll
<img src="assets/teshu03.jpg" style="width:960px" />
步骤3:root用户下操作:
给/work文件夹添加粘滞位
#ll -d /work/
#chmod o+t /work
#ll -d /work/
<img src="assets/teshu04.jpg" style="width:960px" />
步骤4:wangwu用户下操作
发现添加粘滞位后,无法删除root2.txt文件
#ll -d /work/
#chmod o+t /work
#ll -d /work/
<img src="assets/teshu05.jpg" style="width:960px" />
步骤5:root用户下操作
去掉/work文件夹的取消粘滞位
#ll -d /work/
#chmod o-t /work
#ll -d /work/
<img src="assets/teshu06.jpg" style="width:960px" />
步骤6:wangwu用户下操作
wangwu用户下,发现又可以删除了
<img src="assets/teshu07.jpg" style="width:960px" />
五、ACL访问控制
问题:我们学过的所有者身份包含哪些?
答案:ugo,属主,属组,其他。
问题:我们学过的文件权限包含哪些?
答案:rwx,读写执行,特殊s,t
ACL,是 Access Control List(访问控制列表)的缩写,在 Linux 系统中, ACL 可实现对单一用户设定访问文件
的权限
1. 基本命令
getfacl命令:查看文件的ACL策略及权限
setfacl命令: 给文件针对某个用户或者某个组来增加(设置)ACL策略
2. getfacl命令
3. setfacl命令
-m : 修改acl策略
-x :去掉某个用户或者某个组的权限
-b :删除所有的acl策略
-R :递归,通常用在文件夹
mask:mask定义除other和所有人(拥有者)外的最大权限
setfacl -m u:用户名:rwx /usr/local/shichangbu 给单个用户单独加权限
setfacl -m g:用户组名:rwx /usr/local/shichangbu 给单个组单独加权限
setfacl -x u:用户 /usr/local/shichangbu 去掉某个用户的权限
setfacl -x g:组名 /usr/local/shichangbu 去掉某个组的acl策略
setfacl -b -R /usr/local/shichangbu 删除所有的acl策略,递归子文件
例如:
setfacl -m u:user01:rw file1 针对于单个用户给可读可写权限
setfacl -m g:sysadmin:rw file1 针对于单个组给可读可写权限
示例代码1:给newuser01用户单独在市场部文件夹上增加rx权限
#mkidr /shichangbu
#cd /shichangbu
#touch file{1..5}.txt
#chown -R root:itheima shichangbu/
递归设置shichangbu文件夹的属主是root,属组是itheima
#getfacl shichangbu/
#useradd newuser01
#passwd newuser01
#setfacl -m u:newuser01:rx -R /usr/local/shichangbu/
单独设置newuser01对于shichangbu文件夹的rx权限,并且递归包含所有子文件
#getfacl /usr/local/shichangbu
查看/usr/local/shichangbu文件夹的ACL权限
六、umask
1. 什么是umask
umask表示创建文件时的默认权限(即创建文件时不需要设置而天生的权限)
例如:
root用户下,touch a ,文件a的默认权限是644
普通用户下,touch b ,文件b的默认权限是664
644和664我们并没有设置,其中的关键因素就是umask
最大默认权限:
文件666
文件夹777
2. umask值
可以使用命令umask来查看umask的值:
基本语法:# umask
注:0022中第一位0代表特殊权限位,可以不设置。
umask的默认值,在root和普通用户下是不一样的,分别是022和002
分析:
结合上述的举例得知:
默认权限=最高权限-umask( 644=666-022 // 664=666-002 )
但是:
当umask为011,创建文件的默认权限应该是655,但是实际运行的时候默认权限是 666
666 -> rw-rw-rw-
011 -> -----x--x
相减得:,
666 -> -rw-rw-rw-
注意:
这个特殊情况仅出现在文件,因为文件[二进制文件除外]没有x执行权限),
所以,查看文件的umask时我们要特别注意是否有奇数位(x表示1)
3. 修改umask值
umask + 数值修改当前用户的umask 如:# umask 044
不过这样设置的umask会在用户重新登录的时候恢复原来的值,我们可以把修改的umask保存在~/.bashrc
操作步骤:
#vim ~/.bashrc
① 在文件末尾添加umask 044
② 保存退出
③ 重新登录用户则保存成功
示例代码:
原文地址:https://blog.csdn.net/qq_51226710/article/details/143783817
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!