ホームページ  >  記事  >  システムチュートリアル  >  Linux ファイルのアクセス許可の設定と機能: ファイルの分類とアクセス許可の詳細については、こちらをご覧ください。

Linux ファイルのアクセス許可の設定と機能: ファイルの分類とアクセス許可の詳細については、こちらをご覧ください。

WBOY
WBOYオリジナル
2024-07-21 10:24:31664ブラウズ

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

Linux 파일 권한 및 소유권(읽기, 쓰기, 실행 권한)에 따른 파일 권한 설정 및 그 효과

리눅스 시스템의 모든 것은 파일입니다. 권한에 대해 이야기하려면 먼저 파일 분류를 이해해야 합니다

Linux의 파일 분류

리눅스 시스템에서는 모든 것이 파일이며, 파일 형식은 다음과 같이 다릅니다.

기호는 파일 형식

을 나타냅니다.

일반 파일

디렉토리 파일

링크된 파일

블록 장치 파일

캐릭터 장치 파일

파이프라인 파일

네트워크 장비

door(Solaris) 클라이언트와 서버 응용 프로그램 프로세스 간에 통신하는 파일에 대한 새로운 소켓 방식인 linux 실행 권한을 제공합니다.

아래 그림에서 일부 파일 형식을 들을 수 있습니다

在这里插入图片描述

읽기, 쓰기, 실행 권한

아래 사진은 파일 형식이 일반 파일이라는 것을 보여줍니다. 사용자는 읽기 및 쓰기 권한을 가지며, 그룹 및 기타 사용자는 읽기 권한(644)을 가지며, 속한 루트 사용자는 없습니다. 파일 형식뿐 아니라 다른 모든 것도 권한과 관련되어 있습니다.

在这里插入图片描述

파일 권한 표현

기호는 값 권한의 구체적인 의미를 나타냅니다

읽기 가능

파일: 파일 내용을 읽을 수 있습니다. 폴더: 폴더의 파일 목록을 읽을 수 있습니다.

쓰기 가능

파일: 편집, 추가, 수정, 삭제; 폴더: 파일 추가, 삭제, 이름 바꾸기

실행 가능

파일: 실행 가능한 스크립트 프로그램, 폴더: 이 디렉터리에 들어갑니다

파일 읽기, 쓰기, 실행 권한 설정

파일에 대한 권한을 설정하려면 다음 방법을 사용할 수 있습니다.

으아악

다른 파일 권한 설정에 대해서는 폴더 권한 설정에 대한 비유를 참조할 수 있으며 이전 설정도 확인할 수 있습니다.

설정된 파일 권한 보기

权限执行是什么意思_权限执行不_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가 됩니다. 이는 이를 사용하며 다른 사용자의 권한은 r-x

와 동일합니다.

在这里插入图片描述

디렉토리 설정

chmod-Rfg+spert/

pert 디렉터리에 SGID 특수 권한 비트를 설정하면 이 디렉터리에서 누군가가 만든 모든 파일이 자신의 기본 사용자 그룹이 아닌 디렉터리의 모든 그룹에 속하게 됩니다.

在这里插入图片描述

SBIT는 SBIT를 이해합니다

SBIT는 "스티키 비트" 또는 "보호 비트"라고 합니다

SBIT 특수 권한은 사용자가 자신의 파일만 삭제할 수 있고 다른 사용자의 파일은 삭제할 수 없도록 보장합니다.

SBIT 설정

chmod-Ro+tforldname#설정 성공 후, 상대방 사용자의 원래 실행 권한 x는 t로 다시 쓰여지고, 실행 권한이 없는 사용자의 원래 실행 권한은 T로 표시됩니다.

ls-aldfordname#이 명령을 사용하여 볼 수 있습니다

아무도 삭제할 수 없는 파일이나 폴더 설정

chatr 명령을 사용하여 파일이나 폴더를 구성하세요. 구체적인 작업은 아래 링크를 참조하세요

chown

chown[옵션]…[소유자][:[그룹]]파일…

#파일 또는 폴더 세부정보의 사용자 및 사용자 그룹 변경f

$chownuser:groupdetailf

#파일 또는 폴더 세부정보 사용자 변경f

$chownuserdetailf

#파일 또는 폴더 상세정보의 사용자 및 사용자 그룹을 user로 변경합니다. (사용자와 사용자 그룹의 이름은 동일합니다.)

$chownuser:detailf

#파일 또는 폴더 세부정보의 사용자 그룹 변경f

$chown:groupdetailf

chgrp

기능: 파일이나 디렉터리가 속한 그룹을 변경합니다.

문장 패턴: chgrp [옵션] 그룹 파일 이름

参数:

-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

以上がLinux ファイルのアクセス許可の設定と機能: ファイルの分類とアクセス許可の詳細については、こちらをご覧ください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。