RHCE8 资料整理(二)

在这里插入图片描述

第二篇 用户及权限管理

第8章 用户管理

8.1 基本概念

详细参考: https://blog.csdn.net/u010230019/article/details/132224998

用户信息:/etc/passwd
密码信息:/etc/shadow
群组信息:/etc/group
群组密码:/etc/gshadow

用户信息也可以通过getent获取

[root@server yurq]# getent shadow yurq root
yurq:$6$kKNzhuprgmIZd5Ma$L5mUUIwFM8gUDztJOfvWWGyviUpvWSS1X6q/L5Ss5h5tOyHx/5wl9MLBLdVsYtZygeZHEOFeHdIMI.eLYYuWB.:19608:0:99999:7:::
root:$6$rgRTLqdztP39Kgqd$WGy53xGZ2gg1Fr8BalJbSibzzSiI5aGk2ighMuiyP1Ofn1ZW20ZdzHkfx0qo8b3yDHe4zUmJkYfeSiIxWhtxx/::0:99999:7:::

判断用户是否存在

[root@server yurq]# id yurq
uid=1000(yurq) gid=1000(yurq) groups=1000(yurq),10(wheel)

8.2 管理用户

8.2.1 创建用户
useradd [options] username
-d
-M
-G
-g
-s
-u
-m
-c
passwd username		#隐式
echo 'password'|passwd --stdin username	#显式
-l	#锁定
-u	#解锁
-S	#显示信息
-d	#清除密码

锁定的账号登录会提示

[alex@server ~]$ su - yurq
Password:
su: Authentication failure
8.2.2 修改用户属性
usermod [options] username
-c
-s
-g
-u
-d
-L#锁定用户
-U#解锁用户

被锁定的账号同样不能登录,提示认证失败

[root@server yurq]# passwd -l yurq
Locking password for user yurq.
passwd: Success
[root@server yurq]# passwd -S yurq
yurq LK 2023-09-08 0 99999 7 -1 (Password locked.)
[root@server yurq]# passwd -u yurq
Unlocking password for user yurq.
passwd: Success
[root@server yurq]# passwd -S yurq
yurq PS 2023-09-08 0 99999 7 -1 (Password set, SHA512 crypt.)

锁定前后

删除用户

userdel [options] username
-f #强制,即使登录
-r #删除家目录

组管理

groupadd groupname
groupdel groupname
groups groupname			#查看组信息
gpasswd -a username groupname	#添加用户到组
gpasswd -d username groupname	#从组中删除用户

8.3 用户的密码策略

详细参考 https://blog.csdn.net/u010230019/article/details/132224998

[root@study ~]# chage [-ldEImMW] 账号名
选项与参数:
-l :列出该账号的详细密码参数;
-d :后面接日期,修改 shadow 第三字段(最近一次更改密码的日期),格式 YYYY-MM-DD,(0为下次登录需修改,常用)
-E :后面接日期,修改 shadow 第八字段(账号失效日),格式 YYYY-MM-DD,(-1 永不过期,1 立即过期)
-I :后面接天数,修改 shadow 第七字段(密码失效日期)
-m :后面接天数,修改 shadow 第四字段(密码最短保留天数)
-M :后面接天数,修改 shadow 第五字段(密码多久需要进行变更)
-W :后面接天数,修改 shadow 第六字段(密码过期前警告日期)

8.4 用户授权

普通用户的权限往往不够,例如有些命令只能root执行,所以可以让root对普通用户进行授权
详细参考:https://blog.csdn.net/u010230019/article/details/132269498

普通用户可以通过root添加授权,来实现root的权限,并且不需要知道root密码。有两种方式:

  1. 修改/etc/sudoers
  2. 在/etc/sudoers.d/目录中添加配置文件,文件名称建议以用户名命名

这两种方式添加的内容格式一致,格式:

user1	主机名A=(user2)  命令1,命令2,命令3...

这里授权表明用户user1在主机A拥有user2的执行命令1,命令2,命令3的权限

套用到root,则为

yurq	server.rhce.cc=(root)	/bin/mount

此时yurq就拥有root执行mount的权限,这里需要指明命令的绝对路径

此时yurq在server.rhce.cc可以执行mount命令,但是执行的时候需要通过sudo命令,例如

sudo mount /dev/ /mnt/sda

但此时,仍需要输入yurq的密码,如下修改则免除密码

yurq	server.rhce.cc=(root)	NOPASSD:	/bin/mount

如果需要赋权的指令较多,总不能加一堆吧,可通过ALL这个关键字实现,这个ALL可以替代主机名,用户和指令

