深挖linux中的文件权限

##############1.文件权限存在的意义#################
文件权限的存在私是系统最底层安全设定方法之一,保证文件可以被可用的用户做相应操作

##############2.文件权限的查看##########
<1>ls -l file
在这里插入图片描述
说明:

touch file1        ##新建一个文件
ls –l file1       ##查看文件的权限

<2>ls -ld dir
在这里插入图片描述
说明:

mkdir test        ##新建一个目录
ls –ld test      ##查看目录本身的权限

<3>ll file ##相当于ls –l file
在这里插入图片描述
说明:

alias           ##利用该命令可以查询到此系统下的命令的别名

总结:
可以得出ll是ls –l的别称,但是要注意并不是所有的系统都支持命令ll,所以为了规范,最好常用ls -l
<4>ll -d dir
在这里插入图片描述
说明:

mkdir file2           ##新建一个目录
ll –d file2           ##查看目录本身权限

<5>ls –LR dir
首先先在/mnt目录下建立一个目录,目录中需含有几个文件,再在/mnt目录下建立几个文件夹,依次对其进行权限的查看,输入的命令如下:
在这里插入图片描述
说明:

mkdir /mnt/hah                 ##在目录/mnt下新建一个目录
touch /mnt/file{1..5}           ##在目录/mnt下创建5个文件
touch /mnt/hah/test{1..3}     ##在目录/mnt/hah下创建3个文件
ls /mnt/
ls –l /mnt/                  ##查看/mnt下文件的权限
ls –l /mnt/hah/           ##查看/mnt/hah下文件的权限

由上述命令可知,若要查看文件或目录的权限,必须分别查看,若想要一次性查看/mnt目录下的所有文件或目录的权限,需要输入以下命令进行查看:
在这里插入图片描述
说明:

ls –lR /mnt/         ##即查看了/mnt下文件的权限也查看了/mnt/westos下文件的权限

总结:通过使用命令ls –lR dir 可以递归查看dir(目录)下的所有目录、文件和目录下的文件,可以通过Watch –n 1 ls –lR /mnt/监听目录/mnt下的变化

###############3.文件权限的读取########

  • |rw-rw-r–| |kiosk|kiosk| 0 |Jul 21 18:26|file
    [1] [2] [3] [4] [5] [6] [7] [8]
    [1]文件的类型:
    <1>- ##空文件,或者文本
    在这里插入图片描述
    结论:查看文件权限中文件的类型可以知道当建立的是一个空文件时,文件的类型显示的是“-”
    <2>d ##目录
    在这里插入图片描述
    结论:由结果可知,当建立的是一个目录时,文件的类型显示的是“d”
    <3>l ##软链接
    在这里插入图片描述
    注意:最后的结果是在桌面上会生成一个file1,而且file1上有快捷方式的图标。如果删除了文件file,file1也将无法打开。可以看到file1的文件的类型是“l”
    <4>s ##socket 套接字
    <5>b ##block 块设备
    mount /dev/sdb1 /mnt/ ##将dev下的sdb1(u盘)挂载到mnt(临时挂载点)上
    ls –ld /dev/sdb1 ##查看文件/dev/sdb1的权限
    <6>c ##字符设备
    在这里插入图片描述
    总结:可以查看到文件的类型是c(字符设备),字符设备就是用来显示字符的设备,常用来显示shell

[2]文件的权限:
rw-|rw-|r–
1 — 2 – 3
<1>[u] 文件拥有者对文件能做什么操作
------------------------1-------------------------
首先我们将建立一个文件并对其进行分析:
在这里插入图片描述
说明:

cd /mnt/           ##进入临时区建立文件
ls        ##查看临时区内的文件
touch file
vim file    ##创建并在文件file内写入内容(在file中写入date)
/mnt/file     ##执行文件file
ls –l file    ##查看文件的权限

结论:建立一个文件后,会写入内容后执行时会出现报错Permission denied,通过查看文件的权限,我们可以知道文件拥有者即用户并不具备执行的权利,接下来我们将通过更改用户的权限达到可以成功的执行此文件。
在这里插入图片描述
说明:

