3. Linux基础权限


3.1 查看权限

3. Linux基础权限​_bc



3. Linux基础权限​_创建文件_02




位数

解释

第1位

文件类型,d表示目录,-表示普通文件,l表示软链接文件

第2-4位

所属用户权限,用u表示

第5-7位

所属组权限,用g表示

第8-10位

不在root组之内的其他用户权限,用o表示

第2-10位

表示所有权限,用a表示


取值

解释

r

r表示可读 read

w

w表示可写 write

x

x表示可执行 executable

-

表示无权限


3.2 默认权限

刚刚创建出来的文件,默认权限为

3. Linux基础权限​_bc_03



刚刚创建出来的目录,默认权限为

3. Linux基础权限​_创建文件_04



3.3 chmod

修改文件权限

命令

解释

chmod u=rwx 1.txt

覆盖1.txt的用户权限为rwx

chmod g=rx 1.txt

覆盖1.txt的组权限为r-x

chmod u-x 1.txt

撤销1.txt的用户权限中的x

chmod a+w

为1.txt的所有权限追加w

chmod ug+rw 1.txt

为1.txt的用户权限和组权限追加rw权限


利用数字模式修改文件权限,r代表数字4,w代表数字2,x代表数字1

命令

解释

chmod 444 1.txt

设置1.txt的所有权限为 -r--r--r--

chmod 222 1.txt

设置1.txt的所有权限为 --w--w--w-

chmod 111 1.txt

设置1.txt的所有权限为 ---x--x--x

chmod 551 1.txt

设置1.txt的所有权限为 -r-xr-x--x

chmod 755 1.txt

设置1.txt的所有权限为 -rwxr-xr-x

chmod 644 1.txt

设置1.txt的所有权限为 -rw-r--r--


修改目录权限

命令

解释

chmod 755 kk

设置kk文件夹的权限为 drwxr-xr-x

chmod -R 755 kk

设置kk文件夹的权限为 drwxr-xr-x,同时递归修改子文件


3.4 权限对目录的作用

可读、可写、可执行对于文件和目录而言是有不同作用的,我们先学习权限对目录的作用。


创建账户:zs/123

useradd zs

passwd 123


使用zs账户登录

3. Linux基础权限​_删除文件_05



使用root用户创建一个目录,注意不能把目录创建在root家目录下,因为超级管理员可以进入普通用户家,而普通用户无法进入超级管理员的家!


以下让超级管理员进入zs的家目录,创建一个kk文件夹,并在kk文件夹下创建一个abc文件,可以发现kk文件夹的所属组和所属用户都是root

3. Linux基础权限​_删除文件_06



通过root,撤销其他用户对kk文件夹的所有权限

3. Linux基础权限​_bc_07



此时zs对于kk目录而言就是其他用户,使用zs用户测试进入kk目录,发现无法进入

3. Linux基础权限​_创建文件_08



使用zs用户查看kk文件夹本身的信息是可以的,但是无法查看kk里面的子文件的信息

3. Linux基础权限​_创建文件_09



使用zs用户在kk文件夹中创建foo文件,发现权限不够

3. Linux基础权限​_删除文件_10



结论:用户对于一个目录,没有任何权限的情况下:

操作

权限

查看目录本身的信息

允许

进入目录

不允许

查看目录中子文件的信息

不允许

在目录中创建文件和删除文件

不允许


通过root账户,为kk文件夹的其他用户分配只读权限

3. Linux基础权限​_删除文件_11



使用zs查看kk目录本身的信息,发现可以

3. Linux基础权限​_创建文件_12



使用zs进入目录,发现无法进入

3. Linux基础权限​_创建文件_13



使用zs查看kk中子文件的信息,发现只能查看子文件的名字,其他详细信息看不到

3. Linux基础权限​_创建文件_14



使用zs在kk中创建文件,发现无法创建

3. Linux基础权限​_bc_15



结论:用户对于一个目录,只有只读权限的情况下:

操作

权限

查看目录本身的信息

允许

进入目录

不允许

查看目录中子文件的信息

只能看到子文件的名字,看不到详细信息

在目录中创建文件和删除文件

不允许


通过root账户,为kk文件夹的其他用户分配读写权限

3. Linux基础权限​_创建文件_16



使用zs查看kk目录本身的信息,发现可以

3. Linux基础权限​_删除文件_17



使用zs进入kk目录,发现不可以

3. Linux基础权限​_bc_18



使用zs查看kk目录中中子文件的信息,发现只能看到子文件的名字

3. Linux基础权限​_bc_19



使用zs在kk目录中创建文件,发现不可以

3. Linux基础权限​_创建文件_20



结论:用户对于一个目录,有读写权限的情况下:

操作

权限

查看目录本身的信息

允许

进入目录

不允许

查看目录中子文件的信息

