目录
1.用户分类
su指令
2.认识Linux权限
2.1 文件访问者的分类
2.2 文件类型和访问权限
a. 文件类型
file指令
b. 访问权限
2.3 文件权值的表示方法
a. 字母表示法
b. 八进制表示法
3.如何修改文件访问者的权限及相关指令
1. chmod指令
2. chown指令
3. chgrp指令
4.权限掩码与umask指令
umask指令
4.目录的权限
粘滞位
我们对权限并不陌生,权限代表着限制。对于某些用户做一些事情是可以的,但其他人却不行。
同样的,在Linux中也存在着权限的概念。既然是限制,那就得针对用户身份,所以Linux中,对于用户身份也有着分类。
1.用户分类
Linux下有两种用户:
超级用户(root):可以再linux系统下做任何事情,不受限制;
普通用户:在linux下做有限的事情。
其中,超级用户只能有一个,而普通用户可以有很多个。如何添加普通用户我之前已经提到过这里就不作赘述,链接:如何添加普通用户。
su指令
功能:用来切换用户身份;(例如,有些时候,作为普通用户没有权限做某些事,可以临时切换为root身份)
语法:su + [用户名字] (su root 此时root可以省略);
2.认识Linux权限
当我们用 ll(等于ls -l)显示文件的详细信息时:
我们并不知道红色方框中的内容代表什么意思,但是有些能大概猜出来。例如,7 表示的是文件名;6 代表的是文件创建时间;5 代表文件的大小(单位:字节)。
至于其他的内容我们并不清楚,接下来的内容就是认识它们。
2.1 文件访问者的分类
当我们要访问某个文件时,我们的身份又有了重新的划分:
文件和文件目录的所有者:u---User;
文件和文件目录的所有者所在的组的用户:g---Group;
其它用户:o---Others ;
对于不同身份的文件访问者,都有各自的权限;
2.2 文件类型和访问权限
我们之前看到的第 1 个红框中,有这些符号:
其中第一列代表的是文件类型,其余的代表访问权限。
a. 文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
file指令
功能:查看文件类型;
语法: file [选项] 目标文件或目录;
常用选项:
-c :详细显示指令执行过程,便于排错或分析程序执行的情形;
-z :尝试去解读压缩文件的内容;
实际上Linux系统并不会识别你自己取得文件后缀(例如 test.txt 和t est.c),在系统眼中,它们都是普通文件。但是系统不关心并不代表某些软件不关心(例如不能用gcc编译 .txt文件),所以文件后缀一般还是不要省略。
b. 访问权限
除了第一列,剩下得每 3 个为一组,分为三组。
第一组表示文件和文件目录的所有者(user)的权限;
第二组表示文件和文件目录的所有者所在的组的用户(group)的权限;
第三组表示其他用户(other)的权限。
2.3 文件权值的表示方法
a. 字母表示法
b. 八进制表示法
3.如何修改文件访问者的权限及相关指令
1. chmod指令
功能:设置文件的访问权限;
语法:chmod [选项] 目标文件;
常用选项:
-R :递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限。
chmod指令的不同格式:
① 用户表示符+/-权限字符
+:向权限范围增加权限代号所表示的权限;
-:向权限范围取消权限代号所表示的权限;
=:向权限范围赋予权限代号所表示的权限;
用户符号:
u:拥有者
g:拥有者同组用户
o:其它用户
a:所有用户
示例:
chmod u+r test.txt
chmod u-w test.txt
chmod u+r,u+w,o+x test.txt
chmod a+r test.txt
chmod a-w test.txt
②三位8进制数字
示例:
chmod 000 test.txt
chmod 777 test.txt
chmod 667 test.txt
2. chown指令
功能:修改文件的拥有者;
语法: chown [选项] username 目标文件 ;
常用选项:
-R :递归修改目录文件的拥有者
示例:
chown root test.txt
chown -R hxy mydir
3. chgrp指令
功能:修改文件或目录的所属组;
语法: chgrp [选项] 用户所属组名 目标文件 ;
常用选项:
-R :递归修改目录文件的所属组
示例:
chgrp root test.txt
chgrp -R hxy mydir
4.权限掩码与umask指令
文件的权限生成其实是有一个过程的,有这样一个问题,为什么我们创建一个新文件时,它的权限是我们看到的那个样子?我们能修改这个默认的权限吗?
我们最终所看到的权限就是默认权限也叫最终权限,它的生成经过这样的过程:
最终权限 = 起始权限 & (~umask) (umask为权限掩码)。
起始权限:系统设定的,及文件一出生系统认为应该带有的权限。普通文件:666;目录文件:777。
权限掩码:三位八进制数字,用来控制最终权限的生成。
umask指令
功能:查看或修改文件掩码;
语法: umask 权限值 ;
示例:
4.目录的权限
可执行权限 x :如果目录没有可执行权限,则无法cd到目录中;
可读权限 r :如果目录没有可读权限, 则无法用 ls 等命令查看目录中的文件内容;
可写权限 w :如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。
有个疑问:故事如下:
在公司里,张三和李四共同掌管一个共享目录。该共享目录由老板 root 创建,且对于other有rwx权限(意味着谁都可以在共享目录创建或删除文件)。
张三在共享目录下创建了一个文件,对other的权限只开放了 r 与 x;意味着李四只能读文件而不能修改内容。但是李四心生歹意,你不让我写。我就删掉你的文件。结果该文件被删除,对张三乃至公司造成了极大的损失...
那么有什么办法能限制其他人不能在共享目录删除我的文件呢?
答案是,当然有,就是给共享目录添加粘滞位。
粘滞位
添加方法:
chmod +t 目标文件
当一个目录被设置为"粘滞位",则该目录下的文件只能由
▶ 超级管理员删除;
▶ 该目录的所有者删除;
▶ 该文件的所有者删除。
本章完!