linux权限

Linux系统
218
0
0
2024-04-26
欢迎来到薄荷冰的linux系列 下面我们将按照下面的图为大家讲解linux权限相关的知识

一.linux下用户的分类

在linux中有两种用户:超级用户(root)、普通用户。

超级用户:可以再linux系统下做任何事情,不受限制。 普通用户:在linux下做有限的事情。

可以看到超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

在这里有三个相关的指令

1.su类
命令su + [用户名]功能:切换用户。 例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码; 注意区分: su -    利用【su - 】切换成超级用户的原理是【重新登陆】,而【su】只是【单纯切换】 
图示:


2.exit / ctrl+d
命令:exit / ctrl d功能:返回超级用户root(从root,su到普通用户后)
三.sudo 
命令sudo + 指令 场景:【信任白名单中的普通用户】 功能:提高普通用户的权限,【再输入普通用户的密码后】完成一些普通用户完成不了的指令。 注意要点:正常我们用 【adduser指令 创建的普通用户】是无法完成sudo提权的,因为如果普通用户只需要输入自己的密码就能拥有超级用户的权限去完成指令,十分不合理;只有添加到系统的信任白名单(/etc/sudoers)即配置文件中,才能成功执行;

二.linux权限管理 

当我们用ls -l指令查看文件时,会出现如下情况

其实前面的这一长串字母就代表了文件类型的权限。其分析具体如下:

 2.1文件访问者的分类(人)

一般分为 所属用户(u---User),所属用户组(g---Group),其他(o---Others)。

2.2文件类型和访问权限(物)

a) 文件类型

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

b) 基本权限

i. 读( r/4 ): Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限 ii. 写( w/2 ): Write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限 iii. 执行( x/1 ): execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限 iv.“—” 表示不具有该项权限
 注意:
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法 cd 进入目录, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的 读 权限
2.3.文件权限值的表示方法
a)字符表示方法

b)8 进制数值表示方法

2.4权限相关的指令
a)chmod(设置文件的访问权限)


格式chmod [参数] 权限 文件名注意:只有文件的拥有者和root才可以改变文件的权限 常用选项: R -> 递归修改目录文件的权限
  • 参数:【字符表示方法】
用户表示符+/-=权限字符:
  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

用户表示符:

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

代码语言:javascript

复制

# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt 
  •  参数:【2进制表示】
三位8进制数字:即用8进制方式,依次排布图示:

代码语言:javascript

复制

# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt
b)chown(修改文件的拥有者


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

代码语言:javascript

复制

# chown user1 f1
# chown -R user1 dir1
c)chgrp(修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名 常用选项
  • -R 递归修改文件或目录的所属组。

例:

代码语言:javascript

复制

# chgrp users /abc/f2
# chgrp -R users /abc/f2
d)umask
功能 : 查看或修改文件掩码 新建文件夹默认权限 =0666 新建目录默认权限 =0777 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask 的影响。假设默认权限是 mask ,则实际创建的出来的文件权限是 : mask & ~umask 格式 : umask 权限值 说明 :将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022 ,普通用 户默认为 0002 。

例:

代码语言:javascript

复制

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

 三.粘滞位

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

于是问题来了,只要具有目录的写权限,用户就可以删除目录中的文件而不论是否有这个文件的写的权限。这似乎不和逻辑,为了解决这个不科学的问题,所以linux引入了粘滞位的概念。

代码语言:javascript

复制

[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), 则该目录下的文件只能由 一、超级管理员删除 二、该目录的所有者删除 三、该文件所有者

四、总结

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