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

Linux权限拓展

文件归属更改

==可以改变属主和属组==

chown 命令(修改属主和/或属组)

chown [选项] 新属主:新属组 文件或目录

或(仅修改属组)
chown [选项] :新属组 文件或目录

常用选项

-R:递归处理目录及其子内容。 -v:显示操作详情

案例:同时修改属主和属组

将文件 file.txt 的属主设为 alice,属组设为 developers
chown alice:developers file.txt

案例:仅修改属主

将目录 /data 的属主设为 bob(不修改属组)
chown bob /data

案例:仅修改属组

将文件.log的属组设为 admins(等价于 chgrp)
chown :admins file.log

案例:递归修改目录及其子内容

将 /var/www 目录下所有内容的属主设为 www-data,属组设为 web
chown -R www-data:web /var/www

设置位S(SUID/SGID,针对二进制文件)

设置位S的作用

SUID(Set User ID):当普通用户执行具有SUID权限的二进制文件时,临时继承文件属主的权限(通常是root)。 SGID(Set Group ID):类似SUID,但继承的是文件属组的权限。

==主要针对二进制文件(命令),为了让一般使用者临时具有该文件所属主/组的执行权限。==

/usr/bin/passwd 在执行它的时候需要去修改 /etc/passwd 和 /etc/shadow 等文件。

这些文件除了root外,其他用户都没有写权限,但是又为了能让普通用户修改自己的密码,该怎么办呢?

whereis 命令,主要功能就是查询某个命令所在的路径,基本语法 => whereis passwd

普通账号 => 执行 /usr/bin/passwd => 修改/etc/shadow 文件(存放用户的密码)

/etc/shadow 文件比较特殊,其权限为(000),除root外,其他人都没有权限

/usr/bin/passwd 的SUID机制

ls -l /usr/bin/passwd

输出示例:-rwsr-xr-x 1 root root 59976 Nov 24  2022 /usr/bin/passwd

s 表示SUID已启用(属主执行位为 s 而非 x)。

==普通用户执行 passwd 时,临时获得root权限,从而修改 /etc/shadow(默认权限:-rw-r-----,仅root可写)。==

添加SUID:

  chmod u+s /path/to/file    符号法
  chmod 4755 /path/to/file   数字法(4表示SUID,755为基本权限)

移除SUID:

 chmod u-s /path/to/file    符号法
  chmod 0755 /path/to/file   数字法(0表示清除特殊权限)

验证权限:

 ls -l /usr/bin/passwd      检查属主执行位是否为 `-rws`

沾滞位T(针对文件夹)

SBIT核心功能:在具有写权限的目录中,仅文件所有者、目录所有者或root可删除文件。

典型场景:多用户共享目录(如 /tmp),防止用户误删他人文件。

/tmp 目录的粘滞位

默认权限分析:

ls -ld /tmp

输出示例:drwxrwxrwt 10 root root 4096 Aug 30 10:00 /tmp

t 表示粘滞位已启用(其他用户执行位为 t 而非 x)。

功能验证:

用户A在 /tmp 创建文件 fileA.txt

用户B无法删除 fileA.txt,除非用户B是root或文件所有者。

添加粘滞位:

chmod o+t /path/to/dir     符号法
  
  chmod 1777 /path/to/dir    数字法(1表示粘滞位,777为基本权限)

移除粘滞位:

 chmod o-t /path/to/dir     符号法
  chmod 0777 /path/to/dir    数字法(0表示清除特殊权限)

验证权限:

 ls -ld /tmp                检查其他用户执行位是否为 `rwt`

注意事项

  1. 仅对目录有效:对文件设置粘滞位无意义。

  2. 权限配合:粘滞位需与目录的写权限(w)配合使用,例如 1777 表示所有用户可读写,但受删除限制。

权限类型 | 符号表示 | 数字表示 | 适用对象 | 核心作用 | | :案例--: | :案例: | :案例: | :案例--: | :案例案例案例案例--: | | SUID | u+s | 4xxx | 二进制文件 | 用户临时继承文件属主权限 | | SGID | g+s | 2xxx | 目录/文件 | 继承属组权限或强制子文件属组 | | 粘滞位 | o+t | 1xxx | 目录 | 限制文件删除权限 |

ACL访问控制

为什么需要ACL

ACL,是 Access Control List(访问控制列表)的缩写,在Linux系统中,ACL可实现对单一用户设定访问文件的权限。

扩展:ACL权限可以针对某个用户,也可以针对某个组。ACL优势就是让权限控制更加的精准。

传统权限的局限性:

  1. 无法为多个用户/组单独授权:例如,共享目录需要允许用户A、B、C分别读写,但又不属于同一个组。

  2. 权限继承不灵活:目录下新建文件无法自动继承复杂权限规则。

ACL 的优势:

支持为任意用户或组单独设置权限。

支持为目录设置默认权限规则(新建文件自动继承)。

ACL 权限优先级

当多个规则冲突时,优先级顺序为:

用户条目 > 组条目 > 传统属主权限 > 传统属组权限 > 其他用户权限