只能看到子文件的名字,看不到详细信息

在目录中创建文件和删除文件

不允许

所以用户对于一个目录而言,拥有读权限和拥有读写权限,效果一样!


通过root账户,为kk文件夹的其他用户分配读写执行权限

3. Linux基础权限​_删除文件_21



使用zs查看目录本身的信息,可以

3. Linux基础权限​_创建文件_22



使用zs进入kk目录,可以

3. Linux基础权限​_bc_23



使用zs查看kk目录中子文件的信息,可以

3. Linux基础权限​_bc_24



使用zs在kk目录中创建文件,删除文件,可以

3. Linux基础权限​_创建文件_25



结论:用户对于一个目录,有读写执行权限的情况下:

操作

权限

查看目录本身的信息

允许

进入目录

允许

查看目录中子文件的信息

允许

在目录中创建文件和删除文件

允许


通过root账户,为kk文件夹的其他用户分配读、执行权限(注意没有写权限)

3. Linux基础权限​_创建文件_26



使用zs用户查看kk目录本身的信息,可以

3. Linux基础权限​_创建文件_27



使用zs用户进入kk目录,可以

3. Linux基础权限​_删除文件_28



使用zs用户查看kk目录下的子文件信息,可以

3. Linux基础权限​_创建文件_29



使用zs用户在目录中创建和删除文件,不行

3. Linux基础权限​_bc_30



结论:用户对于一个目录,有读、执行权限权限的情况下:

操作

权限

查看目录本身的信息

允许

进入目录

允许

查看目录中子文件的信息

允许

在目录中创建文件和删除文件

不允许

所以,对于目录而言,执行权就是能进入目录的权限,写权限就是能在目录中创建和删除文件的权限,而在用户对目录只有写权限,却没有执行权的时候,用户仍然无法在目录中创建和删除文件!总之,一个用户想能够在目录中创建和删除文件,该用户必须同时拥有对于该目录的w和x权限


通过root账户,为kk文件夹的其他用户分配写、执行权限(注意没有读权限)

3. Linux基础权限​_bc_31



使用zs用户查看kk目录本身的信息,可以

3. Linux基础权限​_bc_32



使用zs用户进入kk目录,可以

3. Linux基础权限​_创建文件_33



使用zs用户查看目录中子文件的信息,不允许

3. Linux基础权限​_创建文件_34



使用zs用户在kk目录在目录中创建文件和删除文件,可以,但是就算文件是zs自己创建的,zs也看不了kk中的自己创建的文件

3. Linux基础权限​_bc_35



结论:用户对于一个目录,有写、执行权限的情况下:

操作

权限

查看目录本身的信息

允许

进入目录

允许

查看目录中子文件的信息

不允许

在目录中创建文件和删除文件

允许


此处应该有一个报表。大家自己动手画一下。



3.5 权限对文件的作用

上面已经测试完了权限对于kk目录的影响,下面要测试权限对于kk下abc文件的影响,所以此时应该把kk其他用户的权限全部放开:

3. Linux基础权限​_创建文件_36



因为root账户对于kk/abc文件有读写权限,所以我们可以使用root账户,在kk目录下的abc文件中写入一个echo命令,再使用root用户读取这个文件的内容:

3. Linux基础权限​_删除文件_37



因为root账户对于kk/abc文件有执行权限,所以root账户可以执行这个文件,如下:

3. Linux基础权限​_删除文件_38



使用root账户,撤销其他用户对于kk/abc文件的所有权限

3. Linux基础权限​_bc_39



使用zs用户读取kk/abc文件的内容,不允许

3. Linux基础权限​_删除文件_40



使用zs用户编辑kk/abc文件的内容,不允许

3. Linux基础权限​_bc_41



使用zs用户执行kk/abc文件,不允许

3. Linux基础权限​_删除文件_42



结论:用户对于一个文件,没有任何权限

操作

权限

读取文件内容

不允许

编辑文件内容

不允许

执行文件

不允许

删除文件

由文件所在目录决定,如果用户对于目录有wx权限,则用户就能对文件进行删除


通过root账户,为kk/abc文件的其他用户分配读权限

3. Linux基础权限​_创建文件_43



使用zs用户读取kk/abc文件内容,可以

3. Linux基础权限​_bc_44



使用zs用户编辑kk/abc文件内容, 不可以

3. Linux基础权限​_bc_45



使用zs用户执行文件,不可以

3. Linux基础权限​_创建文件_46



结论:用户对于一个文件,有读权限

操作

权限

读取文件内容

允许

编辑文件内容

不允许

执行文件

不允许

删除文件

由文件所在目录决定,如果用户对于目录有wx权限,则用户就能对文件进行删除


通过root账户,为kk/abc文件的其他用户分配读写权限

3. Linux基础权限​_bc_47



