Linux文件权限总结

时间:2021-07-27 15:25:57

Linux文件权限基本概述:

 

1.基本权限:可读(r)    可写(w)    可编辑(x)

 

2.特殊权限:SUID      SGID       SBIT

 

3.隐藏权限:通过[lsattr]查看,[chattr]设置;由于文件的隐藏权限种类较多(13种),在此不作具体说明;可以通过[man chattr]来查看各个隐藏权限的具体意义(非常详细);

 

需要强调的是,文件的隐藏权限只有在Ext2及其后续版本的文件系统才生效(摘自鸟哥Linux教程基础篇)

 

 


 

文件权限具体说明:

 

Linux的文件权限针对目录及文件,两者之间有少许差异,具体见下表

  可读 可写 可执行 SUID SGID SBIT
文件 可以查看目标文件的内容;

可以编辑目标文件;

单独使用无效,需要配合[可读]权限(因为需要进入文件编辑器修改文件内容);

可以执行目标文件;

对于shell脚本,需要配合[可读]权限才可以正常运行;

对于二进制文件,仅需[可执行]权限即可;

仅针对二进制可执行文件;

拥有SUID权限的用户执行程序时,程序在执行过程中会获得程序拥有者的权限支援;

仅针对二进制可执行文件;

拥有SGID权限的用户执行程序时,程序在执行过程中会获得程序所属群组的权限支援;

不针对文件;
目录

可以查看目录下的文件列表;

单独使用只能查看目录下的文件名;

如要查看详细信息,需要配合[可执行]权限;

可以在目标目录下进行[创建/删除/移动]等操作;

单独使用无效,需要配合[可执行]权限;

可以将该目录设定成工作目录(cd {dir}); 不针对目录;

用户在该目录下的有效群组会变成该目录的所属群组;

例:在该目录下,创建的目录或文件的所属群组为该目录的所属群组,而非文件创建者的所属群组;

另:创建的目录也会具有SGID权限;

只有用户可以在该目录下[删除/移动]自己创建的[目录/文件];(超级用户不受限制)

单独使用无效,需要配合[可写/可执行]权限;


文件权限的表示法:

基本权限:

1.数字表示法: 4 = 可读      2 = 可写      1 = 可执行

 

2.字符表示法: r-- = 可读      -w- = 可写      --x = 可执行

 

3.具体显示:

3.1)基本权限的"运算":

[

r-- = 4

-w- = 2

--x = 1

 

rw- = 4+2 = 6

-wx = 2+1 = 3

r-x = 4+1 = 5

 

rwx = 4+2+1 = 7

]

 

3.2)基本权限的"分解":

[

rwxrwxrwx =

[rwx][rwx][rwx]

[拥有人][群组][其他人]

 

7777=

*777

特殊权限拥有人群组其他人

]

------------------------------------------

特殊权限:

1.数字表示法: 4 = SUID      2 = SGID      1 = SBIT

2.字符表示法: --s------      ------s---      --------t

3.具体显示:

3.1)特殊权限的"运算":

[

--s------ = 4

-----s--- = 2

--------t = 1

 

--s--s--- = 4+2 = 6

-----s--t = 2+1 = 3

--s-----t = 4+1 = 5

 

--s--s--t = 4+2+1 = 7

]

 

3.2)特殊权限的"分解":

[

rwsrwsrwt =

rw[s]rw[s]rw[t]

[SUID][SGID][SBIT]

 

7777=

7***

特殊权限基本权限

]


预设文件权限(umask):

创建文件和目录时(touch或mkdir),系统都会为我们创建的东西预设一定的权限;

例如:

默认情况下,以root创建文件,获得的权限是 -rw-r--r--;

创建目录,获得的权限是  drwxr-xr-x;

 

而控制这个默认权限的就是umask;

以root执行[umask]会输出:

[

0022

]

 

0022 = -----w--w-

预设权限的计算:

文件: (-rw-rw-rw-) - [umask] = (-rw-rw-rw-) - (-----w--w-) = -rw-r--r--

目录: (drwxrwxrwx) - [umask] = (drwxrwxrwx) - (-----w--w-) = drwxr-xr-x

 

所以说,如果需要控制预设命令,只要设置umask即可;

设置umask:

[

umask {三位的文件权限数字}

]

 


 

文件权限的设置:

 

1.基本权限:

1.1)设置权限:

chmod u=rwx {文件名}    //针对该文件,为其拥有者设置可写/可读/可执行权限

chmod g=r-x {文件名}    //针对该文件,为其所属群组设置可写/可执行权限

chmod o=--- {文件名}    //针对该文件,去除其他用户(不是拥有者,不属于文件所属群组的用户) 的所有基本权限

 

1.2)增加权限:

chmod u+x {文件名}    //针对该文件,为其拥有者增加可执行权限

chmod g+r {文件名}    //针对该文件,为其所属群组增加可读权限

chmod o+w {文件名}    //针对该文件,为其他用户增加可写权限

 

1.3)减少权限:

chmod u-x {文件名}    //针对该文件,为其拥有者减少可执行权限

chmod g-x {文件名}    //针对该文件,为其所属群组减少可执行权限

chmod o-x {文件名}    //针对该文件,为其他用户减少可执行权限

 

2.特殊权限:

2.1)SUID

chmod u+s {文件名}

chmod u-s {文件名}

 

2.2)SGID

chmod g+s {文件名}

chmod g-s {文件名}

 

2.3)SBIT

chmod o+t {文件名}

chmod o-t {文件名}