0

0

Linux 文件权限设置及作用:了解文件分类与权限详情

王林

王林

发布时间:2024-07-21 08:25:12

|

1081人浏览过

|

来源于ITcool

转载

linux下文件权限设置及其作用文件权限与归属(读、写、执行权限)

linux系统中一切皆文件,要说权限,有必要先了解一下文件的分类

Linux中的文件分类

在linux系统中一切都是文件,并且文件类型不同,具体如下:

符号表示代表文件类型

普通文件

目录文件

链接文件

块设备文件

字符设备文件

管线文件

网络设备

door(Solaris)它提供了一种新的方式的插口linux 执行权限,用于顾客端和服务器的应用进程之间通讯的文件。

可以从下边的图中听到部份文件类型

在这里插入图片描述

读、写、执行权限

下边一张图表示出文件的类型为普通文件,用户具有读、写权限,组和其他用户具有读权限(644),所属root用户,所属root组,不仅文件类型,其他都和权限相关。

在这里插入图片描述

文件权限的表示

符号表示值权限具体意义

可读

文件:才能读取文件的内容;文件夹:可读取文件夹中的文件列表

可写

文件:编辑、新增、修改、删除;文件夹:新增、删除、重命名文件

可执行

文件:可执行脚本程序;文件夹:才能步入该目录

文件读、写、执行权限的设置

如对一个文件进行权限设置,可以用下边的方式:

<span class="token function">chmod</span> a+x filename <span class="token comment">#给所有人赋予该文件可执行权限</span>
<span class="token function">chmod</span> u+r filename <span class="token comment">#给用户赋予读权限</span>
<span class="token function">chmod</span> o+w filename <span class="token comment">#给其他用户赋予写权限</span>
<span class="token function">chmod</span> g+rw filename <span class="token comment">#给用户组赋予读、写权限</span>
<span class="token function">chmod</span> <span class="token number">741</span> filename <span class="token comment">#给用户赋予读、写、执行的权限;给用户组赋予读权限;给其他人赋予执行权限;</span>

文件其他权限设置可参考类推;文件夹权限设置也可以查看前面的设置。

查看设置好的文件权限

权限执行是什么意思_权限执行不_linux 执行权限

<span class="token function">ls</span> al filename <span class="token comment">#用这个命令查看设置好的文件权限</span>
<span class="token function">ls</span> ald forldname <span class="token comment">#查看文件夹的文件权限</span>

在这里插入图片描述

文件的特殊权限(SUID、SGID、SBIT)

在复杂多变的生产环境中,文件的rwx权限未能满足我们对灵活性和安全性的需求,因而有了SUID、SGID和SBIT的特殊权限位,这是一种对文件权限进行设置的特殊功能,可与通常权限同时使用,填补一些通常权限不能实现的功能。

SUID理解SUID

是一种对二补码程序进行设置的特殊权限,可以让二补码程序的执行者临时拥有属主的权限(仅对拥有执行权限的二补码程序有效)。

/etc/shadow是拿来储存用户密码的,权限位为000,不仅root用户没有用户可以操作它;

passwd是写密码的命令,passwd加上SUID特殊权限位,普通用户执行该命令的时侯能够使用root的身分将密码写入/etc/shadow中。

权限显示为rws就是被赋于了SUID的权限

SUID设置

chmodu+sexecutable

如更改zcat的SUID,原用户的权限显示为rwx

chmodu+szcat#为zcat加上SUID权限

ls-alzcat#x变为s就是被赋于了SUID权限

chmodu-szcat#为zcat除去SUID权限

在这里插入图片描述

假如用户对文件本身没有执行权限,为用户加上该权限后则权限会由-变为S

chmodu+szcat#为用户对zcat加上SUID权限

ls-alzcat#查看这个权限,发觉权限显示为rwS

在这里插入图片描述

权限显示为rwS是不能否执行的,会显示权限不够

<span class="token punctuation">[</span>root@a1e14095-cca7-5fa6-8bdf-3f0 bin<span class="token punctuation">]</span><span class="token comment"># chmod 644 zcat </span>
<span class="token punctuation">[</span>root@a1e14095-cca7-5fa6-8bdf-3f0 bin<span class="token punctuation">]</span><span class="token comment"># zcat </span>
-bash: /bin/zcat: 权限不够
<span class="token punctuation">[</span>root@a1e14095-cca7-5fa6-8bdf-3f0 bin<span class="token punctuation">]</span><span class="token comment"># chmod u+s zcat</span>
<span class="token punctuation">[</span>root@a1e14095-cca7-5fa6-8bdf-3f0 bin<span class="token punctuation">]</span><span class="token comment"># zcat </span>
<span class="token punctuation">[</span>root@a1e14095-cca7-5fa6-8bdf-3f0 bin<span class="token punctuation">]</span><span class="token comment"># ls -al zcat</span>
-rwSr--r-- <span class="token number">1</span> root root <span class="token number">1941</span> <span class="token number">4</span>月<span class="token number">11</span> <span class="token number">2018</span> zcat
-bash: /bin/zcat: 权限不够