yurq    ALL=(ALL) NOPASSWD:    ALL

yurq 不论来自哪部主机登入,他可以变换身份成为任何人,且可以进行系统上面的任何指令

想管理一个赋权账号,就需要有时间限制,在/etc/sudoers中,添加

Defaults	timestamp_timeout=N

可以设置密码保留时间为N分钟(默认为5分钟),此时配置文件中不能有NOPASSD:字段

用户可以通过sudo -k可以立即清除保留的密码
用户可以通过sudo -i切换到root用户,如果配置了NOPASSD:可以无密码直接切换

8.5 重置root密码

  1. 在内核引导界面,通过上下键选择第一行,按e键进入grub编辑界面,编辑grub菜单
    在这里插入图片描述
  2. 将linux行的ro改为rw,行尾加init=/bin/bash,按ctrl+x进行启动
    在这里插入图片描述
  3. 这样我们进入bash
    在这里插入图片描述
  4. 挂载根目录
    mount -o remount, rw /
    
  5. 接着在此处可以直接重置root密码,并且不需要知道原密码
    在这里插入图片描述
  6. 更改selinux
    vi etc/selinux/config #把 enforcing 改为 disable
    
  7. 重启该虚拟机就可以使用新密码登录root了
    exec /sbin/reboot
    
    命令重启不好用,可以直接手动重启

第9章 权限管理

9.1 所有者和所属组

所有者和所属组又称为属主和属组,这里一般指文件或目录的权限
详细参考 https://blog.csdn.net/u010230019/article/details/132208697

改变属主和属组命令为chown,格式

chown [OPTION]... [OWNER][:[GROUP]] FILE...
-R #递归,通常针对目录

这里指的一提的是属主和属组之间的关联符号,官方默认是:,但也可以用.,例如

chown user.group file 等价于chown user:group file

修改群组有单独的命令chgrp,格式

chgrp user file...

9.2 查看及修改权限

一般都是通过ls -lll查看,输入alias可以看到llls -l的别名

[root@server ~]# alias
...
alias ll='ls -l --color=auto'

关于ls -l 查看的文件权限一共九位,分三组。另外第10位.,也需要注意其含义,这里不展开写了,参考
https://blog.csdn.net/u010230019/article/details/132208697

修改权限一般使用chmod,格式

chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
-R #递归

这里对权限的修改,格式还是比较多的

字符权限

对应所属赋值符类型含义
a+,-,=[r|w|x]对所有所属(属主,属组,其他人)进行操作
u+,-,=[r|w|x]对属主进行操作
g+,-,=[r|w|x]对属组进行操作
o+,-,=[r|w|x]对其他人进行操作

9.3 数字权限

八进制数字权限
可对[a,u,g,o]直接使用=进行数字赋权

r	-- 4	#读
w -- 2		#写
x -- 1		#执行
--- -- 0	#无任何权限,我们可以看到/etc/shadow每组都是这个权限

9.4 默认权限

目录的默认权限是755,文件的默认权限是644,这些权限是根据umask计算获得

[root@server ~]# umask
0022
[root@server ~]# umask -S
u=rwx,g=rx,o=rx

修改umask可以直接赋值,或者修改/etc/bashrc

umask 002

umask 过滤计算结论:

  1. 目录默认权限=777 - umask
  2. 文件默认权限=666 - (umask每个奇数 -1),如umask=333,则文件默认权限位444

9.5 特殊权限

这里主要说suid,sgid,sbit,详细参考:https://blog.csdn.net/u010230019/article/details/132171439

  1. SUID:当 s 这个标志出现在文件拥有者的 x 权限上时,那么:

SUID 权限仅对二进制程序(binary program)有效;
执行者对于该程序需要具有 x 的可执行权限;
本权限仅在执行该程序的过程中有效 (run-time);
执行者将在执行该程序过程中具有拥有者 (owner) 的权限。

修改方法:

chmod u[+|-]s binary_program

这个有什么用呢?举个例子,我们可以修改自己的登录密码,却不用联系管理员,因为/bin/passwd就设置了SUID

	[root@server yurq]# ll /bin/passwd
	-rwsr-xr-x. 1 root root 32648 Aug 10  2021 /bin/passwd

再举个例子,默认文件权限644,其他人是否可以修改文件内容呢?理论上不行,但是可以如下操作:

[root@server opt]# touch testfile
[root@server opt]# ll testfile
-rw-r--r-- 1 root root 10 Oct 19 22:14 testfile
[root@server opt]# chmod u+s /bin/vim
[root@server opt]# ll /bin/vim
-rwsr-xr-x. 1 root root 4025616 Feb 24  2022 /bin/vim
[root@server opt]# su - yurq
[yurq@server ~]$ vim /opt/testfile
[yurq@server ~]$ cat /opt/testfile
testfile1
[yurq@server ~]$ exit
logout
[root@server opt]# chmod u-s /bin/vim
[root@server opt]# su - yurq
[yurq@server ~]$ vim /opt/testfile
...
"/opt/testfile"
"/opt/testfile" E212: Can't open file for writing
Press ENTER or type command to continue
[yurq@server ~]$ exit
logout
  1. SGID:当 s 标志在文件/目录 群组的 x 项目上时,
    那么如果是文件的话:

SGID 对二进制程序有用;
程序执行者对于该程序来说,需具备 x 的权限;
执行者在执行的过程中将会获得该程序群组的支持!

参考SUID的示例,这个很好理解

如果是目录的话:

用户若对于此目录具有 r 与 x 的权限时,该用户能够进入此目录;
用户在此目录下的有效群组(effective group)将会变成该目录的群组;
用途:若用户在此目录下具有 w 的权限(可以新建文件),则使用者所建立的新文件,该新文件的群组与此目录的群组相同。

修改方法:

chmod g[+|-]s binary_program
  1. SBIT:这个 Sticky Bit, SBIT 目前只针对目录有效,对于文件已经没有效果了。SBIT 对于目录的作用是:

当用户对于此目录具有 w, x 权限,亦即具有写入的权限时;
当用户在该目录下建立文件或目录时,仅有自己与 root 才有权力删除该文件

即如果某个目录o位置上设置t时,那么此目录中的文件除所有者和root外,其他用户即使对此文件具有所有权限,也无法删除此文件

可以查看/tmp,也不难理解

[root@server opt]# ll -d /tmp/
drwxrwxrwt. 21 root root 4096 Oct 19 22:35 /tmp/

验证:
以 root 登入系统,并且进入 /tmp 当中;
touch test,并且更改 test 权限成为 777 ;
以一般使用者登入,并进入 /tmp;
尝试删除 test 这个文件!

修改方法:

chmod o[+|-]s binary_program

9.6 隐藏权限

系统中还存在一些隐藏权限,这些权限的设置对root也是生效的。查看命令lsattr,格式:

lsattr [ -RVadlpv ] [ files...  ]
-a :将隐藏文件的属性也秀出来;
-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;
-R :连同子目录的数据也一并列出来!

修改命令chattr,格式:

chattr [+-=][ASacdistu] 文件或目录名称

选项与参数:
+ :增加某一个特殊参数,其他原本存在参数则不动。
- :移除某一个特殊参数,其他原本存在参数则不动。
= :设定一定,且仅有后面接的参数

a :当设定 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有 root 才能设定这属性
c :这个属性设定之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩,
 		但是在储存的时候,将会先进行压缩后再储存(看来对于大文件似乎蛮有用的!)
i :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、设定连结也无法写入或新增数据!』
 		对于系统安全性有相当大的帮助!只有 root 能设定此属性
s :当文件设定了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,
 		所以如果误删了,完全无法救回来了喔!
u :与 s 相反的,当使用 u 来配置文件案时,如果该文件被删除了,则数据内容其实还存在磁盘中,
 		可以使用来救援该文件喔!
[root@server yurq]# ll 123
-rw-rw-rw- 1 root root 0 Oct 19 21:51 123
[root@server yurq]# chattr +i 123
[root@server yurq]# su - yurq
[yurq@server ~]$ echo 123>123
-bash: 123: Operation not permitted
[yurq@server ~]$ exit
logout
[root@server yurq]# chattr -i 123
[root@server yurq]# su - yurq
[yurq@server ~]$ echo 1234 >123
[yurq@server ~]$ cat 123
1234
[yurq@server ~]$ lsattr 123
---------------------- 123

[root@server yurq]# chattr +a 123
[root@server yurq]# lsattr 123
-----a---------------- 123
[root@server yurq]# su - yurq
[yurq@server ~]$ echo 12345 > 123
-bash: 123: Operation not permitted
[yurq@server ~]$ echo 12345 >> 123
[yurq@server ~]$ cat 123
1234
12345

第10章 ACL权限

详细可查看https://blog.csdn.net/u010230019/article/details/132269498

10.1 ACL介绍及基本用法