chmod u+x file   ##更改用户的可执行权限
ls –l file    ##再次查看文件的权限
/mnt/file     ##再次执行文件file

总结:
(1)通过使用命令chmod u+x file 之后,再次查看文件的权限,可以看到文件file的用户拥有了可执行的权限,再次执行时会发现运行成功。
(2)命令chmod u+r/w/x的含义分别是增加文件所有者的读权限、写权限、执行权限。命令chmod u-r/w/x的含义分别是删除文件所有者的读权限、写权限、执行权限。
-----------------------------2------------------------------
举例:通过查看file的被修改时间更深一步了解[u]文件所有者对文件能做什么操作:
首先我们将利用touvh更改file1的被修改的时间,接着通过查询可以看到file1并没有执行的权限,我门将通过给file1增加用户执行的权限来改变file1的被修改的时间,具体的命令如下:
在这里插入图片描述
说明:

touch –t  11111111 file        ##通过touch更改时间戳的作用改写文件被修改的时间
ls –l file          ##查看file的权限
chmod u+x file       ##更改文件file中用户的执行权限
ls –l file          ##再次查看file的权限
vim file             ##进入file改写文件执行的内容为date
ls –l file          ##查看文件file的被修改时间是否发生了改变

总结:
(1)通过调用在file1中写入的内容date更改file1被修改的时间,我们可以看到在给用户修改权限后,再次执行file1时,文件的名称颜色会发生绿色,具有可执行的权限。
(2)查看file1时,文件的被修改时间也会发生改变,可是文件的名称并不是绿色,结合文件的权限可以知晓文件并不具有可执行的权限。
---------------------------------3-------------------------------
在这里插入图片描述

touch file             ##建立一个文件
vim file           ##在文件内写入内容
ls –l file         ##查看文件的权限
ln file file1         ##会再次生成一个file 和file1文件,且file1与file相同
ls –l file        ##查看文件的权限
cat file           ##查看文件的内容
cat file1         ##查看文件的内容
ls –I file  
ls –I  file1

总结:
<1>我们可以发现文件的名称颜色变成了蓝色
<2>[g] 文件所有组对文件能做什么操作
<3>[o] 其他人对文件能做什么操作
[3]:
对文件:文件硬链接个数(文件内容被记录的次数)
对目录:目录中子目录的个数
[4]文件的所有人
[5]文件的所有组
[6]:
对文件:文件大小
对目录:目录中子文件元数据(元数据可以理解为文件案的属性)大小
----------------------------说明1:---------------------------
输入以下命令并进行查看目录和文件的大小:
在这里插入图片描述

touch file        ##建立一个文件
ls –l         ##查看文件的权限
mkdir test         ##创建一个目录
ls –ld test/       ##查看目录的权限(主要看的是文件/目录的大小)
touch test/file       ##在test目录下建立一个文件
ls –ld test/        ##查看目录下的权限(主要看的是文件/目录的大小)

总结:当只创建一个文件时,文件的大小为0,当创建一个目录时,目录的大小为6,当在目录下创建一个文件时,再次查看其目录,目录的大小为18
-----------------------------------说明2:-----------------------------
在目录下分别创建文件名称不同的文件进行对比:
在这里插入图片描述

mkdir test           ##建立目录test
ls –ld test            ##查看目录test的权限
touch test/1           ##创建文件test/1
ls –ld test/         ##查看目录test的大小是否发生变化
rm –fr test/1          ##删除文件test/1
ls –ld test/           ##查看删除后的目录test的大小的变化
touch test/11          ##创建文件test/11
ls –ld test/         ##查看目录test的大小

总结:当直接建立目录时,目录的大小为6,当建立一个文件名为一个字符的文件时,目录的大小变为14,但删除此文件时,目录的大小又会变称6,再次建立一个文件名为2个字符的文件进行研究,会发现目录的大小变为15。由此可以说明目录的初始大小为6,文件的初始大小为7(不包含文件名称中字符的大小)。
---------------------------说明3:--------------------------
当目录下有两个文件时,查看其目录的大小:
在这里插入图片描述