SGID理解SGID

SGID和SUID类型,是一种对二补码程序进行设置的特殊权限,不过获取的不再是文件所有者的临时权限,而是获取文件所属组的权限。

SGID的作用:

1、让执行者拥有所属组的权限

2、在目录中创建的文件手动承继该目录的用户组权限

权限执行是什么意思_权限执行不_linux 执行权限

SGID设置

对可执行文件进行设置

chmodg+sexecutable#给可执行文件加上SGID权限

chmodg-sexecutable#给可执行文件除去SGID权限

作用:ps命令原始权限为-rwxr-xr-x,加SGID权限后变为-rwxr-sr-x,这会使用它other用户的权限也相当于r-x

在这里插入图片描述

对目录进行设置

chmod-Rfg+spert/

pert目录设置上SGID特殊权限位,这样任何人在该目录创建的文件都归属于该目录所有组,而不再是自己的基本用户组。

在这里插入图片描述

SBIT理解SBIT

SBIT称为“粘滞位”或“保护位”

SBIT特殊权限可确保用户只能删掉自己的文件,而不能删掉其他用户的文件。

SBIT设置

chmod-Ro+tforldname#设置成功后,原先other用户的执行权限x会被改写为t,起初没有执行权限的会显示为T。

ls-aldforldname#可以用该命令来查看

设置任何人不能删掉的文件或文件夹

对文件或文件夹用chattr命令进行配置,具体操作详见下边的链接

chown

chown[选项]…[所有者][:[组]]文件…

#改变文件或文件夹detailf的用户和用户组

$chownuser:groupdetailf

#改变文件或文件夹detailf的用户

$chownuserdetailf

#改变文件或文件夹detailf的用户和用户组为user(用户和用户组同名)

$chownuser:detailf

#改变文件或文件夹detailf的用户组

$chown:groupdetailf

chgrp

功能:改变文件或目录所属的组。

句型:chgrp[选项]groupfilename

参数:

-c或–changes疗效类似”-v”参数,但仅回报修改的部份。

-f或–quiet或–silent不显示错误信息。

-h或–no-dereference只对符号联接的文件作更改,而不更动其他任何相关文件。

-R或–recursive递归处理linux 论坛,将指定目录下的所有文件及子目录一并处理。

-v或–verbose显示指令执行过程。

–help在线帮助。

–reference=把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。

–version显示版本信息。

该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持转义。假如用户不是该文件的属主或超级用户,则不能改变该文件的组。

示例:将/mnt/fú及其子目录下的所有文件的用户组改为fú

chgrp-Rfú/mnt/fú

ACL(文件访问控制列表)

用于对莫个对特用户进行权限控制,对普通文件设置ACL虽然就是针对指定的用户或用户组设置文件或目录的操作权限。

假如对目录设置了ACL,则目录中的文件会承继其ACL;若针对文件设置了ACL,则不在承继目录的ACL。

怎样设置文件或文件夹的ACLlinux apache 虚拟主机,通过setfacl命令来进行设置

setfacl设置ACL权限

taobao@taobao-Kunlun-LS3A4000-LS7A-desktop:~$ <span class="token builtin class-name">cd</span> /root
-bash: cd: /root: 权限不够
taobao@taobao-Kunlun-LS3A4000-LS7A-desktop:~$ <span class="token function">sudo</span> <span class="token function">su</span> root
<span class="token punctuation">[</span>sudo<span class="token punctuation">]</span> taobao 的密码:
root@taobao-Kunlun-LS3A4000-LS7A-desktop:/home/taobao<span class="token comment"># setfacl -Rm u:taobao:rwx /root #为taobao这个用户设置/root文件夹控制权限</span>
root@taobao-Kunlun-LS3A4000-LS7A-desktop:/home/taobao<span class="token comment"># exit</span>
<span class="token builtin class-name">exit</span>
taobao@taobao-Kunlun-LS3A4000-LS7A-desktop:~$ <span class="token builtin class-name">cd</span> /root/
taobao@taobao-Kunlun-LS3A4000-LS7A-desktop:/root$ 

