目录
系统账号清理
chattr + i [文件名]:锁定指定文件
- chattr +i /etc/passwd /etc/shadow #锁定这两个文件/etc/passwd /etc/shadow
- lsattr /etc/passwd #查看指定文件/etc/passwd的状态,是否被锁定
- ----i----------- /etc/passwd #----i-----------表示该文件被锁定
- ll /etc/passwd
- -rw-r--r--. 1 root root 2298 4月 12 14:38 /etc/passwd #查看可得所属主用户root具有编辑权限
- echo 1111 >> /etc/passwd #尝试编辑/etc/passwd文件
- -bash: /etc/passwd: 权限不够 #/etc/passwd /etc/shadow这两个文件被锁定,将无法再修改编辑,例如修改用户密码、删除和添加用户都不允许,包括超级用户root
-
- useradd lisi #/etc/passwd /etc/shadow这两个文件被锁定,无法增加新用户
- useradd:无法打开 /etc/passwd
- echo 123123 | passwd --stdin clr #/etc/passwd /etc/shadow这两个文件被锁定,无法修改用户密码
- 更改用户 clr 的密码 。
- passwd: 鉴定令牌操作错误
- userdel clr #/etc/passwd /etc/shadow 这两个文件被锁定,无法删除已有用户
- userdel:无法打开 /etc/passwd
chattr - i [文件名]:解锁指定文件;
- chattr -i /etc/passwd /etc/shadow #解锁指定文件
- lsattr /etc/passwd #查看指定文件/etc/passwd的状态,是否被锁定
- ---------------- /etc/passwd #----------------表示该文件未被锁定
- useradd lisi #添加用户
- userdel lisi #删除用户
- echo 123123 | passwd --stdin clr #修改用户密码
- 更改用户 clr 的密码 。
- passwd:所有的身份验证令牌已经成功更新。 #解锁这两个文件/etc/passwd /etc/shadow之后,可以删除、添加和修改用户密码
-
- which chattr #查看命令chattr在系统中的位置
- /usr/bin/chattr
md5sum [文件名]:通过校验和,判断一个指定文件的数据内容是否被修改;
注意:一个文件无法被写入或修改的可能原因:用户权限不够,不具有对该文件的修改权限;该文件被锁定,无法修改编辑lsattr [文件名]:查看该文件是否被锁定。
/etc/login.defs文件:查看用户账号的基本属性;
- useradd dingzhen #修改/etc/login.defs文件,将密码有效期更改为30天,添加新用户
- vim /etc/shadow #查看新用户的密码有效期
- dingzhen:!!:19459:0:30:7::: #可以看到新创建的用户丁真的密码有效期为30天
chage -M [密码有效期天数] [系统中已存在的用户名]:修改系统中已经存在用户的密码有效期
chage -d 0 [用户名]:强制指定用户在下次登录时修改密码;
export HISTSIZE:export全局变量,实现在所有的shell环境中都有效,保留指定要求的历史命令条数;
- vim /etc/profile #修改/etc/profile 文件,设置export HISTSIZE参数,更改保留历史命令条数
-
- export HISTSIZE=20 #export实现全局变量在所有的shell环境中都有效,修改HISTSIZE的参数为20,表示历史命令只保留20条
-
- source /etc/profile #source命令用于在当前shell环境中重新加载/etc/profile文件
-
- . /etc/profile #与同上效果一样
history -c:临时清空历史命令,系统重启之后历史命令会依然保留;
- history -c #临时清空历史命令
- reboot #重启系统
- ls -A
- .bash_history #历史命令保留在该文件中 、
- vim .bash_history #所有历史命令都保存在.bash_history文件中
echo ’ ’ > /.bash_history:将空数据内容重定向写入到/.bash_history文件中,实现开机登录,自动清空历史命令;
- vim /etc/profile #修改/etc/profile文件,设置export HISTSIZE参数,更改保留历史命令条数,或者直接将~/.bash_history文件清空
-
- export HISTSIZE=20
- echo '' > ~/.bash_history #实现将~/.bash_history文件清空
-
- reboot #重启系统
-
- vim .bash_history #.bash_history文件中历史命令已清除
- history
- 1 vim .bash_history
- 2 history
修改/etc/bashrc文件:实现开机登录,自动清空历史命令;
账号安全
禁止用户登录系统
- usermod -s /sbin/nologin 用户名 #禁止用户登录系统
-
-
锁定用户
- usermod -L 用户名
- passwd -l 用户名
查看指定用户是否被锁定
passwd -s 用户名 #查看指定用户状态,是否被锁定
删除用户
userdel -r 用户名 #删除指定用户连同宿主目录一并删除
锁定指定文件:userdel -r 用户名 #删除指定用户连同宿主目录一起删除
解锁指定文件:chattr -i /etc/passwd,shadow
查看指定文件,是否被锁定:lsattr 文件名
密码安全
设置密码有效期 chage -M 天数 用户名 #针对已存在的用户,99999代表密码永不过时
/etc/login.defs -->PASS_MAX_DAYS #针对新建用户
登录立即修改密码:chage -d 0 用户名
历史命令
闲置历史命令数:/etc/profile --> export HISTSIZE 历史命令条数----> source /etc/profile
清空历史命令:history -c--->echo ' ' ~/.bash_history
su - 用户名:切换并加载目标用户的家目录和shell环境;
gpasswd -a [用户名] wheel:将指定用户加入到wheel组中;
- vim /etc/group #查看系统中已有的组名以及组账号
- wheel:x:10: #wheel组
-
- gpasswd -a zhangsan wheel #将zhangsan用户加入到wheel组中
- id zhangsan
- uid=1005(xiaozhang) gid=1005(zhangsan) 组=1005(zhangsan),10(wheel)
- vim /etc/pam.d/su
- 2 auth sufficient pam_rootok.so #root用户可以免密切换到其他用户
- 6 auth required pam_wheel.so use_uid #只有加入到wheel组的用户才可以认证登录,切换到其他用户
-
- [root@clr ~]# su zhangsan #root用户可以免密切换到其他任意用户
- [zhangsan@clr /root]$ su root #没有加入到wheel组的普通用户没有切换到root用户的权限
- 密码:
- su: 拒绝权限
- [zhangsan@clr /root]$ su lisi #没有加入到wheel组的普通用户没有切换到其他用户的权限
- 密码:
- su: 拒绝权限
-
- [root@clr ~]# su zhangsan
- [xiaozhang@clr /root]$ su root #加入到wheel组的zhangsan用户可以切换到普通用户root
- 密码:
- [zhangsan@clr /root]$ exit
- exit
- [xiaozhang@clr /root]$ su root #加入到wheel组的xiaozhang用户可以切换到超级用户root
- 密码:
修改su的PAM认证配置文件 vim /etc/pam.d/su -> 开启 auth required pam_wheel.so use_uid 的配置
总结
(1)将可信任能够使用su命令切换的用户加入到wheel组中;
(2)在/etc/pam.d/su文件中,取消第二行和第六行的注释,即可实现root用户可以免密切换到其他普通用户,只有加入到wheel组中 的可信任用户能够使用su命令,并输入正确的密码切换到其他用户中。
PAM认证模块
/etc/pam.d:PAM配置文件;
- [root@localhost ~]# ls /etc/pam.d #查看相关服务的PAM配置文件
- atd gdm-pin postlogin-ac su
- chfn gdm-smartcard ppp sudo
- chsh ksu remote sudo-i
- config-util liveinst runuser su-l
- crond login runuser-l system-auth
- cups other setup system-auth-ac
PAM认证模块文件
用户名 ALL=(root) /usr/sbin/ifconfig #赋予普通用户以root身份添加网卡IP地址的权限;
- [root@localhost ~]# su - zhangsan #切换到普通用户zhangsan
- [zhangsan@localhost ~]$ ifconfig ens33:0 192.168.80.120/24 #普通用户zhangsan给网卡添加IP地址,由于添加网卡属于超级管理员的操作,因此普通用户无法操作
- SIOCSIFADDR: 不允许的操作
- SIOCSIFFLAGS: 不允许的操作
- SIOCSIFNETMASK: 不允许的操作
- [zhangsan@localhost ~]$ sudo ifconfig ens33:0 192.168.80.120/24 #添加sudo命令后,仍然无法添加网卡地址
vim /etc/sudoers #修改/etc/sudoers配置文件
zhangsan ALL=(root) /usr/sbin/ifconfig #赋予普通用户zhangsan以root身份添加网卡IP地址的权限
sudo ifconfig ens32:1 192.16.80.100/24
此时zhangsan用户就可以修改网卡
GZY ALL = NOPASSWD: ADMIN:赋予别名GZY内的所有用户在所有主机上以root身份执行ADMIN程序内的所有命令权限,并且不需要使用密码
- [root@localhost ~]# vim /etc/sudoers
- ## Allows people in group wheel to run all commands
- %wheel ALL=(ALL) ALL #赋予wheel组成员在所有主机上对所有命令的权限,效果类似于超级用户root
- ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
-
- #includedir /etc/sudoers.d
- zhangsan ALL=(root) /usr/sbin/ifconfig #赋予普通用户zhangsan,以root身份给网卡添加IP地址的权限
- lisi ALL=!/bin/rm #禁止lisi用户删除文件的权限
- User_Alias GZY=zhangsan,lisi #给zhangsan,lisi这两个用户设置别名GZY
- Cmnd_Alias ADMIN=/sbin/*,!/usr/sbin/reboot,!/usr/sbin/poweroff,!/usr/sbin/init,!/usr/sbin/shutdown
- #给指定程序命令设置别名ADMIN,(赋予超级管理员用户的所有权限,重启系统、立即关机命令除外)
- GZY ALL = NOPASSWD: ADMIN #赋予别名GZY内的所有用户在所有主机上以root身份执行ADMIN程序内的所有命令权限,并且不需要使用密码
-
- [root@localhost ~]# su - zhangsan
- 上一次登录:三 4月 12 23:44:03 CST 2023pts/0 上
- [zhangsan@localhost ~]$ which route
- /usr/sbin/route
- [zhangsan@localhost ~]$ sudo route add -net 10.0.0.0/24 gw 192.168.80.20 dev ens33 #此时普通用户zhangsan可以使用超级用户root添加路由的权限
- [zhangsan@localhost ~]$ route -n
- Kernel IP routing table
- Destination Gateway Genmask Flags Metric Ref Use Iface
- 0.0.0.0 192.168.80.2 0.0.0.0 UG 100 0 0 ens35
- 0.0.0.0 192.168.80.2 0.0.0.0 UG 101 0 0 ens33
- 10.0.0.0 192.168.80.20 255.255.255.0 UG 0 0 0 ens33 #新添加的路由信息
-
- [zhangsan@localhost ~]$ sudo reboot #禁止zhangsan用户的重启操作
- 对不起,用户 zhangsan 无权以 root 的身份在 localhost 上执行 /sbin/reboot。
- [zhangsan@localhost ~]$ exit
- 登出
- [root@localhost ~]# su - lisi
- 上一次登录:三 4月 12 23:48:56 CST 2023pts/0 上
- [lisi@localhost ~]$ sudo ifconfig ens33:1 192.168.80.34 #此时普通用户lisi可以使用超级用户root添加网卡IP地址的权限
- [lisi@localhost ~]$ ifconfig
- ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- inet 192.168.80.34 netmask 255.255.255.0 broadcast 192.168.80.255
- ether 00:0c:29:e6:e0:8a txqueuelen 1000 (Ethernet)
-
- [lisi@localhost ~]$ sudo init 6 #禁止普通用户lisi重启系统的权限
- 对不起,用户 lisi 无权以 root 的身份在 localhost 上执行 /sbin/init 6。
sudo -l:查看当前登录用户获得那些sudo授权
- [lisi@localhost ~]$ sudo -l #查看当前用户lisi获得那些sudo授权
- 匹配 %2$s 上 %1$s 的默认条目:
- !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME
- HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
- LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
- env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
-
- 用户 lisi 可以在 localhost 上运行以下命令:
- (root) !/bin/rm
- (root) NOPASSWD: /sbin/*, !/usr/sbin/reboot, !/usr/sbin/poweroff, !/usr/sbin/init, !/usr/sbin/shutdown