【Linux】权限

发布于:2024-02-05 ⋅ 阅读:(38) ⋅ 点赞:(0)

目录

1.shell(命令行解释器)

2.用户

3.权限的概念

4.权限的操作

4.1chmod指令

4.2chown指令

4.3chgrp指令

4.4sudo指令 

4.5umask指令

4.6file指令

5.粘滞位

5.1为什么会有粘滞位?

5.2设置粘滞位


1.shell(命令行解释器)

对于Linux操作系统,一般用户不能直接与之交互,而是通过外壳程序(shell),实现用户和Linux内核的交互。

shell简单地说就是命令行解释器,包含:

  • 将使用者的命令翻译给内核处理
  • 将内核的结果翻译给使用者

shell对于Linux就相当于图形化界面对于windows操作系统,Windows系统下,我们通过图形化界面,单击或双击以实现对应的操作,Linux系统下,我们通过shell命令行的命令实现相关操作,shell解析指令给Linux内核,内核的反馈结果通过shell解析给用户

shell存在的意义:

  • 帮助实现Linux内核和用户之间的交互
  • 当用户输入非法指令时,shell拒绝即报错,间接地保护了操作系统

shell执行命令:通过派生子进程的方式执行用户的指令,而shell本身并不执行对应的指令

2.用户

shell中的两种用户:

  • root用户:超级管理员,不受权限约束
  • 普通用户:受权限的约束

root用户下,可以切换为任意普通用户,不需要密码,而普通用户登录下切换到root用户,需要密码验证。

3.权限的概念

简单理解,权限是约束人是否可以对目标对象进行某些操作,Linux中的权限一般可以认为是文件权限,权限就是约束文件访问者对文件的操作。

权限存在的意义:便于系统进行安全管理

文件访问者的分类:

  1. 文件和文件目录的所有者
  2. 文件和文件目录的所属组中所有用户
  3. 其他用户

文件基本权限:

  1. r:可读(对文件:读取文件内容的权限对目录:浏览该目录信息的权限
  2. w:可写(对文件:修改文件内容的权限对目录:删除移动目录内文件的权限
  3. x:可执行(对文件:执行文件的权限对目录:进入目录的权限

Linux文件类型:

  • 普通文件:以-开头
  • 目录文件:以d开头

  • 字符设备文件:以c开头(如键盘,显示器等)
  • 块设备:以b开头(如磁盘)
  • 链接文件:以l开头(类似windows的快捷方式)
  • 管道文件:以p开头
  • socket文件:以s开头

📖Note:

Linux系统下,文件类型与文件的后缀无关,也就是说Linux系统下,不以文件的后缀区分文件类型,文件后缀仅作为给用户的一个提示符号,本质上是文件名的一部分,Linux系统下区分文件类型通过文件属性信息中第一列的第一个字符

上述属性并不代表Linux系统中使用的工具也不以后缀区分文件,如gcc编译文件时,.txt为后缀的文件会编译报错,而.c为后缀的文件可以编译通过。

文件权限值的八进制表示法:

权限(r;w;x) 八进制 二进制
r-- 4 100
-w- 2 010
--x 1 001
rw- 6 110
r-x 5 101
-wx 3 011
rwx 7 111
--- 0 000

例如:

目录dir的权限使用八进制表示为775

文件test.c的权限使用八进制表示为664

4.权限的操作

4.1chmod指令

语法:chmod 选项 参数  文件名

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

常用选项:

  • -R:递归修改目录文件的权限

📖Note:只有文件的拥有者和root用户才可以修改文件的权限

参数:用户标识符+/-/=权限字符(r/w/x)

用户符号:

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

权限操作符号:

  • +:向目标文件增加权限符号所表示的权限
  • -:向目标文件删除权限符号所表示的权限

4.2chown指令

语法:chown 参数 用户名 文件名

功能:修改文件的拥有者

4.3chgrp指令

语法:chgrp 参数 所属组名 文件名

功能:修改文件的拥有者

常用选项:

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

4.4sudo指令 

语法:sudo 指令

功能:不切换到root用户下,以root用户的身份执行指令

使用sudo提权时,可能会出现以上情况,提示普通用户不在sudoers文件中,这时需要配置sudoers文件,如下,使用vim打开sudoers文件,添加普通用户为信任用户即可

vim底行模式wq退出时,出现下列报错,只需要wq!强制退出即可 

sudoers文件配置成功后,执行sudo命令即可成功对指令提权 

4.5umask指令

语法:umask 权限值

功能:查看或修改文件掩码,新建文件默认权限为0666,新建目录默认权限为0777

实际上所创建的文件和目录,看到的权限往往不是上述值,因为创建文件或目录时还受到umask的影响,实际创建出来的文件权限值为 默认权限 & (~umask)

root用户默认掩码值为0022,普通用户默认掩码值是0002

当我们以普通用户的身份新建一个目录或文件时,其权限值如下图所示:

目录:rwx rwx r-x   7 7 5

文件:rw- rw- r--   6 6 4

普通用户默认掩码值是0002

新建文件默认权限为0666,新建目录默认权限为0777

实际创建出来的文件权限值为 默认权限 & (~umask)

以文件为例:默认权限为0666,掩码值是0002(八进制)

umask = 000 000 010

~umask = 111 111 101 

默认权限:110 110 110

110 110 110 & 111 111 101 = 110 110 100 =  6 6 4

4.6file指令

语法:file 选项 文件或目录 

功能:辨识文件类型

常用选项:

  • -c:详细显示指令执行过程,便于排错或分析程序执行过程
  • -z:尝试解读压缩文件的内容

5.粘滞位

5.1为什么会有粘滞位?

对于一个目录,其rwx权限的意义如下:

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

日常开发中,为了便于协作,通常会由超级管理员root创建一个公共目录,在这个目录下,所有人都可以进行操作

在一个权限值为0777的目录下创建一个文件,这个文件的拥有者和所属组都是lxj,除lxj外其他用户都是other,对test.txt文件的只有可读权限

切换到普通用户lslg,不能对test.txt文件进行写入,但是普通用户lslg却可以删除属于lxj的文件test.txt。该操作被允许是因为由root创建的公共目录下的文件,删除一个文件与文件本身无关,而是取决于该文件所属目录的权限,other对opdir目录的权限为rwx,所有可以对别人的文件进行删除。

为了避免这种操作,即实现在一个公共目录下,大家只对自己的文件进行rwx操作,不会删除其他人的文件,因此需要给该公共目录设置粘滞位,这是权限的一种特殊情况。

5.2设置粘滞位

使用chmod指令给公共目录的other用户的可执行权限位变成t,就可以约束公共目录下普通用户对其他普通用户临时文件的操作

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到