【关于Linux中权限管理】

文章目录

  • 一、文件访问者的分类
  • 二、文件类型和访问权限
  • 三、文件权限值的表示方法
  • 四、文件访问权限的相关设置方法
  • 五、目录的权限


一、文件访问者的分类

文件和文件目录的所有者:u—User
文件和文件目录的所有者所在的组的用户:g—Group
其它用户:o—Others

在Linux中的用户分为两类----超级用户(root)和普通用户
所谓超级用户就是指不受权限约束的用户,可以随意切换到其他普通用户(不用输入密码)。而普通用户切换到超级用户却需要输入root的密码。
使用sudo命令可以使普通用户在短时间内(一般是10-15分钟)以root的身份执行命令,但是第一次使用需要输入密码(普通用户的密码),还有个前提是该普通用户必须和root建立信任关系。


二、文件类型和访问权限

拿Linux中的两个文件举例子:
在这里插入图片描述

文件9_17的各种属性如下:
【关于Linux中权限管理】_第1张图片
【关于Linux中权限管理】_第2张图片
其中rwx代表的分别是可读、可写和可执行,若对应位置为"-",则所对应的用户类型不具有该操作的权限。
注意。LInux中不以文件后缀区分文件类型

具体文件类型分类如下:

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

Linux下,一切皆文件!


三、文件权限值的表示方法

字符串表示方法:
【关于Linux中权限管理】_第3张图片
八进制数值表示方法:
【关于Linux中权限管理】_第4张图片
解释:如果具有rwx对应的权限,则对应的比特位上数值为1,否则为0


四、文件访问权限的相关设置方法

chmod:

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:

R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

chmod命令权限值的格式:

①用户表示符+/-=权限字符

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

举个例子:
【关于Linux中权限管理】_第5张图片

②三位八进制数字:
前面说过,rwx权限有无可以用数字来表示(三个比特位),若某一个用户类型拥有rwx所有权限,则其八进制数字应该为7(111),而用户类型有三种,就有对应的三个八进制数字来表示他们是否具有某一权限。

举个例子:
【关于Linux中权限管理】_第6张图片
上面的633即(110 011 011),所对应的权限也就是(rw- -wx -wx)

需要知道的是,root几乎不受这些权限约束,也就是说,即使root没有这些权限,也可以执行相应的操作!


提一个问题:为什么文件被创建的时候,它的默认权限设置是我们看到的样子,而不是其他?

其实新建文件夹默认权限=0666
新建目录默认权限=0777

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask(即先将umask按位取反,再将其结果跟mask进行按位与操作)

格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

#umask 755
#umask //查看
#umask 044//设置


chown

功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名

实例:
【关于Linux中权限管理】_第7张图片
可见,把文件传递给其他用户是不能“单方面”进行的。
解决方案有两个:①用sudo指令强制转移文件 ②先切换到root,然后直接改变文件拥有者

root用户将文件传递给其他用户,是可以单方面执行的,如下:

【关于Linux中权限管理】_第8张图片
chgrp

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

与上面的操作类似,就不做演示了

还需要注意,改变自己创建的文件的所属组可以单方面进行,但改变其他用户的所属组不可以单方面进行。如下:
【关于Linux中权限管理】_第9张图片


五、目录的权限

可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.而这样是不安全的。

[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld
drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-rw-r–r–. 1 root root 0 9月 19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9月 19 15:53 litao
-rw-r–r–. 1 root root 0 9月 19 15:59 root.c
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的文件
rm:是否删除有写保护的普通空文件 “/home/root.c”?y
[litao@localhost ~]$ exit
logout

为了解决这个问题,Linux引入了一个粘滞位的概念

[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": 不允许的操作

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

你可能感兴趣的:(Linux重难点,linux,服务器,运维)