文章目录
基本权限UGO
超管可以控制某个用户权限,从而控制他能否访问某个文件。
授权对象:可授权的对象有3种:u(用户,user)、 g(组,group)、 o(其他人,除了用户和组之外的,other)
a(all,特殊对象= u+g+o)
授权内容:可授权的权限种类:r(读取)、w(写入)、x(执行,用于执行代码,执行将文件变成程序)。rwx也可以用数字表示,r=4,w=2,x=1,我们可以使用字母授权也可以使用数字授权。如 u=5就表示给用户授予r和x的权限(5=4+1)。0表示不授权。
授权chmod,修改UGO用户对文件的权限
- 授权命令格式:
命令 对象、赋值符、权限 文件或目录
命令:chmod(修改权限)
对象:u(对象)/g(组)/o(其他人)/a(所有)
赋值符:+(添加权限)/ -(删除权限)/ =(重新赋予权限)
权限:r(读)/ w(写)/x(执行)
文件或目录:可以授权指定的文件或目录的权限,如果是文件夹的话我们一般添加-R
参数,表示该文件夹下的所有文件都进行授权。
如: chmod u+r 1.txt
:给对象用户添加读1.txt文件的读取权限chmod a=rx 1.txt
:给所有用户授予1.txt文件的读取和执行的权限。rwx中不想赋予的权限不写即可。chmod a= 1.txt
:给取消所有用户对1.txt文件的读写和执行的权限。=后没有写任何权限证明不授予任何权限。chmod ug=rw, o=r file1.txt
:用户和组授予读写功能,其他人授予读权限chmod 671 file1.txt
:用户授予读写功能(6=4+2),组授予读写执行功能(7=4+2+1),其他人授予执行权限(1=1)
注意为用户授权的文件一定是用户可能可以查看的文件,如果给某个用户授权root下的文件,这个操作明显是错误的,因为除超管外,没有用户可以访问root文件夹。- chmod命令当然也可以给文件夹授权,给文件夹授权的时候一般必须有执行权限。
chmod 0777 file1.txt
:四位权限也是合理的,此时第一位表示特殊位suid
的权限。
查看一个文件对UGO分配的权限
命令:
ls -l 文件名
查看文件的权限。第一个字符-
表示是文件, 第2-9个字符表示的是属主、属组、其他人(ugo)对文件的读、写、执行操作。
ls -l 的简写是 ll, 用于查看文件详细信息ls -l -d 文件夹名
查看文件夹的权限。第一个字符d
表示是文件夹, 第2-9个字符表示的是属主、属组、其他人(ugo)对文件的读、写、执行操作。
实例:
eg:我们使用ls查看一个文件的时候,有如下输出项:
-rw-r--r--. 1 root root 0 4月13 20:49 file1
-rw-r--r--.
:开头的-表示类型是一个文件,后面连着三个rwx
分别表示 属主、属组、其他人(ugo)对文件的读、写、执行操作,如果没有某项权限时用-
表示。最后面的.是分隔符- 1:表示文件被链接的次数,如将文件创建快捷方式的方法便属于文件链接
- root:属主,一般是文件的创造者
- root:属组,文件所属于的组
- 0:文件的大小,以字节为单位
- 4月13 20:49:创建时间
- file1:文件名
修改文件的属主、属组
chown命令
chown 用户名.组名 文件
: 可以修改文件的属主和属组chown 用户名 文件
: 可以修改文件的属主chown .组名 文件
: 可以修改文件的属组
chgrp命令
只能修改文件的属主
chgrp 组名 文件
:可以修改文件的属组- R参数:-R是递归的意思,-R递归使目录下的所有文件和目录,统一设置。如果对一个文件夹操作,如果想要该文件夹下的所有内容的属组的也进行修改就需要使用
-R参数
进行修改
chgrp -R 组名 文件夹
这两个命令也可以对文件夹做操作。
案例
为某个用户和某个组分配某个文件夹的权限
- 创建一个组
- 创建一个用户
- 创建一个文件夹
- 利用
chown
命令将创建的文件夹的属主和属组分配为刚才创建的组和用户 - 利用
chmod
命令将文件的UG权限进行分配。
复杂权限ACL
ACL访问控制列表,限制用户对文件的访问,是对UGO的补充,加强版。
AGL和UGO的区别:
- AGL 文件权限管理:可以为不同的用户设置不同的权限
- UGO 设置基本权限:只能为一个用户,一个组和其他人设置权限。
AGL的命令使用
查看文件有哪些ACL权限
getfacl 文件/文件夹
:用来查看该文件的ACL权限
eg:
#file: home/test.txt
#owner:root
#group:root
user:: rw-
group:: r--
other:: r--
#file: home/test.txt —— 文件名
#owner:root —— 文件属主
#group:root —— 文件属组
user:: rw- —— 属主权限, user行可以有多个如果不同的用户拥有不同的权限的时候就可以在这里显示,eg:user:jack:rw-
group:: r-- —— 属组权限, user行可以有多个如果不同的用户拥有不同的权限的时候就可以在这里显示
other:: r-- —— other权限
设置ACL权限
基本结果:设置文件访控 -操作 对象:对象名:权限 文件
- 设置权限:
设置文件访控 -m 对象:对象名:权限 文件
setfacl -m g:hr:rwx /home/file1
:表示为hr组分配file1文件的读写执行权限。
setfacl -m u:jack:rw /home/file1
:表示为jack用户分配file1文件的读写权限。
setfacl也可以修改基础权限:
setfacl -m o::rw /home/file1
:表示为其他用户分配file1文件的读写权限。 - 删除权限:
设置文件访控 -x 对象:对象名 文件
setfacl -x g:hr /home/file1
:表示为删除hr组对file1文件的ACL权限。 - 清除所有权限:
设置文件访控 -d 文件
setfacl -d /home/file1
:表示为删除file1文件的所有ACL权限。
特殊权限
- 创建一个文件时,该文件的默认权限分配是644,对用户、组、其他人的权限是:rw-,r–,r–
- 创建一个文件夹时,该文件夹的默认权限分配是755,对用户、组、其他人的权限是:rwx,r-x,r-x (为什么都有执行权限,因为进入目录就是一种执行权限,所以必须带有执行权)
特殊位suid
suid是针对文件所设置的一个特别权限。
suid的作用:使调用文件的用户临时具备属主的能力。
如何设置suid权限:chomd u+s 文件
eg:
cat是查看文件内容的命令,对不同的身份具有不同的权限。root运行是超管的权限,普通用户运行时是普通用户的权限。所以超管运行 cat /root/file.txt
是可以查看文件的内容的, 用户alice运行cat /root/file.txt
就报没有权限。
提权:此时我们可是使用chomd u+s 文件
来为cat命令提权,使alice用户可以查看root/file.txt
文件
操作:
- 使用跟用户将cat命令设置为suid权限:
chmod u+s /usr/bin/cat
, 设置完成之后cat文件的权限信息是这样的:- rwsr-xr-x x. 1 root root 54080 ...
发现对属主的权限是rws
, s就表示该文件具有suid的权限 - 使用alice用户执行
cat /root/file.txt
,可以查看该文件的内容。此时alice执行该命令就临时具有该文件临时的属组权限。
(注意该案例中我们提升的是cat的权限)
文件属性chattr
特殊的i权限
:如果一个文件非常重要,可以给该文件设置i权限,防止该文件被删除,设置i权限之后超管也没有删除该文件的权限。 如何设置这个i权限就需要通过chattr进行文件权限的设置。
lsattr 文件名
:查看文件的所有属性
chattr +添加的属性 文件名
:为文件添加属性,chattr +i file.txt
添加i权限就使file.txt文件进行锁定,就无法删除,修改该文件
常见的文件属性:
- i:文件锁定,
- a: 为文件添加追加操作
- c:启用这个属性时,文件在磁盘上会自动压缩
进程掩码umask
- 进行掩码的作用:新建的文件目录的默认权限会受到umask的权限,umask表示要减掉的权限
- 查看文件的掩码: 直接输入
umask
命令
eg:
[root@locaalhost ~]# umask
输出
0022
进程掩码输出四位,第一位表示suid需要剪掉的权限,后三位表示UGO
需要剪掉的权限。我们一般使用0777
减去进程掩码0022
获取到的就是创建文件夹时获取的权限755
。
同时系统为了保护自己,所以在创建文件时去掉了所有的执行权限,就是644
- 设置掩码
umask 0000
设置之后创建的文件夹的权限就是777
就是rwxrwxrwx
,同时创建文件的时候也需要减去执行权限就是666
,rw-rw-rw-
补充:watch命令
watch命令可以设置每隔一段时间执行一个命令
watch -n时间 '执行的命令'
eg:
watch -n1 'ls -l /tmp/file.txt'
表示每隔1秒就执行ls -l /tmp/file.txt
命令。
cat命令
cat是查看文件内容的命令,对不同的身份具有不同的权限。root运行是超管的权限,普通用户运行时是普通用户的权限。
eg:
超管运行 cat /root/file.txt
是可以查看文件的内容的, 用户alice运行cat /root/file.txt
就报没有权限。
补充:可执行文件
可执行文件语法
- echo :输出语句
echo 需要输出的变量或常量
eg:echo “2023”
就输出2023. - read :输入语句
read 需要用户输入的变量名
eg:read name
:程序执行到这里的时候会让用户输入一个值为name赋值
read -p 提示语句 需要用户输入的变量名
eg:read -p “请用户输入名字” name
- 变量的引用
如何使用定义好的变量名:$变量名
eg:
read -p “请用户输入名字” name
echo “用户的名字是$name”
执行文件
一个文件的执行有如下方法
- 打开文件:直接在终端打开一个文件,访问文件就可以执行,eg:./file1.txt
- 使用shell命令