Linux权限
Posted 白龙码~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux权限相关的知识,希望对你有一定的参考价值。
文章目录
Linux权限
一、用户权限
1、用户分类
Linux下的用户分为超级用户(root)和普通用户(user)。
它们的区别在于:
- 超级用户在Linux系统下做任何事情不受限制,而普通用户只能做有限的事情;
- 超级用户的命令行提示符为**#,普通用户为$**。
2、权限提升sudo
sudo command
让普通用户以root的身份执行 command,只需要输入用户密码而不需要知道 root 的密码
注:使用一次sudo后短期内再次使用不需要输入用户密码
二、文件权限
1、文件的访问者
对于文件来说,访问者分为:所有者(user)、所属组(group)和其他人(others)。
- 所有者:文件的建立者
- 所属组:一组用户的集合,在该组中,除了文件所有者,其他人对该文件的访问权限都一样,他们是合作关系(除非某一个user特别设定某一文件的访问权限)
- 其他人:非所有者和非所属组成员都是其他人,对文件的权限非常有限,甚至没有。
2、文件的属性信息
在命令行中使用ll
命令会显示当前目录下的文件详细信息,比如:
-rw-r--r-- 1 root root 231 Oct 1 15:58 file.txt
①-
表示文件类型,分为:
-:普通文件
d:目录
l:软链接(类似Windows的快捷方式)
p:管道文件
b:块设备文件(例如硬盘、光驱等)
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
注:通过 file+文件名
查看文件类型
②rw-r--r--
这9个字符三个为一组,分别代表user、group、others对于该文件的访问权限。
其中,r表示可读,w表示可写,x表示可执行,而对应位置为 - 的则表示没有对应权限,比如:rw-表示可读可写不可执行;
③1
表示连接数
④root root
分别代表:文件所有者和所属组的名字。如果文件的访问者不是这两种,那么他就是others。
⑤231
表示文件大小。
⑥Oct 1 15:58
表示该文件最近的修改日期。
⑦file.txt
表示文件名。
注意:文件的权限只能约束普通用户,无法约束root用户!
3、文件权限的概念
I.权限的八进制表示法
rwx
对应111,即7;
---
对应000,即0;
对应位为1表示拥有该权限。
II.文件掩码
文件的初始权限为: (默认权限) & (~权限掩码);
其中:
普通文件的默认权限为666(rw- rw- rw-
),目录为777(rwx rwx rwx
)。
普通用户的默认权限掩码为002,root为022。
示例:
当普通用户创建目录,那么目录的初始权限就是:
777 & ~(002) = 775(rwx rwx r-x
)
III.目录的权限
目录是一种特殊的文件,它的权限也分别有特殊的定义。
- 目录可读是指:能够查看在该目录下有哪些文件;
- 目录可写是指:能够在该目录下创建、删除文件;
- 目录可执行是指:能够对该目录执行指令,或者说,能够进入(
cd
)该目录。
如果一个目录没有x权限,那么就无法对该目录下的文件执行读写,因为读写的前提是:必须先进入该目录。
而要删除一个文件,对该文件所在目录需要拥有w和x权限,但是对该文件本身却没有w权限要求。
IV.粘滞位
对于只有---
权限的用户,无法读、写、执行文件,但是可以删除该文件!
因此linux为目录增添了一种特殊权限:粘滞位(t)。
粘滞位的设置方法为:chmod +t file_name
;
当设置了粘滞位后,目录下的文件只能由三种用户删除:
- 文件所有者
- 目录所有者
- root
系统根目录下保存程序产生的临时文件的tmp目录就使用了粘滞位。
注:粘滞位实际上是针对其他人(others)设置的。当其他人拥有目录x权限时,粘滞位在x处显示t,未拥有x权限时,显示T。
4、文件权限相关命令
chmod
chmod [选项] 文件名
修改文件的权限,该命令只有文件的拥有者和root可以执行
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
示例:
chmod o+w f.txt
给others增加写权限
chmod o-r f.txt
回收others的读权限
chmod o=--- f.txt
不给others任何权限
当然,也可以通过八进制的方式增减权限,例如:
chmod 000 f.txt
不给任何人权限
chmod 777 f.txt
给任何人所有权限
注:对于只有写权限,没有读权限的普通用户,想要写文件就必须使用echo+重定向的方式。
chown
chown [选项] 新的拥有者 文件名
改变文件的拥有者(普通用户需要sudo)
-R:递归修改所有子文件和子目录的拥有者
chgrp
chgrp [选项] 新的所属组 文件名
改变文件的所属组(普通用户需要sudo)
-R:递归修改所有子文件和子目录的拥有者
umask
查看/修改文件掩码
umask:查看掩码
umask + 数字:修改当前用户的掩码
以上是关于Linux权限的主要内容,如果未能解决你的问题,请参考以下文章