10.1.1 设置文件的所有者chown
chown 命令可以修改文件的属主,也可以修改文件属组
格式:
chown [OPTION]... [OWNER]:[GROUP] FILE...
chown [OPTION]... --reference=RFILE FILE...
用法说明:
OWNER #只修改所有者
OWNER:GROUP #同时修改所有者和属组
:GROUP #只修改属组,冒号也可用 . 替换
--reference=RFILE #参考指定的的属性,来修改
-R #递归,此选项慎用,非常危险!
范例:
[root@servera ~]# chown student.student f3
[root@servera ~]# ll f3
-rw-r--r--. 1 student student 0 Mar 27 15:35 f3
[root@servera ~]# ll f4
-rw-r--r--. 1 root root 0 Mar 27 15:35 f4
[root@servera ~]# chown --reference=f4 f3
[root@servera ~]# ll f3
-rw-r--r--. 1 root root 0 Mar 27 15:35 f3
[root@servera ~]# chown student:student f3
[root@servera ~]# ll f3
-rw-r--r--. 1 student student 0 Mar 27 15:35 f3
[root@servera test]# pwd
/root/test
[root@servera test]# ll
total 4
-rw-r--r--. 1 root root 0 Mar 27 16:37 a
-rw-r--r--. 1 root root 2716 Mar 27 16:40 pass
drwxr-xr-x. 2 root root 31 Mar 27 16:36 test2
[root@servera test]# chown -R student.student ~/test
[root@servera test]# ll -d
drwxr-xr-x. 3 student student 40 Mar 27 16:47 .
[root@servera test]# ll
total 4
-rw-r--r--. 1 student student 0 Mar 27 16:37 a
-rw-r--r--. 1 student student 2716 Mar 27 16:40 pass
drwxr-xr-x. 2 student student 31 Mar 27 16:36 test2
[root@servera test]# cd test2/
[root@servera test2]# ll
total 0
-rw-r--r--. 1 student student 0 Mar 27 16:05 a
10.1.2 设置文件的属组信息chgrp
chgrp 命令可以只修改文件的属组
格式
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R 递归
范例:
[root@servera test]# chgrp student .
[root@servera test]# ll -d
drwxr-xr-x. 3 root student 40 Mar 27 16:47 .
10.2.1 文件权限说明
文件的权限主要针对三类对象进行定义
owner 拥有者, u
group 属组, g
other 其他, o
注意:用户的最终权限,是从左向右进行顺序匹配,即,所有者,所属组,其他人,一旦匹配权限立即生效,不再向右查看其权限
每个文件针对每类访问者都定义了三种常用权限
r Readable
w Writable
x eXcutable
对文件的权限:
r 可使用文件查看类工具,比如:cat,可以获取其内容
w 可修改其内容
x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)
对目录的权限:
r 可以使用ls查看此目录中文件列表
w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最
小权限
X 只给目录x权限,不给无执行权限的文件x权限
数学法的权限
二进制数字
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
例如:
rw-r----- 640
rwxr-xr-x 755
格式
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
#参考RFILE文件的权限,将FILE的修改为同RFILE
chmod [OPTION]... --reference=RFILE FILE...
说明:
修改指定一类用户的所有权限
u= g= o= ug= a= u=,g=
修改指定一类用户某个或某个权限
u+ u- g+ g- o+ o- a+ a- + -
-R: 递归修改权限
范例: 设置 X 权限
[root@servera test2]# chmod a+x -R .
[root@servera test2]# ll
total 0
-rwxr-xr-x. 1 root root 0 Mar 27 16:05 a
lrwxrwxrwx. 1 root root 10 Mar 27 16:36 test.lnk -> /root/test
[root@servera test2]# ll -d
drwxr-xr-x. 2 root root 31 Mar 27 16:36 .
[root@servera test]# chmod -R a+X .
[root@servera test]# ll
total 4
-rw-r--r--. 1 root root 0 Mar 27 16:37 a
-rw-r--r--. 1 root root 2716 Mar 27 16:40 pass
drwxr-xr-x. 2 root root 31 Mar 27 16:36 test2
r=4 w=2 x=1
umask 的值可以用来保留在创建文件权限
实现方式:
非特权用户umask默认是 002
root的umask 默认是 022
查看umask
umask
#模式方式显示
umask –S
#输出可被调用
umask –p
修改umask
umask #
范例:
umask 002
umask u=rw,g=r,o=
持久保存umask
思考题:
当usmak=233的时候,创建文件的权限是多少?创建目录的权限是多少?
常用范例:
#临时设置umask创建文件或目录后自动恢复为原来的umask
[root@centos8 ~]#umask
0022
[root@centos8 ~]#( umask 666; touch /data/f1.txt )
[root@centos8 ~]#umask
0022
[root@centos8 ~]#ll /data/f1.txt
---------- 1 root root 0 Mar 27 14:55 /data/f1.txt
10.2.4 Linux文件系统上的特殊权限
前面介绍了三种常见的权限:r, w, x 还有三种特殊权限:SUID, SGID, Sticky
前提:进程有属主和属组;文件有属主和属组
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
© 应用文件“其它”权限
二进制的可执行文件上SUID权限功能:
chmod u+s FILE...
chmod 6xxx FILE
chmod u-s FILE...
范例:
[root@servera test]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 33544 Dec 14 2019 /usr/bin/passwd
说白了就是其他用户以root用户身份运行命令
10.2.4.2 特殊权限SGID
二进制的可执行文件上SGID权限功能:
SGID权限设定:
chmod g+s FILE...
chmod 2xxx FILE
chmod g-s FILE...
目录上的SGID权限功能:
默认情况下,用户创建文件时,其属组为此用户所属的主组,一旦某目录被设定了SGID,则对此目录有
写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录
SGID权限设定:
chmod g+s FILE...
chmod 2xxx FILE
chmod g-s FILE...
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
sticky 设置在文件上无意义
Sticky权限设定:
chmod o+t DIR...
chmod 1xxx DIR
chmod o-t DIR...
数字位:
GUID=6
SGID=2
sticky=1
权限位映射
SUID: user,占据属主的执行权限位
s:属主拥有x权限
S:属主没有x权限
SGID: group,占据属组的执行权限位
s: group拥有x权限
S:group没有x权限
Sticky: other,占据other的执行权限位
t:other拥有x权限
T:other没有x权限
设置文件的特殊属性,可以访问 root 用户误操作删除或修改文件
不能删除,改名,更改
chattr +i
只能追加内容,不能删除,改名
chattr +a
显示特定属性
lsattr
ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
rhel7 默认创建的xfs和ext4文件系统具有ACL功能
rhel7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
tune2fs -o acl /dev/sdb1
mount -o acl /dev/sdb1 /mnt/test
ACL生效顺序:
所有者,自定义用户,所属组|自定义组,其他人
setfacl 可以设置ACL权限
getfacl 可查看设置的ACL权限
范例:
[root@servera cur]# setfacl -m u:hao:rw test
[root@servera cur]# getfacl test
# file: test
# owner: root
# group: root
user::r--
user:hao:rw-
group::r--
mask::rw-
other::r--
范例:
getfacl file |directory
setfacl -m u:hao:rwx file|directory
setfacl -m g:admins:rw file| directory
setfacl -x u:hao file |directory
#清除所有ACL权限
setfacl -b file1
–set 选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以
范例:
setfacl --set u::rw,u:hao:rw,g::r,o::- file1
范例:
setfacl -m mask::rx file
范例:
[root@centos8 data]#ll f1.txt
-rw-rw-r--+ 1 root root 728 Dec 18 14:51 f1.txt
[root@centos8 data]#chmod g=r f1.txt
[root@centos8 data]#ll f1.txt
-rw-r--r--+ 1 root root 728 Dec 18 14:51 f1.txt
[root@centos8 data]#getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw
user:hao:---
group::r--
group:admins:-w- #effective:---
mask::r--
other::r--
[root@centos8 data]#setfacl -m mask::rw f1.txt
[root@centos8 data]#getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw
user:hao:---
group::r--
group:admins:-w
mask::rw
other::r--
[root@centos8 data]#setfacl -m u:hao:rwx f1.txt
[root@centos8 data]#getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rwuser:
hao:rwx
group::r--
group:admins:-w
mask::rwx
other::r--
[root@centos8 data]#setfacl -m mask::rw f1.txt
[root@centos8 data]#getfacl f1.txt
# file: f1.txt
# owner: root
# group: root
user::rw
user::hao:rwx #effective:rw
group::r--
group:admins:-w
mask::rw
other::r--
sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。
在最早之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。sudo于1980年前后推出,sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。
由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号,例如Ubuntu、Mac OS X等。
sudo特性:
包:sudo
配置文件:/etc/sudo.conf
授权规则配置文件:
/etc/sudoers
/etc/sudoers.d
安全编辑授权规则文件和语法检查工具
/usr/sbin/visudo
范例:
#检查语法
visudo -c
visudo实际为编辑/etc/sudoers文件专用工具,有语法检测功能
范例:
#创建用户别名
# User_Alias ADMINS = jsmith, mikem
User_Alias TEST = student, hao
#添加用户并指定获权命令
## Allow root to run any commands anywhere
## 允许root用户执行任意路径下的任意命令
root ALL=(ALL) ALL
hao ALL=(ALL) /usr/sbin/fdisk NOPASSWD:/usr/sbin/
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
#添加组和别名指定获权命令(别名不需要加%)
%student ALL=(ALL) /usr/sbin/fdisk
TEST ALL=(ALL) NOPASSWD:/usr/sbin/parted
阅读量:2004
点赞量:0
收藏量:0