用户taobao访问/root目录被告知权限不够,进行下边的授权

setfacl-Rmu:taobao:rwx/root

成功后发觉进行**cd/root/**操作正常了

查看目录是否具有ACL权限getfacl命令查看该权限

getfacl/root查看前面设置

在这里插入图片描述

学习ACL权限设置可以参见

ls命令查看该权限

权限执行不_linux 执行权限_权限执行是什么意思

ls-ald/root

权限最后一位显示为“+”的时侯说明该文件治具有ACL权限

taobao@taobao-Kunlun-LS3A4000-LS7A-desktop:~$ <span class="token function">ls</span> <span class="token parameter variable">-ald</span> /root
drwxrwx---+ <span class="token number">10</span> root root <span class="token number">4096</span> <span class="token number">1</span>月<span class="token number">21</span> 01:21 /root

setfact其他功能选项功能

-m

设定ACL权限。假如是给与用户ACL权限,参数则使用“u:用户名:权限”的格式,比如setfacl-mu:st:rx/project表示设定st用户对project目录具有rx权限;假如是给与组ACL权限,参数则使用“g:组名:权限”格式,比如setfacl-mg:tgroup:rx/project表示设定群组tgroup对project目录具有rx权限。

-x

删掉指定用户(参数使用u:用户名)或群组(参数使用g:群组名)的ACL权限,比如setfacl-xu:st/project表示删掉st用户对project目录的ACL权限。

-b

删掉所有的ACL权限,比如setfacl-b/project表示删掉有关project目录的所有ACL权限。

-d

设定默认ACL权限,命令格式为“setfacl-md:u:用户名:权限文件名”(假如是群组,则使用d:g:群组名:权限),只对目录生效,指目录中新构建的文件拥有此默认权限,比如setfacl-md:u:st:rx/project表示st用户对project目录中新构建的文件拥有rx权限。

-R

递归设定ACL权限,指设定的ACL权限会对目录下的所有子文件生效,命令格式为“setfacl-mu:用户名:权限-R文件名”(群组使用g:群组名:权限),比如setfacl-mu:st:rx-R/project表示st用户对已存在于project目录中的子文件和子目录拥有rx权限。

-k

删掉默认ACL权限。

su命令与sudo服务sudo命令权限改变

sudo命令把特定命令的执行权限交付给指定用户,这样普通用户使用该命令就享有了root管理员的权限。

命令格式:sudo[参数]命令名称

sudo服务中的可用参数以及作用参数作用

参数作用

-h

列举帮助信息

-l

列举当前用户可执行的命令

-u用户名或UID值

以指定的用户身分执行命令

-k

清空密码的有效时间,上次执行sudo时须要再度进行密码验证

-b

在后台执行指定的命令

-p

修改寻问密码的提示语

总结来说,sudo命令具有如下功能:

限制用户执行指定的命令;记录用户执行的每一条命令;配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;验证密码的后5分钟内(默认值),无须再让用户再度验证密码。visudo指定用户的执行权限

如给taobao用户设置poweroff执行命令,首先找到该命令的绝对路径,用whereispoweroff命令

<span class="token punctuation">[</span>root@a1e14095-cca7-5fa6-8 pert<span class="token punctuation">]</span><span class="token comment"># whereis poweroff </span>
poweroff: /usr/sbin/poweroff /usr/share/man/man8/poweroff.8.gz

root用户执行visudo命令找到“##Allowroottorunanycommandsanywhere”,添加taobao用户对poweroff命令的执行权限(假如把taobao换成ALL,那就是所有用户都有这个权限了)

<span class="token comment">## Allow root to run any commands anywhere</span>
root<span class="token assign-left variable">ALL</span><span class="token operator">=</span><span class="token punctuation">(</span>ALL<span class="token punctuation">)</span> ALL
taobao <span class="token assign-left variable">ALL</span><span class="token operator">=</span>NOPASSWD:/usr/sbin/poweroff 

su切换用户

su-username(意味着完全切换到新用户,即把环境变量信息也变更为新用户相应信息)

umaskumask介绍与验证

执行下边的命令

<span class="token punctuation">[</span>root@876234e3-fcd6-554c-8 home<span class="token punctuation">]</span><span class="token comment"># touch 456</span>
<span class="token punctuation">[</span>root@876234e3-fcd6-554c-8 home<span class="token punctuation">]</span><span class="token comment"># ls -al 456</span>
-rw-rw-r-- <span class="token number">1</span> root root<span class="token number">0</span> <span class="token number">3</span>月 <span class="token number">5</span> <span class="token number">22</span>:32 <span class="token number">456</span>
<span class="token punctuation">[</span>root@876234e3-fcd6-554c-8ce6-628d1c6d936c home<span class="token punctuation">]</span><span class="token comment"># ls -al</span>
总用量 <span class="token number">0</span>
drwxr-xr-x <span class="token number">6</span> root root <span class="token number">79</span> <span class="token number">3</span>月 <span class="token number">5</span> <span class="token number">22</span>:39 <span class="token builtin class-name">.</span>
dr-xr-xr-x. <span class="token number">19</span> root root<span class="token number">278</span> <span class="token number">3</span>月 <span class="token number">4</span> <span class="token number">13</span>:27 <span class="token punctuation">..</span>
drwxrwxr-x <span class="token number">2</span> root root<span class="token number">6</span> <span class="token number">3</span>月 <span class="token number">5</span> <span class="token number">22</span>:39 <span class="token number">123</span>
<span class="token punctuation">[</span>root@876234e3-fcd6-554c-8 home<span class="token punctuation">]</span><span class="token comment"># umask</span>
0002

理论

可以看出root用户执行touch命令后生成的文件“456”权限位为664linux 执行权限,文件夹“123”权限位为775,为什么会是这样,哪些决定了这种呢?

答案是umask

umask命令拿来设置所创建文件和目录的默认权限。

用命令查看到的umask的值为0002,是哪些意思呢?

umask值为一个网段,第一个0为粘滞位,其他三位分别代表用户、组、其他用户的权限位,开启文件的全权限值为666,文件夹的全权限位为777,这么新建文件或文件夹的权限要是全权限位减掉umask的值

现实

用前面的反例来算一下吧

文件“456”用ls-al见到的权限位664

666-002=664#不用考虑umask第一位粘滞位的值,这么umask是002;算下来的和用命令见到的值一致

文件“123”用ls-al见到的权限位775

777-002=775#算下来的和用命令见到的值一致

umask值的设置一、临时设置

<span class="token punctuation">[</span>root@876234e3-fcd6-554c-8 home<span class="token punctuation">]</span><span class="token comment">#umask</span>
0002
<span class="token punctuation">[</span>root@876234e3-fcd6-554c-8 home<span class="token punctuation">]</span><span class="token comment">#umask 0022</span>
<span class="token punctuation">[</span>root@876234e3-fcd6-554c-8 home<span class="token punctuation">]</span><span class="token comment">#umask</span>
0022
<span class="token punctuation">[</span>root@876234e3-fcd6-554c-8 home<span class="token punctuation">]</span><span class="token comment">#</span>

根据以上方法改变的umask值在shell退出之前或则使用新的umask命令之前仍然有效,假如想永久改变umask值,须要更改自己$HOME目录下的.profile或.bash_profile文件中更改

二、永久生效

<span class="token function">vi</span> .bash_profile
m0145216@c408eag:~<span class="token operator">></span> <span class="token function">cat</span> .bash_profile 
<span class="token comment"># .bash_profile</span>
<span class="token punctuation">..</span><span class="token punctuation">..</span><span class="token punctuation">..</span><span class="token comment">#此处省略百来字</span>
<span class="token builtin class-name">export</span> <span class="token environment constant">PATH</span>
<span class="token builtin class-name">umask</span> 022

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
apache是什么意思
apache是什么意思

Apache是Apache HTTP Server的简称,是一个开源的Web服务器软件。是目前全球使用最广泛的Web服务器软件之一,由Apache软件基金会开发和维护,Apache具有稳定、安全和高性能的特点,得益于其成熟的开发和广泛的应用实践,被广泛用于托管网站、搭建Web应用程序、构建Web服务和代理等场景。本专题为大家提供了Apache相关的各种文章、以及下载和课程,希望对各位有所帮助。

421

2023.08.23

apache启动失败
apache启动失败

Apache启动失败可能有多种原因。需要检查日志文件、检查配置文件等等。想了解更多apache启动的相关内容,可以阅读本专题下面的文章。

939

2024.01.16

Java 流式处理与 Apache Kafka 实战
Java 流式处理与 Apache Kafka 实战

本专题专注讲解 Java 在流式数据处理与消息队列系统中的应用,系统讲解 Apache Kafka 的基础概念、生产者与消费者模型、Kafka Streams 与 KSQL 流式处理框架、实时数据分析与监控,结合实际业务场景,帮助开发者构建 高吞吐量、低延迟的实时数据流管道,实现高效的数据流转与处理。

174

2026.02.04

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1564

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

716

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

300

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

800

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

588

2023.07.06

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

1

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.6万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号