欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

给普通用户提权

程序员文章站 2022-07-13 17:13:27
...

1.创建用户时默认的属性
vim /etc/login.defs
给普通用户提权
/var/spool/mail 创建用户自动生成的
CREAT_HOME yes 默认创建家目录
USERGROUPS_ENAB yes 没有用户组可删除
密码加密算法
给普通用户提权
给普通用户提权
66 开头的是SHA512算法
给普通用户提权

2.passwd
-l 锁定用户
-u 解锁用户
-d 清除密码串
-e 终止密码
-i 过期多少天登录需要密码
-n密码最短使用期限
-x 密码最长使用期限
-k 保留即将过期 在期满后仍能使用
-w 距多少天提醒用户修改密码
-s 查询密码状态
chage -M 修改密码过期时间
3.chage(更改用户密码过期信息)
-d :指定密码最后修改日期(创建时间)
-E禁用
-W密码过期前警告
-m 密码最小保持时间
-M 修改密码有效期最大时间
4.id
-u 查询UID
-g 查询GID
-G 显示附加组以及自己的GID
-n 以名字形式显示组的信息
5.提权
方式1: su
通过就改PAM中su的模块限制普通用户对su的执行:
vim /etc/pam.d/su
auth required pam_wheel.so use_uid
凡是在wheel组中的用户,才可以使用su命令
给普通用户提权
没有加入wheel的用户不可以使用su 命令

[aaa@qq.com ~]# usermod -aG   wheel user1
[aaa@qq.com ~]# su - user2
上一次登录:三 7月 29 17:52:17 CST 2020pts/0 上
[aaa@qq.com ~]$ su - root
密码:
su: 拒绝权限
[aaa@qq.com ~]$ 1
-bash: 1: 未找到命令
[aaa@qq.com ~]$ su - root
密码:
su: 拒绝权限

## sudo命令提权

我们知道,使用 su 命令可以让普通用户切换到 root 身份去执行某些特权命令,但存在一些问题,比如说:

仅仅为了一个特权操作就直接赋予普通用户控制系统的完整权限;
当多人使用同一台主机时,如果大家都要使用 su 命令切换到 root 身份,那势必就需要 root 的密码,这就导致很多人都知道 root 的密码;
考虑到使用 su 命令可能对系统安装造成的隐患,最常见的解决方法是使用 sudo 命令,此命令也可以让你切换至其他用户的身份去执行命令

相对于使用 su 命令还需要新切换用户的密码,sudo 命令的运行只需要知道自己的密码即可,甚至于,我们可以通过手动修改 sudo 的配置文件,使其无需任何密码即可运行。

sudo 命令默认只有 root 用户可以运行
。sudo命令的运行,需经历如下几步:

当用户运行 sudo 命令时,系统会先通过 /etc/sudoers 文件,验证该用户是否有运行 sudo 的权限;
确定用户具有使用 sudo 命令的权限后,还要让用户输入自己的密码进行确认。出于对系统安全性的考虑,如果用户在默认时间内(默认是 5 分钟)不使用 sudo 命令,此后使用时需要再次输入密码;
密码输入成功后,才会执行 sudo 命令后接的命令。
显然,能否使用 sudo 命令,取决于对 /etc/sudoers 文件的配置(默认情况下,此文件中只配置有 root 用户)
特性:

1、sudo能够限制用户只在某台主机上运行某些命令。
2、sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
3、sudo使用时间戳文件–日志 来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一
张存活期为5分钟的票(这个值可以在编译的时候改变)。
4、sudo的配置文件是/etc/sudoers,属性必须为0440,它允许系统管理员集中的管理用户的使用权限和使用的
主机。
路由表route( route指令用于显示或者修改IP路由表。它的主要用途是在使用ifconfig(8)程序配置接口后,通过接口设置到特定主机或网络的静态路由。)
(一)/etc/sudoers 配置文件中别名规则

## 配置文件别名规则定义格式:

Alias_Type NAME = item1, item2, …
或 Alias_Type NAME = item1, item2, item3 : NAME = item4, item5

别名类型(Alias_Type):别名类型包括如下四种

Host_Alias 定义主机别名;
User_Alias 用户别名,别名成员可以是用户,用户组(前面要加%号)
Runas_Alias 用来定义runas别名,这个别名指定的是“目的用户”,即sudo 允许切换至的用户;(一般都是切换到root用户,所以此类型已经不怎么用)
Cmnd_Alias 定义命令别名;
NAME 就是别名,NMAE的命名是包含大写字母、下划线以及数字,但必须以一个大写字母开头,比如SYNADM、SYN_ADM或SYNAD0是合法的,sYNAMDA或1SYNAD是不合法的;

