首先,Linux下有两种用户:超级用户即root和普通用户。超级用户可以在Linux系统下做任何事情,而普通用户则会受到限制。如下面两图片所示,超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。权限的意义在于保护普通用户的文件的一般安全性。
执行如下命令进行用户切换:
su [用户名]
Linux权限管理
1. 文件访问者的分类
所有者:u---User
所有者所在的组的用户:g---Group
其它用户:o---Others
2. 文件类型和访问权限
文件类型包括如下几种:
d:文件夹
-:普通文件
l:软链接(可以理解为Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如显示器)
s:套接口文件
基本权限包括读(r)、写(w)、执行(x);
这里特别注意对目录的权限理解:
r - read表示具有浏览该目录信息的权限;
w - wite表示具有删除移动目录内文件的权限;
x - execute表示具有进入目录的权限;
以上图为例理解前面的访问者和访问权限:
文件权限还有另外一种表示方法,8进制数值表示方法。用0/1两种状态分别表示三种权限,三位的二进制总共就8种情况:
权限符号 | 八进制 | 二进制 |
---|---|---|
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
r-w | 5 | 101 |
--- | 0 | 000 |
3. 文件访问权限的相关设置
(a) chmod设置文件的访问权限
只有文件的拥有者和root才可以改变文件的权限。
chmod [参数] 权限 文件名
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限 用户符号:
u:拥有者
g:拥有者同组用户
o:其它用户
a:所有用户
示例如下:
chmod u+w ~/test.txt 增加所有者的写权限
chmod o-x ~/test.txt 取消其他人的执行权限
chmod a=x ~/test.txt 使得所有用户具有执行权限
chmod u+w,g+w,o+w ~/test.txt
当然也可以利用前面的8进制数值表示法进行权限设置:
chmod 664 ~/test.txt 所有者可读可写不可执行,所属组可读可写不可执行,其他人仅可读
chmod 640 ~/test.txt 所有者可读可写不可执行,所属组可读不可写不可执行,其他人无权限
(b) chown 修改文件或者目录的拥有者
chown [参数] 用户名 文件名
常用选项:-R 递归修改文件或目录的所属组
示例如下:
chown user1 file1 修改文件file1的所有者为user1
chown -R user1 filegroup1 递归修改目录文件filegroup1的所有者为user1
(c) chgrp 修改文件或者目录的所属组
chown [参数] 用户名 文件名
常用选项:-R 递归修改文件或目录的所属组
(d) umask 查看或修改文件掩码
新建文件夹默认权限=0666,新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。
假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
umask 权限值
umask 查看文件掩码
umask 044 设置文件掩码
这里需要提到一个特殊的问题,我们都知道WIndows系统是通过后缀名区分文件类型,但是Linux系统不通过后缀名区分,但是还是会用到后缀名。这与适应一定的指令执行有关,也是为了方便用户的使用习惯。