目录
[a. 添加用户,删除用户](#a. 添加用户,删除用户)
[b. 超级用户和普通用户的切换](#b. 超级用户和普通用户的切换)
[c. sduo提权以及白名单设置](#c. sduo提权以及白名单设置)
[a. 文件类型](#a. 文件类型)
[b. 基本权限](#b. 基本权限)
[a. 字符表示方法](#a. 字符表示方法)
[b. 8进制数值表示方法](#b. 8进制数值表示方法)
[4、 文件访问权限的相关设置方法](#4、 文件访问权限的相关设置方法)
[a. chmod ---设置文件的访问权限](#a. chmod ---设置文件的访问权限)
[b. chown ---修改文件拥有者](#b. chown ---修改文件拥有者)
[c. chgrp ---修改文件或目录的所属组](#c. chgrp ---修改文件或目录的所属组)
[d. umask ---查看或修改文件掩码](#d. umask ---查看或修改文件掩码)
一、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、将普通用户添加进白名单
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进入目录。但由于没有目录的读权限。