当前位置: 首页 > news >正文

【Linux系统编程】4. Linux权限

一、Linux权限的概念

Linux下有两种⽤户:超级⽤户(root)、普通⽤户。

  • 超级⽤户:可以再linux系统下做任何事情,不受限制。
  • 普通⽤户:在linux下做有限的事情。
  • 超级⽤户的命令提⽰符是#,普通⽤户的命令提⽰符是$

1、su指令

命令: su [用户名]
功能: 切换⽤户
举例:

  1. 从root⽤户切换到普通⽤户user(不需要输入密码)
su user
  1. 从普通⽤户user切换到root⽤户(需要输入密码,密码不回显)
su root # root可以省略

注意:
新建用户:adduser [用户名]
设置新建用户的密码:passwd [用户名]

2、sudo指令

语法:sudo [选项] [命令]
功能:是用来进行指定的短暂提权
常用选项:

  • -u:指定以哪个用户身份执行命令,后面接用户名
  • -l:列出当前用户可以使用 sudo 执行的命令列表

举例:

  1. 普通用户提权访问root的文件
sudo cat code.c

可以看到普通用户是无法直接访问root下面的文件的,但是通过sudo提权后就可以短暂的访问了。

但是要想能够提权的话,还需要将用户加入白名单中
先更改为root身份:su root
再编辑 sudoers 文件:visudo
在文件中找到类似 root ALL=(ALL) ALL 的行,根据自己的用户名,在下面添加一行即可。

  1. 以root权限安装软件包
sudo yum install cowsay

二、Linux权限管理

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

为什么需要进行权限管理?

  1. 控制用户的行为,防止错误的发生
  2. 权限首先限制的是角色(人),权限要求目标必须具备对应的属性

⽂件类型:

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

三、⽂件访问权限的相关设置⽅法

1、chmod指令

语法: chmod [选项] 权限模式 文件或目录名
功能: 更改文件或目录的访问权限
常⽤选项:

  • -R:递归修改⽬录⽂件的权限

注意: 只有⽂件的拥有者和root才可以改变⽂件的权限

权限模式分为 字母表示法数字表示法

1)字母表示法

语法: chmod [u g o a] [+ - =] [r w x] 文件或目录名

举例:

  1. 添加权限:chmod u+x my.txt
  2. 移除权限:chmod o-r my.txt

2)数字表示法

这里是用3个8进制数字来表示的,每一个8进制数字可以分为3个bit位,正好对应所拥有的权限。

例如:666
在这里插入图片描述

举例:chmod 666 my.txt

2、chown指令

功能: 修改⽂件的拥有者
格式: chown [选项] [新拥有者][:新所属组] 目标文件/目录

举例:

  1. 仅修改拥有者:sudo chown root my.txt

  2. 同时修改拥有者和所属组:sudo chown zsy:zsy my.txt

注意: 系统默认不允许我们把文件给别人,想给别人必须高权限,通过sudo / su 切换成为root。

3、chgrp指令

语法: chgrp [选项] 组名 文件或目录名
功能: 修改⽂件或⽬录的所属组
常⽤选项: -R 递归修改⽂件或⽬录的所属组

举例: `

  1. 修改所属组

4、umask指令

语法: umas [权限掩码]
功能: 查看或修改⽂件掩码

对于普通文件:起始权限666,默认不带x。
对于目录文件:起始权限777,默认带x。
但实际上我们所创建的文件和目录,看到的权限往往不是上面这个值,因为系统默认会存在一个叫做权限掩码的概念,超级⽤户默认掩码值为0022,普通⽤户默认为0002。

举例:

  1. 查看当前umask掩码:umask

  2. 设置新的umask掩码(数字表示法)

重点:

  • umask 目的是什么?
    :希望凡是在umask中出现的权限,都不应该在最终权限中出现。

  • 为什么要有umask?
    :a. 默认权限,由OS自主决定,无法在创建前进行修改 — 系统可配置,可以灵活满足需要的一种表现。
    :b. 特殊情况下,配置umask,可以控制文件的默认权限,让我们的代码都是可控的。

5、file指令

语法: file [选项] 文件或目录
功能: 识别文件的类型
常⽤选项:

  • -c:详细显⽰指令执⾏过程,便于排错或分析程序执⾏的情形。
  • -z:尝试去解读压缩⽂件的内容。

举例:

四、⽬录的权限

  • 如果目录没有r,就无法查看目录里面的文件
  • 如果目录没有w,就无法在目录内部新建文件,也无法在目录中删除文件
  • 如果目录没有x,就无法进入目录

于是,问题来了,换句话来讲,就是只要用户具有⽬录的写权限,⽤户就可以删除⽬录中的⽂件,⽽不论这个⽤户是否有这个⽂件的写权限。
这好像不太科学啊,我张三创建的⼀个⽂件,凭什么被你李四可以删掉?

1、粘滞位

为了解决这个不科学的问题,Linux引⼊了粘滞位(t)的概念。
当⼀个⽬录被设置为"粘滞位"(chmod + t),则该⽬录下的⽂件只能由超级管理员该⽬录的拥有者该⽂件的拥有者删除,而不能被非拥有者删除。

此时我们在切换到其他用户,尝试删除操作

可以发现此时无法再删除文件了!

五、关于权限的总结

  1. 用户只能更改自己的文件权限

  2. 没有权限系统会拒绝让我们访问

  3. 确定权限信息的时候,系统会先确定用户是谁?在Centos下,用户角色确定,只确定一次,顺序是:拥有者,所属组,other

  4. root用户不受权限约束

  5. 可执行权限 != 文件可以执行

  6. 理解linux多用户之间是怎么互相隔离的?任何用户无法进入其他用户的家目录!

  7. 一个文件能否被删除,与文件本身无关!与文件所处的目录w权限有关!

http://www.dtcms.com/a/503317.html

相关文章:

  • 个人主页网站制作免费融资平台哪家好
  • week6
  • ZigBee中的many-to-one和link status(3)
  • 大型网站多少钱佳源房地产最新消息
  • Linux Bash(一)
  • 【Redis】哨兵与对脑裂的情况分析
  • 49.词向量:把文字变成数字
  • 【pulldown-cmark】创建自定义分支
  • python 网站开发流程图网站首页被k还有救吗
  • TsingtaoAI受邀参加HICOOL2025全球创业者峰会项目对接会
  • windows10激活解决办法
  • 学习建网站玩网站建设学习包装设计需要哪些信息
  • 【图像处理】rgb和srgb
  • 如何撰写网站建设方案海口网站开发制作
  • 查找成绩(向量实现)
  • STL中容器string -- 讲解超详细
  • Python lambda 表达式详解
  • 【JavaScript】原生函数
  • 渗透测试中爆破与撞库的区别
  • 门户网站如何做谷歌seo儿童网站建设
  • AI智能体的“瑞士军刀”:工具调用功能详解与实践
  • GYCTF2020
  • 2025-10-19 hetao1733837刷题记录
  • 批量字符替换工具,支持多种格式
  • 50.情感分析:AI读懂你的心情
  • 嵌入式Linux开发环境学习(二)
  • 分析静态代码分析工具
  • unix做网站常用的数据库用php做网站后台
  • Fiddler抓包+Postman实战之--客户关系管理软件自动化测试
  • 『 数据库 』MySQL复习 - 从更新删除到分组聚合查询实践