mkdir test                    ##新建一个test目录
touch test/1                ##在test目录下建立一个名字为1的文件
ls –ld test/              ##查看test目录的权限(此处主要研究其大小)
touch test/11             ##再次新建一个名字为11的文件
ls –ld test/              ##查看test目录的权限(此处主要研究其大小)
ls –l test/               ##查看目录下两个文件的权限(此处主要研究其大小)

注意:在查看目录时,一定要使用命令ls -ld 查看目录本身的权限。如果使用ls –l则查询的是此目录下所有文件的权限。
总结:当在一个目录下建立两个文件时,此目录的大小等于目录本身(test)的大小与目录下两个文件(1,11)的大小之和。
[7]
文件的内容被修改的时间
[8]文件的名称

#############4.如何改变文件的所有人和所有组##################
Chown|chgrp
Chown username file|dir
Chown user-group file|dir
Chowm -R user-group dir

Chgrp group file|dir
Chgrp -R group dir

准备工作:
首先需要在目录/mnt下建立几个文件及目录(之所以在/mnt下写是因为桌面下无法进行实时监控),再在/mnt下的目录下建立几个文件,做完这些再对其进行监控,为接下来的改变文件的所有人和所有组打基础,输入以下命令:
在这里插入图片描述
说明:

mkdir /mnt/westos                 ##在目录/mnt下新建一个目录
touch /mnt/file{1..5}           ##在目录/mnt下创建5个文件
touch /mnt/westos/test{1..3}     ##在目录/mnt/westos下创建3个文件
ls /mnt/
ls –lR /mnt/          ##即查看了/mnt下文件的权限也查看了/mnt/westos下文件的权限
watch ls –lR /mnt/     ##监控目录/mnt下文件及目录的变化

接下来利用相关命令对文件的所有人和所有组进行不同程度的改变:
在这里插入图片描述

id westos               ##查看用户westos的id(主要看系统中是否存在用户westos)
id student              ##查看用户student的id(主要看系统中是否存在用户student)
cd /mnt/        ##因为不是在桌面上创建的文件,所以必须必进入目录/mnt中,进行修改
chown westos file1          ##将文件file1的文件所有人更改成westos
chgrp student file2          ##将文件file2的文件所有组更改成student
chown student:westos file3     ##同时将文件file3的所有人更改成student,所有组更改成westos
chown student westos/            ##将目录/westos的所有人更改成student
chown –R westos westos/       ##将目录/westos本身以及在目录下的文件的文件所有人都更改成westos

#############5.如何改变文件的权限################
(1) 对权限的理解
r:
对文件:是否可以查看文件中的内容 —→cat file
对目录:是否可以查看目录中有什么子文件或者子目录 --→ls dir
w:
对文件:是否可以改变文件里面记录的字符
对目录:是否可以对目录中子目录或子文件的元数据进行更改
x:
对文件:是否可以通过文件名称调用文件内记录的程序
对目录:是否可以进入目录
(2) 更改方式
chmod <u/g/o><+/-/=><r/w/x> file/dir
chmod u+x /mnt/file1
chmod g-r /mnt/dile2
chmod ug-r /mnt/file3
chmod u-r,g+x /mnt/file4
chmod –r /mnt/file5
chmod o=r-x /mnt/file6
准备工作:
首先需要在目录/mnt下建立几个文件及目录(之所以在/mnt下写是因为桌面下无法进行实时监控),再在/mnt下的目录下建立几个文件,做完这些再对其进行监控,为接下来的改变文件的所有人和所有组打基础。
在这里插入图片描述
说明:

mkdir /mnt/westos                 ##在目录/mnt下新建一个目录
touch /mnt/file{1..5}           ##在目录/mnt下创建5个文件
touch /mnt/westos/test{1..3}     ##在目录/mnt/westos下创建3个文件
ls /mnt/
ls –lR /mnt/          ##即查看了/mnt下文件的权限也查看了/mnt/westos下文件的权限
watch ls –lR /mnt/     ##监控目录/mnt下文件及目录的变化