使用zs用户读取kk/abc文件内容,可以

3. Linux基础权限​_创建文件_48



使用zs用户编辑kk/abc文件内容, 可以

3. Linux基础权限​_删除文件_49



使用zs用户执行文件,不可以

3. Linux基础权限​_删除文件_50



结论:用户对于一个文件,有读写权限

操作

权限

读取文件内容

允许

编辑文件内容

允许

执行文件

不允许

删除文件

由文件所在目录决定,如果用户对于目录有wx权限,则用户就能对文件进行删除


通过root账户,为kk/abc文件的其他用户分配读写执行权限

3. Linux基础权限​_删除文件_51



使用zs用户读取kk/abc文件内容,可以

3. Linux基础权限​_bc_52



使用zs用户编辑kk/abc文件内容, 可以

3. Linux基础权限​_删除文件_53



使用zs用户执行kk/abc文件,可以

3. Linux基础权限​_创建文件_54



结论:用户对于一个文件,有读写执行权限

操作

权限

读取文件内容

允许

编辑文件内容

允许

执行文件

允许

删除文件

由文件所在目录决定,如果用户对于目录有wx权限,则用户就能对文件进行删除


通过root账户,为kk/abc的其他用户分配写、执行权限(注意没有读权限)

3. Linux基础权限​_bc_55



使用zs账户读取kk/abc的内容,不可以

3. Linux基础权限​_删除文件_56



使用zs账户编辑kk/abc文件,不可以

3. Linux基础权限​_删除文件_57



使用zs账户执行kk/abc文件,不可以

3. Linux基础权限​_创建文件_58



结论:用户对于一个文件,有写、执行权限(注意没有读权限)

操作

权限

读取文件内容

不允许

编辑文件内容

不允许

执行文件

不允许

删除文件

由文件所在目录决定,如果用户对于目录有wx权限,则用户就能对文件进行删除

注意,如果用户对于一个文件没有读权限,则什么操作都做不了,不能写,也不能执行!


通过root账户,为kk/abc的其他用户分配读、执行权限(注意没有写权限)

3. Linux基础权限​_创建文件_59



使用zs账户读取kk/abc的内容,可以

3. Linux基础权限​_创建文件_60



使用zs账户编辑kk/abc的内容,不可以

3. Linux基础权限​_删除文件_61



使用zs账户执行kk/abc文件,可以

3. Linux基础权限​_bc_62



结论:用户对于一个文件,有读、执行权限(注意没有写权限)

操作

权限

读取文件内容

允许

编辑文件内容

不允许

执行文件

允许

删除文件

由文件所在目录决定,如果用户对于目录有wx权限,则用户就能对文件进行删除


总结:

权限

目录

文件

r

读取目录中子文件的名字

读取文件的内容

w

在搭配x的情况下,可以在目录中创建和删除文件在没有x的情况下,不能在目录中创建和删除文件

可以编辑文件的内容(必须搭配r)

x

可以进行目录

可以执行文件(必须搭配r)



3.6 chown

修改文件所有者和组

命令

解释

chown zs:zs kk/abc

把1.txt的所有者,和所属组都改为zs


3. Linux基础权限​_创建文件_63



3. Linux基础权限​_创建文件_64



3.7 umask(了解)


3.7.1 默认权限

一个文件创建好之后的默认权限为 644,一个目录创建好之后的默认权限为755


3.7.2 查看umask

3. Linux基础权限​_删除文件_65


umask的取值为:0022,其中第一列是文件的特殊权限,我们不学,我们把焦点放在后3位:022


3.7.3 文件的默认权限

☐ 刚刚创建好的文件,默认是不能被执行的,必须手动赋予执行权限

☐ 所以文件默认权限最大为666

☐ 默认权限需要换算成字母再相减(实际上是逻辑与)

☐ 建立文件之后的实际的默认权限,为666减去umask值


例如,文件默认最大权限为666 umask值为022

3. Linux基础权限​_创建文件_66



例如,文件默认最大权限为666 umask值为033

3. Linux基础权限​_删除文件_67


注意,虽然这里说的是减法,但是这里的减法是不会借位的


3.7.4 修改umask的值

命令

解释

umask 044

临时修改umask的值,linux重启之后,umask会恢复为022


3. Linux基础权限​_删除文件_68



3. Linux基础权限​_删除文件_69



3.7.4 创建文件夹

当我们创建文件时,文件的默认权限是666减去umask的值,而当我们创建目录时,目录的默认权限是使用777来减去umask的值的

3. Linux基础权限​_删除文件_70



3. Linux基础权限​_创建文件_71



3.7.5 永久修改umask

vi /etc/profile


3. Linux基础权限​_删除文件_72


注意:管理员用户的$UID是小于等于199的,普通用户的$UID是大于199的