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 {文件名}