获取某个文件的ACL权限

基本语法:

getfacl 文件或目录名称

给某个文件设置ACL权限
setfacl【选项】文件或目录名称
​
选项说明:
-m:添加/修改 ACL 规则。
-x:删除 ACL 规则。
-b:删除所有 ACL 规则。
-R:递归操作目录。
-d:设置默认 ACL 规则(仅目录)。

案例:针对readme.txt文件给linuxuser设置一个权限=>可读

setfacl1 -m u:linuxuser:r readme.txt => 针对某个用户开通ACL权限

案例:针对shop文件夹给zking组设置一个权限=>可读可写权限rw

setfacl -R -m g:zking:rw shop => 针对某个用户组开通ACL权限

案例:把linuxuser用户权限从readme.txt中移除掉

setfacl -x u:linuxuser readme.txt

案例:把zking用户组权限从shop中移除掉

setfacl -x g:zking shop

案例:把readme.txt文件中的所有ACL权限全部移除

setfacl -b readme.txt

使用 ACL 管理运维部门共享目录权限

某公司运维部门需管理服务器日志目录 /data/logs,要求:

  1. 运维组(ops-team)拥有完全控制权。

  2. 开发组(dev-team)可查看日志,但不可修改。

  3. 临时审计员(用户 audit-user)需临时拥有 7 天读写权限。

  4. 其他部门禁止访问。

  5. 未来新增日志文件自动继承权限。

创建目录

mkdir -p /data/logs ​ 创建用户和组 groupadd ops-team groupadd dev-team useradd -G ops-team ops-admin useradd -G dev-team dev-user useradd audit-user ​ 设置目录属组 chown :ops-team /data/logs

设置基础权限

属组可读写,其他用户无权限

chmod 770 /data/logs

使用 ACL 添加精细权限

允许 dev-team 组读和执行(查看文件列表和内容)
setfacl -m g:dev-team:rx /data/logs
​
允许 audit-user 用户读写(临时权限)
setfacl -m u:audit-user:rwx /data/logs
​
设置默认 ACL(未来新增文件自动继承)
setfacl -d -m g:ops-team:rwx /data/logs
setfacl -d -m g:dev-team:r-x /data/logs
setfacl -d -m u:audit-user:rw /data/logs

验证权限

查看目录 ACL 规则
getfacl /data/logs
​
输出示例:
file: data/logs
owner: root
group: ops-team
user::rwx
group::rwx
group:dev-team:r-x
user:audit-user:rw-
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:dev-team:r-x
default:user:audit-user:rw-
default:mask::rwx
default:other::---

测试权限效果

用户 ops-admin(运维组):

-u ops-admin touch /data/logs/server.log 成功创建文件

-u ops-admin rm /data/logs/server.log     成功删除文件

用户 dev-user(开发组):

-u dev-user cat /data/logs/server.log     可读

-u dev-user rm /data/logs/server.log     失败(无写权限)

用户 audit-user(临时审计员):

-u audit-user echo "test" >> /data/logs/server.log 可写

其他用户:

-u other-user ls /data/logs 失败(禁止访问)

权限回收(7天后)

移除 audit-user 的 ACL 权限
setfacl -x u:audit-user /data/logs

可选:清除所有 ACL 规则
setfacl -b /data/logs

http://www.xdnf.cn/news/211987.html

相关文章:

  • Headers池技术在Python爬虫反反爬中的应用
  • Kotlin 常见问题
  • 简单音频比较
  • 数据库day-08
  • C#中winform窗体如何捕获键盘按键事件
  • 深度学习篇---模型权重变化与维度分析
  • 阿里云 OpenManus 实战:高效AI协作体系
  • “情况说明“以后,Unity XR 开发者如何选择?
  • HTTP(超文本传输协议)全面总结
  • 蓝桥杯 10. 凯撒加密
  • [C]基础14.字符函数和字符串函数
  • 网络原理—应用层和数据链路层
  • 指针(5)
  • Spring Boot 集成 ActiveMQ 实现异步消息通信(一)
  • 跨平台项目部署全攻略:Windows后端+Mac前端在服务器的协同实战
  • Arduion 第一天,变量的详细解析
  • 三格电子——四路CAN转4G网关使用中的常见问题
  • 【深度学习新浪潮】ISP芯片算法技术简介及关键技术分析
  • 深度解析 MyBatis`@TableField(typeHandler = JacksonTypeHandler.class)`:优雅处理复杂数据存储
  • 深入理解二分查找
  • AI防摔倒检测系统
  • 实验七:基于89C51和DS18B20的温度采集与显示
  • 【从滚动条缺失到布局体系:前端布局问题的系统性思考】
  • pytorch 一些常用语法
  • 图漾官网Sample_V1版本C++语言完整参考例子---单相机版本
  • 企业办公协同平台安全一体化生态入住技术架构与接口标准分析报告
  • ubnuntu使用conda进行虚拟环境迁移,复制,克隆
  • Dify 使用模版转换实现更丰富的输入格式支持
  • linux FTP服务器搭建
  • 通信协议——SPI通信协议