值得收藏的Linux 权限管理命令详解

一、文件权限基础

Linux 的文件权限分为三类:用户(User),组(Group),和其他人(Others)。每类权限又分为三种:读取(Read),写入(Write),和执行(Execute)。文件权限用一个九位数的字符串来表示,例如 rwxr-xr--,可以使用list -l命令查看。权限管理主要涉及了chmod,chown,chgrp,umask,setfacl,getfacl,su等几个命令

权限位及含义
  • 用户(User)权限: 第一组字符,表示文件所有者的权限。
  • 组(Group)权限: 第二组字符,表示文件所属组的权限。
  • 其他人(Others)权限: 第三组字符,表示其他用户的权限。
权限符号
  • r: 读权限,值为 4。
  • w: 写权限,值为 2。
  • x: 执行权限,值为 1。
  • --: 无权限,值为 0。

二、权限管理命令

ls -l 查看权限:

使用 ls -l 命令可以查看文件的详细信息,包括权限。

ls -l example.txt

chmod 修改文件权限:

chmod 命令用于修改文件权限,可以使用数字或符号方式。

使用数字方式:

例如,设置文件 example.txt 权限为 754

chmod 754 example.txt

这表示:

  • 用户权限:7 = rwx
  • 组权限:5 = r-x
  • 其他人权限:4 = r--

使用符号方式:

例如,为用户增加写权限:

chmod u+w example.txt

chown 修改文件所有者:

使用 chown 命令改变文件的所有者:

chown newowner example.txt

chgrp 修改文件所属组

使用 chgrp 命令改变文件的所属组:

chgrp newgroup example.txt

三、默认权限和 umask

默认情况下,新创建文件和目录的权限是由系统的 umask 值决定的。umask 是一个三位八进制数,表示要屏蔽的权限。

查看和设置 umask

查看当前的 umask:umask

设置新的 umask:umask 022

四、特殊权限

Linux 文件系统中有一些特殊权限:

Setuid(SUID)

设置文件在执行时具有文件所有者的权限:

chmod u+s executable_file

Setgid(SGID)

设置文件在执行时具有文件所属组的权限,或者新建的文件继承目录的组:

chmod g+s directory_name

Sticky Bit

只允许文件所有者或 root 删除文件:

chmod +t directory_name

五、ACL(Access Control Lists)

ACL 允许为单个文件或目录设置更为细粒度的权限。

安装 ACL 工具

如果系统中未安装 ACL 工具,可以使用以下命令安装:

sudo apt-get install acl

查看和设置 ACL

查看文件的 ACL:

getfacl example.txt

设置 ACL,例如给用户 alicebob 分配读取和写入权限:

setfacl -m u:alice:rw example.txt

setfacl -m u:bob:rw example.txt

删除 ACL:

setfacl -x u:alice example.txt

六、SELinux 和 AppArmor

除了传统的权限管理机制,Linux 还引入了更为复杂和强大的安全模块,如 SELinux 和 AppArmor。

SELinux

提供强制访问控制(MAC),通过安全策略来限制进程的行为。

AppArmor

使用文件路径和配置文件来限制程序的能力,易于配置和管理

七、权限设置举例

示例1:设置基本文件权限

假设有一个文件 example.txt,设置如下权限:

  • 用户拥有读取、写入和执行权限。
  • 组拥有读取和执行权限。
  • 其他人拥有读取权限

chmod 754 example.txt

示例2:为多个用户分配权限

假设有两个用户 alicebob,希望他们都能读取和写入 example.txt 文件。

setfacl -m u:alice:rw example.txt

setfacl -m u:bob:rw example.txt

查看 ACL 设置:

getfacl example.txt

处理访问无权限的问题

假设用户 charlie 尝试读取 example.txt,但没有权限。

su charlie cat example.txt

cat: example.txt: Permission denied

解决方法:给 charlie 分配读取权限:

setfacl -m u:charlie:r example.txt

验证修改后的权限:

复制代码
getfacl example.txt
输出显示 charlie 已有读取权限:
# file: example.txt
# owner: current_owner
# group: current_group
user::rw-
user:alice:rw-
user:bob:rw-
user:charlie:r--
group::r--
mask::rw-
other::r--

文章地址 值得收藏的Linux 权限管理命令详解 -- AI小站

相关推荐
韩楚风3 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学3 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO3 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu73 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我3 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、3 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程4 小时前
Linux中环境变量
linux
我是哈哈hh4 小时前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
郭二哈4 小时前
C++——模板进阶、继承
java·服务器·c++
挥剑决浮云 -4 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记