接下来将对文件的权限进行更改:
---------------------------------------更改1---------------------------------------
在这里插入图片描述
首先切换到student用户下查看file1的权限:

su –student            ##切换到student用户,student用户相当于其他人other,通过监控可以得知file1对于other的权限是只可以读
cd /mnt                ##用户student进入目录/mnt
ls -l file1           ##确认文件file1确实存在

切换到root用户(生成一个shell的快捷键为shift+alt+t),在file1内写入内容:
在这里插入图片描述

vim /mnt/file1             ##在file1中写内容linux,由文件权限可知用户root对其file1有改写的权限

切换到student用户,读取文件file1的权限:
在这里插入图片描述

cat file1           ##读file1中的内容,由文件权限可知可以读取文件的内容

切换到root用户更改file1的权限:
在这里插入图片描述

chmod o-r /mnt/file1

切换到student用户,再次尝试查看file1的内容:
在这里插入图片描述

cat file1           ##在更改权限后读取file1

提示:在root和student之间切换看起来是件很繁琐的事情,但是只要对文件的权限、所有人和所有组足够熟悉,会发现一切问题都不再是问题。
root和student用户下所有的命令整合:
在这里插入图片描述
------------------------------------------更改2----------------------------------------------
在student用户下先尝试对目录进行查看
在这里插入图片描述

ls westos/            ##查看westos/下的文件或目录有哪些,由监控可以目录westos/的权限对于其他用户来说是可以读可以执行的,但是并不能写入

切换到root用户,更改权限:
在这里插入图片描述

chmod o-r /westos/      ##更改目录/westos对于其他用户的的权限,将读权限删除
切换到student用户,尝试查看目录下的子文件或子目录

在这里插入图片描述

ls westos/            ##查看westos/下的文件或目录有哪些

总结:本来目录/mnt/westos可以被别的用户查看,可是在更改权限后,便无法进行查看了
root和student用户下所有的命令整合:
在这里插入图片描述
---------------------------------------------更改3------------------------------------------
首先在student用户下写入以下命令:
在这里插入图片描述

echo hello > file1        ##将hello写入file1中,但是其他用户对file1并没有写的权限,所以不被允许

切换到root用户:
在这里插入图片描述

chmod o+w file1           ##增加file1对其他用户的写入权限
chmod o+r file1    

切换到student用户进行查看:
在这里插入图片描述

echo hello > file1           ##此时可以正确写入
cat file1           ##查看file1内是否有内容(第一次无法查看,需要在root内对文件进行权限的修改,是其具有对其他用户的可读权限)

在student用户下试图修改file1的文件名:
在这里插入图片描述

mv file1 test          ##尝试改变file1文件的名字,报错
ls –ld /mnt/           ##查看上层目录/mnt的权限

我们会发现命令报错,其原因是因为我们改file1的名字,实际上需要file1上层目录的写入权限,而通过查看,/mnt并没有写入权限,于是我们在root下增加其/mnt的写入权限,命令为chmod o+w /mnt,然后切换到student用户下进行查看,会发现修改成功了。
在这里插入图片描述

mv file1 test        ##因为其他用户对/mnt具有写入权限,所以可以对目录下的文件更改文件的属性(文件名)

总结:
文件能够被其他用户更改内容,但是不一定能够被更改文件的属性(名字),如果要更改文件的属性,需看其所在的目录是否对当前的用户具有改写的权限。
--------------------------------------更改4-------------------------------------
在student用户内进行输入,查看是否可以进入目录:
在这里插入图片描述

cd /mnt/westos/                    ##目录/westos下没有执行权限,所以会出现报错

切换到root用户更改权限:
在这里插入图片描述

chmod o+x file1        ##因为用户root是文件的所有人,具有rwx权限

切换到student用户再次进行输入,查看是否可以进入目录:
在这里插入图片描述

cd /mnt/westos/        ##可以成功进入目录

