樊梓慕:个人主页
个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》
每一个不曾起舞的日子,都是对生命的辜负
目录
前言
1.Linux权限的概念
1.1文件访问者的分类
1.2文件类型和访问权限
1.3文件权限值的表示方法
2.有关权限的指令
2.1chmod
2.2chown
2.3chgrp
2.4umask
2.5file
2.6sudo
3.目录的权限
4.粘滞位
5.总结
本篇博主将会与同学们一起学习Linux的权限概念与有关操作,带领大家掌握权限的设置方法以及粘滞位是什么,为什么会有粘滞位,粘滞位的作用是什么等问题。
欢迎大家收藏以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。
=========================================================================
GITEE相关代码:fanfei_c的仓库
=========================================================================
Linux下有两种用户:超级用户(root)、普通用户。
超级用户的命令提示符是“#”
[root@hecs-235417 ff]#
普通用户的命令提示符是“$”
[ff@hecs-235417 ~]$
命令: su [用户名]
功能:切换用户。例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
输入密码时不回显,大家只管输入就好,回车确定后会有反馈信息。
文件和文件目录的所有者: u---User
文件和文件目录的所有者所在的组的用户: g---Group
其它用户: o---Others
我们利用ll(ls-l)命令来查看文件的属性信息。
可以看到下面的内容:
[root@hecs-235417 ff]# ll
total 28
-rwxrwxr-x 1 ff ff 8360 Oct 31 22:25 a.out
-rw-rw-r-- 1 ff ff 827 Oct 31 16:14 install.sh
drwxrwxr-x 2 ff ff 4096 Nov 5 09:53 test
drwxrwxr-x 2 ff ff 4096 Oct 31 16:30 test_23_10_31
-rw-rw-r-- 1 ff ff 75 Oct 31 22:25 test.c
那他们分别代表什么意思呢?
如下图:
文件类型:
基本权限rwx:
(1)字符表示法
(2)8进制数值表示方法
知道了权限的表示方法后,我们快来看一下如何进行权限配置呢?
功能:设置文件的访问权限
格式:chmod [参数] 权限
常用选项:
说明:只有文件的拥有者和root才可以改变文件的权限。
(1)用户表示符+/-=权限字符
用户符号:
如:
# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt
# chmod a=x /home/abc.txt
(2)三位8进制数字
如:
# chmod 664 /home/abc.txt //rw-rw-r--
# chmod 640 /home/abc.txt //rw-r-----
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
如:
# chown user1 f1
# chown -R user1 filegroup1 //-R递归(应用到子文件)
功能:修改文件或目录的所属组
格式: chgrp [参数] 用户组名 文件名
常用选项:
如:
# chgrp gpr1 file.txt
# chgrp -R gpr1 file//-R递归(应用到子文件)
功能:查看或修改文件掩码
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
格式: umask 权限值
如:
# umask 755
# umask //查看
# umask 044//设置
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002,这里第一位为特殊权限,不是8进制的意思,一般将其设置为0,即系统默认,包括在利用umask查出来的权限掩码为4位,但第一位为特殊权限。
比如:
/*****************************************计算方法***************************************************/
新建文件夹默认权限为666,即110 110 110
权限掩码为002,即000 000 010
那么实际文件权限为默认权限去掉在umask中出现的权限,即110 110 100.
/******************************************************************************************************/
功能说明:辨识文件类型。
语法: file [选项] 文件或目录
常用选项:
当我们是普通用户时,如果想要获取root权限操作,但又不想或不能切换成超级用户时怎么办呢?
linux提供了sudo指令,他可以让普通用户的你短暂获得超级用户的权限。
但前提是该普通用户被超级用户授权过。
下面我们就来看一看超级用户是如何给予普通用户这个权限的。
(1)修改/etc/sudoers 文件分配文件
# chmod 740 /etc/sudoers
# vim /etc/sudoer
注意要在root权限下进行操作
(2)使用 sudo 调用授权的命令
$ sudo –u 用户名 命令
如:
$ sudo -u root /usr/sbin/useradd u2
注意可写权限:假设这样一个场景,你与甲共享一文件夹,你们共同拥有该目录的写权限,某天你在该目录创建了一个文件设为仅自己可读可写,甲看到你创建的这个文件竟然对他保密,心生芥蒂,于是删除了你创建的文件。
这样是不是不太合理?
你自己创建的文件凭什么别人没有该文件的写权限而仅有该目录的写权限就可以删除呢?
于是linux就引入了粘滞位的概念。
粘滞位就是rwx中的x替换为t。
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm: 是否删除有写保护的普通空文件 "/home/abc.c"? y
rm: 无法删除"/home/abc.c": 不允许的操作
粘滞位实际上就是给目录中的other设置的一个权限位,具有x的意义,同时也进一步对权限进行特殊限定。
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
- 超级管理员删除
- 该目录的所有者删除
- 该文件的所有者删除
一个文件能否被删除,不取决于文件本身,而取决于目录权限。
=========================================================================
如果你对该系列文章有兴趣的话,欢迎持续关注博主动态,博主会持续输出优质内容
博主很需要大家的支持,你的支持是我创作的不竭动力
~ 点赞收藏+关注 ~
=========================================================================