权限对于普通文件和目录文件的作用是不一样的。

drwxr-xr-x
第二个字母开始是文件的权限表示
9列权限,
前三列表示文件的"拥有者"对该文件具有的权限,
中三列表示文件的"所属组"对该文件具有的权限,
后三列表示文件的"其他人"对该文件具有的权限。其他人的意思就是既不是拥有者,也不是所属组,就是其他人。
对于一个文件来说,它的权限列表示它对世界上的这三种人具备的权限,
这三种人就分别是owner(拥有者),group(所属组),others(其他人),
任何一个文件的权限列所表达的意思都是这样的。
权限列常见的内容有4个,分别是r,w,x,-。总共9列,分割成3个3列。
分别表示对三类人的权限。
这3个3列的第一列要么是r,要么是-,如果是r,则表示该类人对该文件具有读(read)权限。
第二列要么是w,要么是-,如果是w,则表示该类人对该文件具有写(write)权限。
第三列要么是x,要么是-,如果是x,就表示该类人对该文件有执行execute(x)权限
一般来说(并不强行规定),owner的权限>group的权限>others的权限,注意一点,文件的owner不一定属于该文件的所属组。
看文件权限3步:
①找到权限9列,将其3等分。
②确定拥有人权限的三列,所属组权限的三列,其他人权限的三列
③确定每一类人的权限,有r就是有读权限,有w就是有写权限,有x就是有执行权限
-rw-rw-r--. 1 kiosk kiosk 992 Nov 10 2018 DHCP-ranges.txt-foundation0
①rw- rw- r--
②owner group others
③读写 读写 读
拥有人有读写权限,所属组由读写权限,其它人有读权限。
对于普通文件来说,r,w,x权限表达的意义是什么呢?
如果一个普通文件有r权限,就表示该文件的内容可以被查看到。
如果一个普通文件有w权限,就表示该文件的内容可以被修改(加内容,删内容,修改内容)
如果一个普通文件有x权限,就表示该文件可以当做脚本一样执行。
权限对应的可操作性内容就是上面描述的。
对于目录文件来说,rwx权限表达的意义是什么呢?
如果一个目录文件有r权限,就表示该目录下的文件可以被查看属性(查看文件属性的命令ls)
如果一个目录文件有r权限,能否查看这个目录下的普通文件的内容(不一定)
一个普通文件能否查看它的内容和它所在的目录没有任何关系,而是和它自己是否具备r权限有关系。
如果一个目录文件有w权限,就表示可以在该目录下创建或删除或修改文件属性
如果一个目录文件有w权限,是否能修改这个目录下的普通文件的内容?(不一定)
一个普通文件能否修改它的内容和它自己是否具备w权限有关系,而和它是否在具备w权限的目录没有任何关系。
如果一个目录文件有x权限,就表示可以进入该目录,如果一个目录连x权限都没有,这个目录是无法进入的。
一个目录没有x权限,能不能在该目录下创建删除文件,或者我查看文件属性?(可以)
如果一个目录没有执行权限,那么即使有r权限或者w权限,也表示该目录是一个问题目录
对于目录来说只有3类权限有意义。
---表示目录没有任何权限
r-x表示目录有读权限
rwx表示目录有写权限
庚彦祖举网吧的例子(这是一些畸形目录权限的例子)
一个目录如果有-wx权限。
这个目录有写和进入的权限,但是没有查看的权限,意味着你看不见你写的内容。
网吧你可以进去,可以玩,但是要把你眼睛蒙上。
一个目录如果有--x权限。
这个目录只有进入的权限。进入这个目录后不能看也不能写,那进来干啥呢?
网吧你可以进去,但是不能看,也不能玩。
chmod u/g/o
u=user (owner)
g=group
o=others
1.使用等号增加权限

2.使用减号删除权限


我们知道文件权限的三列是“可读”、“可写”、“可执行”的组合,
第一列只可能是"r"或者"-"
第二列只可能是"w"或者"-"
第三列只可能是"x"或者"-"
也就是说这三列可以有以下几种组合
0+0= 000 "---" 文件没有任何权限 0
0+1= 001 "--x" 文件可执行 1=1x2^0
1+1= 010 "-w-" 文件可写 2=0x2^1+1x2^1
10+1= 011 "-wx" 文件可写可执行 3=1x2^0+1X2^1
11+1= 100 "r--" 文件可读 4=1X2^2
100+1= 101 "r-x" 文件可读可执行 5=1x2^2+1X2^0
101+1= 110 "rw-" 文件可读可写 6=1x2^1+1x2^2
110+1= 111 "rwx" 文件可读可写可执行 7=1x2^0+1x2^1+1x2^2
以上权限组合正好符合二进制和十进制的相互转换,所以我们可得出文件的最大权限是7



