目录

一、Linux权限

1、概念

2、超级用户和普通用户的相关操作

a. 添加用户,删除用户

b. 超级用户和普通用户的切换 

c. sduo提权以及白名单设置 

二、Linux权限管理 

1、文件访问者的分类

2、文件访问类型和权限

a. 文件类型

b. 基本权限

3、文件权限值得表示方法

a. 字符表示方法

b. 8进制数值表示方法

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

 a. chmod  —设置文件的访问权限

b. chown  —修改文件拥有者

c. chgrp  —修改文件或目录的所属组

d. umask —查看或修改文件掩码

5、目录的权限 

6、粘滞位

三、总结


一、Linux权限

1、概念

Linux
下有两种用户:超级用户(
root
)、普通用户。那么什么是超级用户,什么是普通用户呢?
超级用户:可以在Linux系统下做任何事,不受限制。超级用户的命令提示符是”#”
普通用户:在Linux下做有限的事情。普通用户的命令提示符是”$”

2、超级用户和普通用户的相关操作

a. 添加用户,删除用户

那么该如何添加普通用户呢? 

创建用户:第一步: adduser + 用户名  第二步:passwd + 用户名 

删除用户:userdel  -r + 用户名 (这样可以彻底删除干净,如果直接使用userdel + 用户名可能会删不干净)   这里补充一下:ls /home 可以查看当前账号有哪些普通用户。

 

如果直接使用userdel + 用户名导致并没有删除干净的解决办法:

b. 超级用户和普通用户的切换 

超级用户—–>普通用户:

su + 普通用户名  (超级用户切换到普通用户不需要输入密码)

退出:ctrl + d 或者 exit

 

 普通用户—->超级用户:

第一种:su –  以root身份重新登录一次   (普通用户切换超级用户需要超级用户的密码)

第二种:单纯的身份切换    (普通用户切换超级用户需要超级用户的密码)

退出:ctrl + d 或者 exit

c. sduo提权以及白名单设置 

现在我不想把我这个普通用户变成root,但是我却想让普通用户以root权限执行一条命令,有没有什么办法呢? 

sudo touch file.txt 可以在命令前加上sudo 进行短暂提权 

那么我现在不想每次都去进行sudo提权操作该怎么办呢?

使用sudo白名单配置(在root账号下操作)

1、ll /etc/sudoers   —-查找白名单配置

2、vim /etc/sudoers

3、将普通用户添加进白名单

Linux 权限及管理-CSDN博客

4、保存退出 

 

二、Linux权限管理 

1、文件访问者的分类

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

2、文件访问类型和权限

a. 文件类型

b. 基本权限

1、读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
2、写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
3、执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
4、“—”表示不具有该项权限

3、文件权限值得表示方法

a. 字符表示方法

b. 8进制数值表示方法

 

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

 a. chmod  —设置文件的访问权限

格式:
chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有
文件的拥有者和root
才可以改变文件的权限

 

从上图中看出,通过chmod我们的文件权限确实被更改了,那么图中的u+x,u-x,g+w,o+w,这些都是什么呢?

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

我们可以向上图那样用字符进行修改,也可以使用3位8进制数进行修改:

这里需要注意一下:

普通文件的起始权限是:666       目录文件的起始权限是:777 

b. chown  —修改文件拥有者

语法格式:chown+用户名+文件

 对于普通用户而言,在更改拥有者时会被拒绝,这个时候就需要使用sudo命令:

c. chgrp  —修改文件或目录的所属组

语法格式:chgrp+用户名+文件

常用选项-R 递归修改文件或目录的所属组

和chown一样,对于普通用户而言,在更改所属组时会被拒绝,这个时候就需要使用sudo命令: 

d. umask —查看或修改文件掩码

上面也提到了:

新建文件夹默认权限=0666     
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到
umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是:
mask & ~umask
语法格式:umask    —查看umask       umsak 权限值  —修改umask

 root的默认掩码为:0022   普通用户默认掩码为:0002 

5、目录的权限 

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

这个时候或许我们会有一个疑问:就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。意思就是说,今天在这个目录下A和B都对这个目录具有写权限,此时A新建了一个文件,那么B是不是可以把这个文件进行删除呢?这好像有bug啊,凭什么A新建的文件,B可以删除呢?我们来试一下是不是这样:

果然可以删除,所以,为了解决这个问题Linux引入了粘滞位的概念 

6、粘滞位

给目录中的other设置一个权限位,同时也进一步对目录进行特殊限定,该目录下的文件,只用超级管理员root,目录的所有者,文件的所有者能够删除,其他人一概不允许!

三、总结

目录的可执行权限是表示你可否在目录下执行命令。
如果
目录没有-x权限,则无法对目录执行任何命令
,甚至无法cd 进入目, 即使
目录仍然有-r 读权限
(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)。
而如果目录具有-权限,但没有-r 权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。