Linux权限概念
Linux下有两种用户:超级用户(root)、普通用户
超级用户:可以在Linux系统下做任何事情,不受限制
普通用户:在Linux下做有限的事情
超级用户的命令提示符是"#",普通用户的命令提示符是"$"
权限管理
1、文件访问者的分类
文件和文件目录的所有者:u–User
文件和文件目录的所有者所在的组的用户:g–Group
其他用户:o–Others
简单的举个栗子区分一下三者:
就好像我有一台电脑,我可以使用我的电脑,我的室友也可以使用我的电脑,但是其他不相干的人怎么能使用我的电脑?(例子不算贴切,但足以说明问题)
上述例子中,电脑就是该文件,我就是文件的所有者,我的室友就是文件的所有组用户,其他不相干的人就是其他用户
2、文件类型和访问权限
下图是我的一个目录中的文件信息(使用ls -l指令列出文件的详细信息):
其中:
1、第一位表示文件类型,当前目录中显示的文件类型有两种,为“-”和“d”
各文件类型表示的含义
d:文件夹
-:普通文件
l:软链接,类似windows的快捷方式
b:块设备文件,如硬盘、光驱等
p:管道文件
c:字符设备文件,如屏幕等串口设备
s:套接口文件
2、紧跟其后的9位字符表示权限,如第一个文件形如“rw-rw-r–”
基本权限:
读(r):read,对于文件而言,具有读取文件内容的权限;对于目录而言,具有浏览该目录信息的权限
写(w):write,对于文件而言,具有修改文件内容的权限;对于目录而言,具有删除移动目录内的文件的权限
执行(x):execute,对文件而言,具有执行文件的权限;对于目录而言,具有进入目录的权限
“-”:表示不具有该项权限
解析Linux下文件权限:
权限前三位表示文件所有者的权限
权限中间三位表示文件所属用户组的权限
权限后三位表示其他用户的权限
3、其后,跟着的分别为:连接数,所属用户,所属用户组,文件大小,文件最新修改日期,文件名
文件权限值的表示方法
Linux表示 | 说明 | 二进制 | 八进制 |
---|---|---|---|
r– | 只读 | 100 | 4 |
-w- | 只写 | 010 | 2 |
–x | 仅可执行 | 001 | 1 |
rw- | 可读可写 | 110 | 6 |
r-x | 可读可执行 | 101 | 5 |
-wx | 可写可执行 | 011 | 3 |
rwx | 可读可写可执行 | 111 | 7 |
--- | 无权限 | 000 | 0 |
文件访问权限的设置方法
chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
R:递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
1、用户标识符+/- = 权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其他用户
a:所有用户
例:
//对test.cpp文件给其他用户增加写权限
chmod o+w ./test.cpp
2、三位8进制数字
//对当前目录下的test.cpp文件所有者和所属组用户增加权限至可读可写不可执行权限
chmod 666 ./test.cpp
//对当前目录下的test.cpp文件的所有者和所属组和其他用户都增加权限至可读可写不可执行
chmod 777 ./test.cpp
chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
举例:
//修改文件test.cpp的所有者为adam-xi(用户名)
chown adam-xi test.cpp
//修改目录work下的所有文件的所有者为adam-xi
chown -R adam-xi work
chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
举例:
//修改当前目录下test.cpp的所属组用户为adam-xi
chgrp adam-xi ./test.cpp
umask
功能:查看或修改文件掩码
新建文件默认权限为0666
新建目录默认权限为0777
但实际上,我们所创建的文件或目录,看到的权限往往不是上面的值,因为创建文件或目录时还要受到umask的影响。
假设默认权限是mask,则实际创建出来的文件权限是:mask & ~umask
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生创建文件是预设权限。root的默认掩码值为0022,普通用户默认为0002
目录权限
可执行权限:如果目录没有可执行权限,则无法cd到目录中
可读权限:如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容
可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件
粘滞位
命令:chmod +t
当一个目录被设置为“粘滞位”,则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除