---------------------------------------更改5----------------------------------------
修改文件的权限:
在这里插入图片描述

touch /mnt/file
chmod u-rwx,g-rwx,o-rwx   /mnt/file          ##删除了file的所有权限
chmod ugo-rwx   file1                 ##删除了file1的所有权限
chmod u+rx,g+r,o+x  /mnt/file2     ##增加了file2用户的rx权限,组的r权限,其他用户的x权限
chmod u=rx,g=r,o=x  /mnt/file3     ##重写了file3用户为rx权限,组为r权限,其他用户为x权限

在这里插入图片描述

chmod ugo+rwx   file1                 ##增加了file1的所有权限
chmod +r /mnt/file        ##增加了file的所有用户的r权限
chmod -r /mnt/file        ##删除了file的所有用户的r权限
chmod =r /mnt/file        ##重写了file的所有用户的r权限
chmod o=r-x /mnt/file       ##设定了file的其他用户的权限为r--权限
chmod –w /mnt/file        ##改写所有用户的w权限时,会出现一条指令,

注意:w默认是给其用户所有人更改(r-xrwxrwx),并不是给所有用户进行更改
在这里插入图片描述
(3) rwx对应的数字
r=4,w=2,x=1(分别是2的进制)
例如:r-x|r–|--x
    5 4 1
7=rwx,6=rw-,5=r-x,4=r–,3=-wx,2=-w-,1=–x,0=—
##用数字修改file,file2的权限:
在这里插入图片描述

chmod 700 /mnt/file           ##将file的权限更改成rwx------
chmod 754 /mnt/file2       ##将file2的权限更改成rwxw-xr--

}

练习:
新建目录要求如下:
1)/pub目录为公共存储目录对所有用户可以读,写,执行
2)/sc目录为生产部存储目录只能对生产部人员可以写入
3)/cw目录为财务部存储目录只能对财务部人员可以写入
在这里插入图片描述

mkdir /pub /sc /cw       ##建立/pub,/sc,/cw目录
chmod 777 /pub        ##/pub目录对所有用户可以读,写,执行
chgrp shengchan /sc      ##将/sc的所有组更改成shengchan
chgrp caiwu /cw     #将/cw的所欲组更改成caiwu
chmod 770 /sc      ##因为是只能对生产部的人员进行写入,所以权限为770
chmod 770 /cw       ##因为是只能对财务部的人员进行写入,所以权限为770

进行检测:
在这里插入图片描述

su – student          ##切换到student用户
cd /sc/             ##student用户尝试进入/sc/目录,无法进入
cd /cw/          ##student用户尝试进入/cw/目录,无法进入
cd /pub/          ##student用户尝试进入/pub/目录,可以进入,进入目录,说明/pub/目录具有x权限
touch file1      ##创建目录,说明/pub/目录具有w权限
ls          ##查看目录,说明/pub/目录具有r权限

##################6.umask#########################
Umask 系统建立文件时默认保留的权利
(1)查看umask的值是多少:
在这里插入图片描述
总结:
(1)umask的值为0022
(2)umask 077 ##临时设定系统预留权限为077
在root用户下临时更改umask的值为077:
在这里插入图片描述

mkdir test        ##新建一个test目录
ls –ld           ##查看目录(.)的权限
ls –ld test/       ##查看目录test/的权限
umask 077          ##临时将umask的值改成077
mkdir test1        ##新建一个test1目录 
ls –ld test1         ##查看test1的权限。其权限值因为umask的更改而变为700(777-077=700)
touch file1         ##新建一个file1文件
ls –l file1         ##其权限值因为umask的更改而变为600(777-077=700-111=600)

在普通用户下对umask进行临时更改:
在这里插入图片描述

su – student            ##切换到普通用户student
umask           ##查看普通用户下的umask值
umask 0007       ##临时更改umask的值为0007
touch file       ##新建一个file
ls –l file       ##查看file的权限
mkdir test        ##新建一个test
ls –ld test      ##查看test的权限

