网站首页 > 博客文章 正文
一、文件权限基础
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,例如给用户 alice 和 bob 分配读取和写入权限:
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:为多个用户分配权限
假设有两个用户 alice 和 bob,希望他们都能读取和写入 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--
猜你喜欢
- 2024-10-02 K8s 网络问题自己能解决吗?(k8s网络不稳定)
- 2024-10-02 重学计算机组成原理(七)- 程序无法同时在Linux和Windows下运行
- 2024-10-02 AOP编程_Android优雅权限框架(2)Demo完全解析
- 2024-10-02 微信小程序云数据库update更新数据为0问题解决
- 2024-10-02 su切换用户:su failed to execute /bin/bash;Permission denied
- 2024-10-02 大数据------安装错误集锦(详细解决教程)
- 2024-10-02 gradle4.1后not resolve com.android.tools.build:gradle:3.0.1
- 2024-10-02 纳税申报系统常见问题(纳税申报系统常见问题有哪些)
- 2024-10-02 mediaDevices.getUserMedia提示DOMException:Permission denied by
- 2024-10-02 终于有人把所有的Java异常处理方法给总结出来了
你 发表评论:
欢迎- 07-08Google Cloud Platform 加入支持 Docker 的容器引擎
- 07-08日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 07-08美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- 07-08GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 07-08谷歌推出Cloud Dataproc,缩短集群启动时间
- 07-08Infovista与Google Cloud携手推进射频网络规划革新
- 07-08比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- 07-08BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- 最近发表
-
- Google Cloud Platform 加入支持 Docker 的容器引擎
- 日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 谷歌推出Cloud Dataproc,缩短集群启动时间
- Infovista与Google Cloud携手推进射频网络规划革新
- 比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- NCSA和Google Cloud合作开发AI驱动的网络防御系统,加强泰国网络空间的安全性
- SAP将在沙特阿拉伯 Google Cloud 上推出BTP服务
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)