ACL 是 Access Control List 的缩写,主要的目的是在提供传统的 owner,group,others 的read,write,execute 权限之外的细部权限设定。ACL 可以针对单一使用者,单一文件或目录来进行r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助。

说白了,就是直接对用户进行权限设置,而非依托于属主,属组和其他

查看ACL使用getfacl,格式

getfacl [options] file
-c #去除以#行首的行

设置ACL使用setfacl,格式

setfacl [-bkRd] [{-m|-x} acl参数] 目标文件名
选项与参数:
-m :设定后续的 acl 参数给‘文件’使用,不可与 -x 合用;
-x :删除后续的 acl 参数,不可与 -m 合用;
-b :移除『所有的』 ACL 设定参数;
-k :移除『预设的』 ACL 参数,关于所谓的『预设』参数于后续范例中介绍;
-R :递归设定 acl ,亦即包括次目录都会被设定起来;
-d :设定『预设 acl参数』的意思!只对‘目录’有效,在该目录新建的数据会引用此默认值
  • 用户设定规范:『 u:[使用者账号列表]:[rwx] 』
    比如说:
[root@server yurq]# getfacl yurq -c
user::rw-
group::r--
other::r--

[root@server yurq]# setfacl -m u:alex:rwx yurq
[root@server yurq]# getfacl yurq -c
user::rw-
user:alex:rwx
group::r--
mask::rwx
other::r--

[root@server yurq]# su - alex
[alex@server ~]$ echo 123 > /home/yurq/yurq
-bash: /home/yurq/yurq: Permission denied
[alex@server ~]$ ll /home/yurq/
ls: cannot open directory '/home/yurq/': Permission denied
[alex@server ~]$ exit
logout
[root@server yurq]# ll /home/yurq/ -d
drwx------. 15 yurq yurq 4096 Oct 20 17:39 /home/yurq/
[root@server yurq]# chmod o+rwx /home/yurq/
[root@server yurq]# su - alex
[alex@server ~]$ echo 123 > /home/yurq/yurq
[alex@server ~]$ ll /home/yurq/yurq
-rw-rwxr--+ 1 root root 4 Oct 20 17:54 /home/yurq/yurq

如果使用setfacl -m u::rwx file,则为所有用户加rwx

  • 特定的单一群组的权限设定:『 g:群组名:权限 』
    这个参考“用户”的设定即可,例如
setfacl -m g:mygroup1:rx acl_test1

10.2 ACL的mask权限

  • 针对有效权限设定:『 m:权限 』,即针对有效权限 mask 的设定方式
[root@study ~]# setfacl -m m:r acl_test1
[root@study ~]# getfacl acl_test1
# file: acl_test1
# owner: root
# group: root
user::rwx
user:vbird1:r-x 		#effective:r-- 	<==vbird1+mask 均存在者,仅有 r 而已,x 不会生效
group::r--
group:mygroup1:r-x 	#effective:r--
mask::r--
other::r--

实际用户权限会和有效权限mask取余

10.3 设置默认权限

  • 使用默认权限设定目录未来文件的 ACL 权限继承『 d:[u|g]:[user|group]:权限 』,针对预设权限的设定方式:
[root@study ~]# setfacl -m d:u:myuser1:rx /srv/projecta
[root@study ~]# getfacl /srv/projecta
# file: srv/projecta
# owner: root
# group: projecta
# flags: -suser::rwx
user:myuser1:r-x
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:myuser1:r-x
default:group::rwx
default:mask::rwx
default:other::---

[root@study ~]# cd /srv/projecta
[root@study projecta]# touch zzz1
[root@study projecta]# mkdir zzz2
[root@study projecta]# ll -d zzz*
-rw-rw----+ 1 root projecta 0 Jul 21 17:50 zzz1
drwxrws---+ 2 root projecta 6 Jul 21 17:51 zzz2
# 看吧!确实有继承喔!然后我们使用 getfacl 再次确认看看!
[root@study projecta]# getfacl zzz2
# file: zzz2
# owner: root
# group: projecta
# flags: -suser::rwx
user:myuser1:r-x
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:myuser1:r-x
default:group::rwx
default:mask::rwx
default:other::---

透过这个『针对目录来设定的默认 ACL 权限设定值』的项目,我们可以让这些属性继承到次目录底下呢! 非常方便啊!那如果想要让 ACL 的属性全部消失又要如何处理?透过『 setfacl -b 檔名 』即可啦!

权限内容远远不止介绍中的内容,可参考
https://blog.csdn.net/u010230019/article/details/132208697

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值