(3)永久更改umask
vim /etc/profile ##系统配置文件
59 if [ $UID –gt 199 ] && [ “id –gn” = “id –un” ];then
60 umask 002 ##普通用户的umask
61 else
62 umask 077 ##超级用户的umask
63 fi

Vim /etc/bashrc ##shell配置文件
70 if [ $UID –gt 199 ] && [ “id –gn” = “id –un” ];then
71 umask 002
72 else
73 umask 077
74 fi

Source /etc/profile ##让更改立即生效

在这里插入图片描述
文件配置:
在这里插入图片描述
文件配置:
在这里插入图片描述

su – root               ##切换到root用户
vim /etc/profile        ##进入系统配置文件
vim /wtc/bashrc              ##进入shell配置文件
mkdir test1            ##创建目录test1
ls –ld test1          ##查看test1的权限
source /etc/profile       ##让更改立即生效
source /etc/bashrc        ##让更改立即生效
ls –ld test1         ##查看test1的权限
touch tset2          ##建立目录test2
ls –ld test2         ##查看目录test2的权限

注意:当永久更改umask时,只对还没有创建的文件或目录有效,对已经生成的文件或目录无效

#################7.特殊权限###################
1.sticky ##粘制位
作用:只针对目录有效,当一个目录上有sticky权限时,在这个目录中的文件只能被文件的所有者删除
设定方式:
chmod o+t dir
chmod 1xxx dir
首先可以创建一个监控,实时观看/pub/目录的权限变化
在这里插入图片描述

mkdir /pub/                ##创建/pub/目录
chmod 777 /pub/            ##设置/pub/的权限
watch –n 1 ls –ld /pub/           ##对/pub/的目录进行实时监控

1)通过使用命令chmod o+t dir来实现在/pub/目录下的文件只能被文件的所有者删除
在这里插入图片描述

su – tom                    ##切换到tom用户
cd /pub/                  ##tom用户进入目录/pub/中
touch file               ##在/pub/目录下建立file文件
ls –l file              ##查看file文件的权限
exit                    ##退出tom用户
chmod o+t /pub/          ##在/pub/中的文件只能被文件的所有者删除
su – tom                ##切换到tom用户
ls –ld /pub/           ##再次查看/pub/的权限
exit                    ##退出tom用户
su – harry             ##切换到harry用户
cd /pub/                ##进入/pub/
touch file2             ##建立文件file2
rm –rf file2            ##删除文件file2
rm –rf file                  ##删除文件file,但是无法删除

总结:当通过命令给/pub/设定权限后,在tom用户下/pub/内的文件只能被tom删除,别的用户将无法删除。
2)通过使用命令chmod 1xxx dir更改目录的权限:
在这里插入图片描述

ls –ld /pub/               ##查看目录/pub/的权限
chmod 1777 /pub/           ##更改目录/pub/的权限
ls –ld /pub/              ##再次查看目录/pub/的权限

2.sgid ##强制位
作用:
1)对文件:只针对与二进制可执行文件,当文件上有sgid时任何人执行此文件产生的进程都属于文件的组
2)对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组
设定方式:
Chmod g+s file/dir
Chmod 2xxx file/dir
3.suid ##冒险位
作用:只针对与二进制可执行文件,当文件上有suid时任何人执行这个文件中程序产生的进程都属于文件的所有人
设定方式:
Chmod u+s file
Chmod 4xxx file

1)通过使用命令chmod g+s file/dir更改目录的权限:
首先在普通用户下进行如下命令:
在这里插入图片描述

touch file                ##创建文件
Ls –ld /pub/             ##查看目录/pub/的权限

切换root

ls –ld /pub/             ##查看目录/pub/的权限
chmod g+s /pub/            ##更改/pub/的权限

在这里插入图片描述

ls –ld /pub/         ##查看目录/pub/的权限

总结:可以看到目录下的所有组的x(执行)变为s(强制位),即不论谁在/pub/目录中建立的文件都属于目录的所有组
测试:
在这里插入图片描述