庚彦祖的笔记
1.SET UID
2.SET GID
3.Sticky(粘置位)
Linux的三种特殊权限,红帽考试只考一种,实际在生产环境当中,用的并不是特别多
1.SET UID
SET UID特殊权限应用于可执行的普通文件,当一个文件被设置SET UID特殊权限时,
任何人一旦执行该文件,都会临时获得文件拥有人的权限。
ls -l /bin/passwd
-rwsr-xr-x. 1 root root 34512 Aug 13 2018 /bin/passwd
在文件拥有者的权限列的执行权限位置,如果该位置是s或者S,就表示该文件被设置了set UID特殊权限。
chmod u-s /bin/passwd
ls -l /bin/passwd
-rwxr-xr-x. 1 root root 34512 Aug 13 2018 /bin/passwd
chmod u+s /bin/passwd
ls -l /bin/passwd
-rwsr-xr-x. 1 root root 34512 Aug 13 2018 /bin/passwd
2.SET GID
SET GID特殊权限应用于目录文件,当一个目录被设置SET GID特殊权限时,
任何用户在该目录下创建文件,文件的所属组都会变成被设置SET GID那个目录的所属组。
[zk@foundation0 dir-test]$ chmod g+s zk-dir1
[zk@foundation0 dir-test]$ ls -ld zk-dir1
drwxrwsrwx. 2 zk zk 23 Apr 15 23:07 zk-dir1
在文件所属组的权限列的执行权限位置,如果该位置是s或者S,就表示该文件被设置了set GID特殊权限。
3.Sticky(粘置位)
针对有写权限的目录设置的特殊权限位,当一个有写权限的目录被设置了sticky特殊权限,
那么任何人在该目录下创建的文件就只有自己和root可以删除。该特殊权限位,限制了目录的写权限。
对于目录的写权限来说,该权限有点太大了,sticky就是限制目录写权限的。

由上图可以看root用户新创建出来的目录的权限是“rwxr-xr-x”是755,新创建出来的普通文件的权限是“rw-r–r–”是644.
而普通用户新创建的目录和文件的权限则是“rwxrwxr-x”775和“rw-rw-r–”664

而决定用户创建目录和文件的权限大小的是umask值,root用户和普通用户的umask值是不一样的。(我们暂时只看umask的后3位) umask能帮助用户修改创建文件的默认权限。

一般来说:
任何用户创建目录后,该目录的权限是"rwxrwxrwx" 777
任何用户创建文件后,该文件的权限是"rw-rw-rw-" 666 (为什么不给它执行权限呢)
普通文件带上执行权限是很危险的,如何这个文件里有"rm -rf /*"这样致命的操作和病毒怎么办。所以为了安全起见,默认不给执行权限,后期需要自己手动赋予执行权限。
用户创建文件的默认初始权限是 777-umask的后三位
由此可得:
root创建目录文件的权限是: 777-022=755
root创建普通文件的权限是: 666-022=644
普通用户创建目录的权限是: 777-002=775
普通用户创建文件的权限是: 666-002=664
当修改了umask值后,文件的默认权限不能生硬的直接用最高权限-umask值,请看下面的例子。
将umask的值改为0033,按理说修改umask值之后:
目录的默认权限应为:777-033=744 "rwxr--r--"
文件的默认权限应为:666-033=633 "rw--wx-wx"

由上图可见修改umask为0033后,目录的默认权限是正确的,但是普通文件的权限出现了偏差,预期的应该是633,怎么变成了644,所以这就是我们umask的减法误区。
666-033=(rw-rw-rw-)-(----wx-wx) 咱们的减法应该是以下这样情况
rw-rw-rw-
-(减) ----wx-wx
-------------------
rw-r--r--
rw减--就等于rw -减-就等于- r减-就等于r w减w就等于- -减x就等于-