注意事项一个别名下有多个成员,成员与成员之间,通过半角,号分隔;成员在必须是有效并事实存在的。(可以通过w查看用户的主机名(或ip地址),如果您只是本地机操作,只通过hostname 命令就能查看;用户名当然是在系统中存在 的,在/etc/paswd中必须存在;)
对于定义命令别名,成员也必须在系统中事实存在的文件名(需要绝对路径);
成员受别名类型 Host_Alias、User_Alias、Runas_Alias、Cmnd_Alias 制约,定义什么类型的别名,就要有什么类型的成员相配

我们用Host_Alias定义主机别名时,成员必须是与主机相关联,
比如是主机名(包括远程登录的主机名)、ip地址(单个或整段)、掩码等; 当用户登录时,可以通过w命令来查看登录用户主机信息;用User_Alias和 Runas_Alias定义时,必须要用系统用户做为成员;

用 Cmnd_Alias 定义执行命令的别名时,必须是系统存在的文件,文件名可以用通配符表示,配置Cmnd_Alias时命令需要绝对路径;

其中 Runas_Alias 和User_Alias 有点相似,但与User_Alias 不是同一个概念,Runas_Alias 定义的是某个系统用户可以sudo 切换身份到Runas_Alias下的成员;

别名规则是每行算一个规则,如果一个别名规则一行容不下时,可以通过\来续**行;同一类型别名的定义,一次也可以定义几个别名,他们中间用:号分隔
虽然sudo的配置文件是/etc/sudoers,但是这是总文件,不建议在这里配置sudo授权。可以在/etc/sudoers.d/目录下创建一个任意名的文本文件,然后在该文件内写入sudo授权配置信息,系统会自动检索这个目录下的文件并把它当作sudo授权的配置文件

**①Host_Alias

1.Host_Alias HT01=localhost,st05,st04,10,0,0,4,255.255.255.0,192.168.1.0/24
注:定义主机别名HT01,通过=号列出成员

我们通过Host_Alias 定义主机别名时,项目可以是主机名、可以是单个ip(整段ip地址也可以),也可以是网络掩码;如果是主机名,必须是多台机器的网络中,而且这些机器得能通过主机名相互通信访问才有效。
在定义授权规则时通过ALL来匹配所有可能出现的主机情况。
192.168.1.0/24(24是网断 说明有24位子网掩码 0 1 255 不可用 空了一个主机位有2
8 去除网关 主机 网波 2
8-3=254)
2.user_Alias用户 的分组
用户别名,别名成员可以是用户,用户组(前面要加%号)
User_Alias ADMIN=ztg,ztguang
定义用户别名ADMIN,有两个成员ztg和ztguang,这两个成员要在系统中确实存在
3.Runas_Alias
用来定义runas别名,这个别名是指sudo允许切换到的用户;
Runas_Alias RUN_AS = root
定义runas别名RUN_AS,有一个成员root。
4.Cmnd_Alias
#Cmnd_Alias MINGLING=/usr/sbin/ip
什么时候需要使用以上别名:(多个系统用户,需要分类,分层次管理用户的时候。)

授权规则

方法一: root ALL=(ALL) ALL
授权用户 授权主机 命令
(切换路径
用户,用户组。
是否需要验证)
方法二:
%users localhost=/sbin/shutdown -h now
授权用户 授权主机=命令

例子
1.使user1有权限挂载 、/dev/sr0 到/media下
2.使user1user2有权限实行ip.使用别名实现,且不需要密码
3.使user2有权限使用、/user/sbin下所有命令 除了/user/sbin/userdel
4.使user2有权限查看、var/log/message后的所有文件
给普通用户提权
也可用以下方法:
#user rule1
#%users localhost=/sbin/shutdown -h now
#use1 ALL=(ALL) /usr/bin/mount /dev/sr0 /media
#user rule2
#User_Alias USER=use1,use2
#Cmnd_Alias COMD=/usr/sbin/ip
#USER ALL=(ALL) NOPASSWD: COMD
#user rule3
#use2 ALL= /usr/sbin/,!/usr/sbin/userdel
#user rule4
use2 ALL= /usr/bin/cat /var/log/message*,!/bin/cat /var/log/message* *