su – westos   ##切换用户westos
cd /pub/     ##进入/pub/目录下
ls –ld /pub/       ##查看/pub/目录的权限
touch file1        ##新建一个文件file1
ls –l file1        ##查看文件file1的权限

结果:更改用户后,可以看到文件file1的所有组依旧是目录/pub/的所有组。
2)
通过对目录权限的变化,观察进程中watch的变化:
在这里插入图片描述

    ls –l /bin/watch          ##查看/bin/watch 的权限
    chgrp student /bin/watch     ##将/bin/watch所有组更改成student
    ls –l /bin/watch      ##再次查看/bin/watch的权限
    chmod g+s /bin/watch       ##更改/bin/watch的组中x变为s
    ls –l  /bin/watch         ##查看/bin/watch 的权限
   chmod u+s /bin/watch       ##更改/bim/watch的用户中x变为s
    ls –l /bin/watch           ##查看/bin/watch的权限
    ls –l /sbin/useradd         ##查看/sbin/useradd的权限
    chmod u+s /sbin/useradd       ##更改/sbin/useradd的用户中的x变为s
    ls –l /sbin/useradd          ##查看/sbin/useradd的权限

su – harry                 ##切换至用户harry
watch –n 1 date             ##实时监控date

在这里插入图片描述

ps ax  -o comm,user,group | grep –E “\<watch\>”
ps ax  -o comm,user,group | grep –E “\<watch\>”
ps ax  -o comm,user,group | grep watch

3)
证明:将目录权限发生改变后,只能在原来的组下进行删除:

    ls –l /bin/rm            ##查看/bin/rm 的权限
    chown student:student /bin/rm           ##将/bin/rm的所有人和所有组都更改成student
    ls –l /bin/rm                 ##再次查看/bin/rm 的权限,查看所有人和所有组是否发生了变化
    rm –rf  /mnt              ##试图杀死目录/mnt(临时区)
    chmod u+s /bin/rm           ##改变/bin/rm的用户中x为s
    chmod g+s /bin/rm           ##改变/bin/rm的组组中x为s
    ls –l /bin/rm           ##再次查看/bin/rm的权限,查看权限是否发生了变化
    rm –rf /home/student        ##试图删除/home/student,发现报错了
    ls –ld /home          ##进入/home中进行查看

4)
比较权限755、2755、6755的区别
在这里插入图片描述

   ls –l /bin/watch                 ##查看/bin/watch 的权限
   chgrp student /bin/watch            ##将/bin/watch的所有组更改成student
   chmod 755 /bin/watch             ##更改/bin/watch的权限为rwxr-xr-x
   ls –ld /bin/watch             ##再次查看/bin/watch的权限
   chmod 2755 /bin/watch           #将/bin/watch的组中的x变为s
   ls –ld /bin/watch             ##再次查看/bin/watch的权限
   chmod 6755 /bin/watch          #将/bin/watch的用户中的x变为s
   ls –ld /bin/watch             ##再次查看/bin/watch的权限

在这里插入图片描述

ps –ax –o comm,user,group

在这里插入图片描述

watch –n 1 date

总结:
2755相当于u+x,6755相当u+x和g+x
练习:
1)/pub目录为公共存储目录对所有用户可以读,写,执行,但用户只能删除属于自己的文件
2)/sc目录为生产部存储目录只能对生产部人员可以写入,并且生产部人员所建立的文件都自动归属到shengchan组中
3)/cw目录为财务部存储目录只能对财务部人员可以写入,并且财务部人员所建立的文件都自动归属到caiwu组中
4)admin用户对于/sc和/cw目录可以读写执行
在这里插入图片描述

groupadd caiwu            ##创建caiwu组
groupadd jishu             ##创建jishu组
chmod 1777 /pub            ##将/pub的权限更改成1777
chmod 2770 /sc           ##将/sc的权限更改成2770
chmod 2770 /cw            ##将/cw的权限更改成2770
chgrp caiwu /cw           ##将/cw的所有组更改成caiwu
chgrp shengchan /sc        ##将/sc的所有组更改成shengchan
ls –ld /pub /sc /cw         ##查看/pub  /sc  /cw的权限

