Linux 权限

Source

1. Linux权限的概念

(1). root与普通用户

Linux下有两种用户:超级用户(root),普通用户

超级用户:拥有最高的权限可以在Linux系统下做任何事,不受限制

普通用户:在LInux系统下做有限的事

超级用户的命令提示符是"#",普通用户的命令提示符是"$"

 权限的本质是:能或者不能做什么事情

为什么有权限呢?

为了控制用户行为,防止错误的发生

(2). 创建与删除普通用户

使用root账号具有一定风险,其权限太大,可能会因为误操作而造成不可挽回的结果,所以我们最好创建一个普通用户的账号平时使用。我们可以使用adduser来创建一个新的普通用户

我们需要root权限来执行这些命令。

adduser godpc

 上面的godpc是要创建的新用户的用户名。执行此命令后,系统将提示你输入密码然后确认新用户的密码,还有一些选择性填写的信息;例如全名,电话等,可以不填

(3). 普通用户与root的切换

我们平时推荐使用普通用户,但是有些指令需要root用户的权限,这时候我们就可以切换用户了

命令:

su 用户名

功能:

切换用户

 从root用户切换到普通用户不需要密码,直接就可以切换

从普通用户切换到root用户则需要输入密码,切换到当前目录下

而使用 su -

则相当于重新登陆

切换用户后,想切回上次的用户可以按Ctrl+d实现,也可以输入指令exit


如果我们不知道root的密码但是有需要root去执行某条命令,这是就可以使用sudo指令,来临时提高我们的权限,即 让root用户执行,但是使用sudo需要root用户将我们当前的普通用户添加到可信任白名单中。

操作如下

## Allow root to run any commands anywhere  
root    ALL=(ALL:ALL) ALL
要添加到白名单的用户名    ALL=(ALL:ALL) ALL

 然后就可以啦

2. Linux的权限管理

(1). 文件访问者的分类(人)

权限限制的是人(角色)

权限要求目标必须具备对应的属性->权限=角色+目标属性

角色分为

1. 拥有者:文件和文件目录的所有者:u---User

2. 所属组:文件和文件目录的所有者所在的组的用户:g---Group

3. other:其它用户:o---Others

 

没有other是因为other一般都会存在多个,所有除了拥有者和所属组之外的都叫other。

(2). 文件类型和访问权限(事务属性)

开头一个字符是文件类型,文件类型如下

1. - :普通文件普通文件(指不包含有文件系统信息的结构信息的文件,是用户所接触到的文件,比如常见的.exe,.c,.txt等,归档文件等在Linux中统称为普通文件)。

2.:目录(文件夹)。

3.:软链接(类似Windows的快捷方式)文件。

4.:块设备文件(例如硬盘,光驱等)。

5.:管道文件。

6.:套接字文件。

7.:字符设备文件(例如屏幕等串口设备)。

后面九个字符三三一组

前面三个代表 文件拥有者的权限

中间三个代表 文件所属组的权限

后面三个代表 其他用户的权限

 访问权限可以分为:可读(r),可写(w),可执行(x)

字符表示法

Linux表示 说明
r - - 仅可读
- w - 仅可写
- - x 仅可执行
r w - 可读可写
r - x 可读可执行
- w x 可写可执行
r w x 可读可写可执行
- - - 无权限

 还有八进制数值表示方法

权限符号(读,写,执行) 八进制 二进制 说明
r - - 4 100 仅可读
- w - 2 010 仅可写
- - x 1 001 仅可执行
r w - 6 110 可读可写
r - x 5 101 可读可执行
- w x 3 011 可写可执行
r w x 7 111 可读可写可执行
- - - 0 000 无权限
(3). 文件访问权限的相关设置方法

chmod

功能:设置文件的访问权限

格式:chmod 参数  权限  文件名

常用选项

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

 ① 使用方法1:用户表示符+/-=权限字符

  • + :向权限范围增加权限代号所表示的权限
  • - :向权限范围取消权限代号所表示的权限
  • = :向权限范围赋予权限代号所代表的权限

用户符号:

  • u :拥有者
  • g:所属组
  • o:other其他用户
  • a:所有用户

 给其他用户添加权限

给其他用户删除权限

给其他用户赋予w权限

给多个用户改变权限时要用逗号隔开

②使用方法2:三位八进制数字

一个八进制数字就是三个二进制数字


chown

功能:修改文件的拥有者

格式:chown  参数  用户名  文件名

 常用选项:

-R 递归修改目录文件的拥有者。

 

可以看到拥有者已经变成了root了


chgrp

语法:chgrp  选项  用户名  文件名或目录名

功能:修改文件的所属组。

常用选项:

-R  递归修改目录文件的所属组 

 


可以使用chown指令来同时改变拥有者与所属组,中间用冒号隔开

以上指令都需要root权限

(4). 文件掩码

umask

功能:

查看或修改文件掩码

 新建文件夹默认权限为0666(rw- rw- rw-),新建目录的默认权限为0777(rwx rwx rwx),但实际上我们所创建的目录或文件,看到的权限往往不是上面的值,是为什么呢?

原因就是创建文件或目录的时候还要收到umask的影响。假设默认权限时mask,则实际创建出来的文件权限是:mask & ~umask

格式:umask 权限值

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

 

可以通过这个指令umask 八进制数 来修改默认的掩码 umask:

新创建出来的默认权限与之前不同了

(5). 权限的作用

可执行权限:如果目录没有可执行权限,则无法cd到目录中。

可读权限:如果目录没有可读权限,则无法使用ls等命令来查看目录中的文件内容。

可写权限:如果目录中没有可写权限,则无法在目录中创建文件。也无法在目录中删除文件。

 这样就引出了一个问题:只要用户具有目录的写权限,用户就可以删除目录中的文件,而这显然是不合理的,我创建的文件为什么别人想删就删呢?

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

(6). 粘滞位

为目录添加粘滞位很简单,只需要输入指令 chmod +t 目录名

在为目录添加了粘滞位后,该文件就只能由 root用户或者该目录或文件的拥有者来进行删除。


这篇文章就到这里啦ヾ( ̄▽ ̄)Bye~Bye~

祝大家国庆节快乐!!!(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