linux用户管理
1. /etc/skel目录
/etc/skel目录是用来存放新用户环境变量文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下;默认情况下,/etc/skel目录下的所有文件都是隐藏文件(以 . 开头的文件);通过修改、添加、删除/etc/skel目录下的文件,我们可为新创建的用户提供统一的、标准的、初始化用户环境。
/etc/skel的企业场景作用
1、可以把通知的内容放到skel,让登录的人去看
2、统一初始化新用户的环境变量
3、出现-bash-4.1$问题原因及解决方法
-bash-4.1$ whoami
-bash-4.1$ cp /etc/skel/.bash*.
-bash-4.1$ logout
2. /etc/default/useradd文件
/etc/default/useradd文件是在使用useradd添加用户时的一个需要调用的一个默认的配置文件,可以使用“useradd -D参数”,这样的命令格式来修改文件里面的内容
3.useradd 添加用户 语法:useradd 用户名,例子:useradd redhat
重要:
-s,指定登录shell(-s /sbin/nologin)
-u,指定uid;-c,注释;-d(指定家目录);-G,指定属于多个组;-m创建家目录
-g,指定属于的主组;-e,指定过期时间;-M,不创建家目录
4.groupadd 添加组 -g,组id;groupdel 删除组
5.passwd 为用户设置或修改密码。例子:passwd redhat 为redhat设置修改密码,直接passwd是当前用户修改密码。非交互式更改密码:--stdin; echo "123456" | passwd --stdin redhat
6.企业场景:用户及密码管理
1、密码要复杂 8 位以上字母数字特殊字符
2、大的企业用户和密码统一管理(相当于活动目录,openldap)
3、动态密码:动态口令,第三方提供自己开发也很简单
7.chage:修改用户密码有效期限
-l(list):显示帐户年龄信息
-E:将帐户过期时间设为“过期日期”,日期写法:MM/DD/YY
小结:
/etc/skel
/etc/login.defs
/etc/default/useradd
命令:
useradd(/etc/passwd(熟悉),/etc/shadow,/etc/group,/etc/gshadow)
passwd(/etc/passwd)
groupadd(/etc/group)
chage(/etc/passwd)
8.删除用户相关命令userdel
-r:删除家目录
企业场景处理方法:
一般不能确认用户相关目录有没有重要数据就不能用 -r。
删除经验:
1、vi /etc/passwd 注释掉用户,观察1个月,出问题还原。操作前备份
2、把登录 shell 改成 /sbin/nologin
3、openldap(类似活动目录)账号统一管理的,库里干掉用户。所有服务器全部都没了
9.last,lastb - show listing of last logged in users /var/log/wtmp
显示用户登录的历史
lastlog reports the most recent login of all users or of a givenuser /var/log/lastlog
所有计算机用户最近的登录情况
10.su,切换用户身份;-:加载环境变量;-c:以指定用户身份执行任务
企业应用场景:以指定用户身份开机自动启动服务
[root@redhat~]# tail -5 /etc/rc.local(分用户方案启动服务命令)
su - test -c ' /bin/sh /home/test/bin/deploy.sh '
利用sudo控制用户对系统命令的使用权限:
为了安全及管理的方便,可将需要root权限的普通用户加入sudo管理,这样用户就可以通过自己的普通帐户登录实现利用root的权限来管理系统了,当然也就不需要有root账号及密码了。
执行如下visudo命令,即可打开sudo的配置文件进行编辑。
[root@redhat~]# visudo #相当于直接编辑 /etc/sudoers,但用命令方式更安全,推荐。
11.sudo,可以让普通用户可以拥有root权限去执行命令。sudo的配置文件/etc/sudoers。
visudo,通过visudo编辑/etc/sudoers,可以检查语法
格式如下:
visudo 或者 vi /etc/sudoers,在98行下面加入,也可以在其它位置加入
root ALL=(ALL) ALL <==此行是98行
redhat ALL=(ALL) /usr/sbin/useradd , /usr/sbin/userdel
上述内容不同列对应的说明见如下表
用户或组 机器=(授权角色) 可以执行的命令
user MACHINE= COMMANDS
redhat ALL=(ALL) /usr/sbin/useradd , /usr/sbin/userdel
提示:
如果redhat用户被授予上述权限,那么它可在所有的机器上以所有的角色运行useradd、userdel命令。
如果是针对用户组,则对应的授权命令如下:
%用户组 机器=(授权使用哪个角色的权限) /usr/sbin/useradd
通过sudo进行授权管理系统的目的:既能让运维人员干活,又不能威胁系统安全,其实就是用户权限最小化原则,还可以审计用户使用sudo的提权操作命令。
sudo [参数选型] 命令
-l:列出用户在主机上可用的和被禁止的命令;当配置好sudo授权规则后,可用这个参数来查看授权情况
-v:验证用户的时间戳;当用户运行sudo,输入用户的密码后,在短时间内可以不用输入口令直接进行sudo操作;用-v可以跟踪最新的时间戳
-u:指定以某个用户身份执行特定的命令操作
-k:同-K,删除时间戳,下一个sudo命令要求提供密码。前提是该用户授权中不能有NOPASSWD:参数。时间戳默认5分钟也会失效。
直接修改sudoers配置文件方法有以下需要注意的几点:
1.echo命令是追加 ">>",不是重定向 ">" ,除了echo外,可以用cat,sed等命令实现类似的功能
2.修改操作完成一定要执行 visudo -c 进行语法检查,这弥补了直接修改没有语法检查的不足
3.确保/etc/sudoers权限是正确的(-r--r-----),权限不对会导致sudo功能异常(Centos6权限不对也可以登录,但是/etc/sudoers是440是最安全的)
4.及时对授权的操作进行测试,验证是否正确(最好不要退出当前授权窗口,以便发现问题及时恢复)
5.确保知道正确的root用户密码,以便在sudo出现问题时可以通过普通用户等执行su -命令切换到root进行恢复
配置sudo命令用户日志审计
说明:所谓sudo命令日志审计,并不记录普通用户的普通操作。而是记录,那些执行sudo命令的用户的操作。
生产环境企业日志审计解决方案:
所谓日志审计,就是记录所有系统及相关用户行为的信息,并且可以自动分析、处理、展示(包括文本或者录像)
法1)通过环境变量命令及rsyslog服务进行全部日志审计(信息太大,不推荐)
法2)sudo配合rsyslog服务,进行日志审计(审计信息较少,效果不错)
法3)在bash解释器程序里嵌入一个监视器,让所有被审计的系统用户使用修改过的增加了监视器的特殊bash程序作为解释程序
法4)齐治的堡垒机:商业产品
法5)python开发的开源产品
开源跳板机(堡垒机)Jumpserver部署
http://blog.51cto.com/zt/658
CrazyEye
http://3060674.blog.51cto.com/3050674/1700814
配置/etc/sudoers
增加配置“Defaults logfile=/var/log/sudo.log”到/etc/sudoers中,注意:不包含引号
一行搞定sudo日志审计
[root@redhat~]# echo "Defaults logfile=/var/log/sudo.log" >> /etc/sudoers
[root@redhat~]# tail -l /etc/sudoers
Defaults logfile=/var/log/sudo.log
[root@redhat~]# visudo -c #检查sudoers文件语法
/etc/sudoers file parsed OK