###############8.acl权限列表#########
(1)作用:让特定的用户对特定的文件拥有特定权限
(2)acl列表查看
-rw-rwxr–+ 1 root root 0 Jul 21 14:25 file1中权限中的“+”即为acl开启
Getfacl file ##查看acl开启的文件的权限
#file : file ##文件名称
#owner : root ##文件拥有者
#group : root ##文件拥有组
User::rw- ##文件拥有人的权限
User::kiosk:rwx ##指定用户(kiosk)的权限
Group::r-- ##文件拥有组的权力
Mask::rwx ##能赋予用户的最大权力值
Other::r-- ##其他人的权限
(3)acl列表的管理

Getfacl  file
Setfacl –m u:username:rwx file     ##设定username对file拥有rwx权限
Setfacl  -m g:group:rwx file       ##设定group组成员对file拥有rwx权限
Satfacl  -x u:username file     ##从acl列表中删除username
Satfacl  -b file         ##关闭file上的acl列表

<1>首先开启acl:
在这里插入图片描述

touch file     ##创建一个文件

ls –l file ##查看文件的权限
<2>实时监控act列表
在这里插入图片描述

watch –n 1 getfacl file

<3>管理acl列表:
在这里插入图片描述

setfacl –m u:harry:rwx file          ##设定harry对file拥有rwx权限
ls –l file          ##查看文件的权限
setfacl –m u:harry:0 file          ##设定harru对file拥有0权限
ls –l file          ##查看文件的权限
setfacl –m g:shengchan:rwx file          ##设定shengchan对file拥有rwx权限
setfacl –x u:harry file              ##从acl列表中删除用户harry
setfacl –x g:shengchan file           ##从acl列表中删除组shengchan
ls –l file        ##查看file的权限
setfacl  -b file          ##关闭file上的acl列表
ls –l file        ##查看file的权限

总结:可以通过对acl列表的管理,实现不同用户对不同文件的权限管理。

(4)mask的值
在权限列表中mask标志能生效的权力值,当用chmod减小开启acl的文件权限时,mask值会发生改变
Chmod g-w westos
如果要恢复mask的值
setfacl –m m:rw westos
在这里插入图片描述

setfacl –m u:harry:rwx file          ##设定harry对file拥有rwx权限
ls –l file         ##查看file的权限
chmod g-w file         ##更改file的权限
setfacl –m m:rwx file

(5)acl的默认权限设定
acl默认权限只针对目录设定,“acl权限只针对设定完成之后新建的文件或目录生效,而已经存在的文件是不会继承默认权限的”
Setfacl –m d:u:student:rwx /mnt/westos
Setfacl –k /mnt/westos
准备工作,通过建立文件和目录,查询相关的权限:

    setfacl –m u:harry:0 file          ##设定harry对file拥有0权限
    su – harry            ##切换用户为harry
    ls /mnt/              ##查看/mnt/下的文件或目录
    cd westos/            ##进入westos/
    ls              ##查看westos下的文件或目录
    mkdir /mnt/westos/test     ##新建一个/mnt/westos/test目录
    ls –ld /mnt/westos/test     ##查看/mnt/westos/test的权限
    mkdir tset1     ##新建一个目录test1
    cd /mnt/westos          ##进入/mnt/westos
    ls        ##查看/mnt/westos下的文件或目录
    ls –l      ##查看/mnt/westos的权限
    mkdir test2        ##新建一个目录test2
    ls –l           ##查看test2的权限
    getfacl test2      ##开启test2 acl列表
    cd              进入列表中
    rm –rf /mnt/westos/            ##删除/mnt/westos/

测试,设定默认权限后,再次查看文件:

mkdir /mnt/w           ##新建目录/mnt/w
mkdir /mnt/westos            ##新建目录/mnt/westos
setfacl –m d:u:harry:rwx /mnt/westos/    ##设定harry对/mnt/westos拥有rwx权限
cd /mnt/file1
cat file

猜你喜欢

转载自blog.csdn.net/qq_39376481/article/details/85726997