禁止UID为0的用户存在多个
通过如下命令查看/etc/passwd文件中UID为0的账号:
awk -F: '($3 == 0) { print $1 }' /etc/passwd
echo "result="`awk -F: '($3 == 0) { print $1 }' /etc/passwd | grep -v "^[[:space:]]*#" |grep -v root|wc -l`
如果命令的输出存在非root账号,则使用如下命令删除该账户(切记不要删除root用户)。
userdel username
删除无关帐号
检测方法
egrep "^lp:|^sync:|^halt:|^news:|^uucp:|^operator:|^games:|^gopher:|^smmsp:|^nfsnobody:|^nobody:" /etc/shadow|awk -F: '($2!~/^*/) && ($2!~/^!!/) {print $1":"}'
egrep "^lp:|^sync:|^halt:|^news:|^uucp:|^operator:|^games:|^gopher:|^smmsp:|^nfsnobody:|^nobody:" /etc/passwd|awk -F: '($7!~/bin/false/) {print $1":"$7}'
修改用户shell域为/bin/false
usermod -s /bin/false username
禁止存在空密码的帐户
检测方法
awk -F: '( $2 == "" ) { print $1 }' /etc/shadow
echo "result="`awk -F: '( $2 == "" ) { print $1 }' /etc/shadow |wc -l`
result=0
设置密码
passwd username
避免帐号共享
使用如下命令查看文件/etc/login.defs,确认文件中变量UID_MIN和UID_MAX的值:
grep -v ^# /etc/login.defs |grep "^UID_MIN"|awk '($1="UID_MIN"){print $2}'
grep -v ^# /etc/login.defs |grep "^UID_MAX"|awk '($1="UID_MAX"){print $2}'
使用以下命令查看系统中是否存在用户id>=UID_MIN且<=UID_MAX的用户:
up_uidmin=`(grep -v ^# /etc/login.defs |grep "^UID_MIN"|awk '($1="UID_MIN"){print $2}')`
up_uidmax=`(grep -v ^# /etc/login.defs |grep "^UID_MAX"|awk '($1="UID_MAX"){print $2}')`
egrep -v "oracle|sybase|postgres" /etc/passwd|awk -F: '($3>='$up_uidmin' && $3<='$up_uidmax') {print $1":"$3}'
创建用户
useradd username #创建账号
passwd username #设置密码修改权限
设置账户组
使用如下命令查看文件/etc/login.defs,确认文件中变量GID_MIN和GID_MAX的值:
grep -v ^# /etc/login.defs |grep "^GID_MIN"|awk '($1="GID_MIN") {print $2}'
grep -v ^# /etc/login.defs |grep "^GID_MAX"|awk '($1="GID_MAX") {print $2}'
使用以下命令查看系统中是否存在用户id>=GID_MIN且<=GID_MAX的用户:
UP_GIDMIN=`(grep -v ^# /etc/login.defs |grep "^GID_MIN"|awk '($1="GID_MIN") {print $2}')`
UP_GIDMAX=`(grep -v ^# /etc/login.defs |grep "^GID_MAX"|awk '($1="GID_MAX") {print $2}')`
egrep -v "oracle|sybase|postgres" /etc/passwd|awk -F: '($4>='$UP_GIDMIN' && $4<='$UP_GIDMAX') {print $1":"$3":"$4}'
创建新用户
useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号,帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
adduser 注:添加用户
[root@linux-node1 ~]# useradd syaving
[root@linux-node1 ~]# id syaving
uid=1000(syaving) gid=1000(syaving) groups=1000(syaving)
创建新用户并指定uid
[root@linux-node1 ~]# useradd test -u 666 #-u 指定uid
[root@linux-node1 ~]# id test
uid=666(test) gid=1001(test) groups=1001(test)
设置密码
非交互式
[root@linux-node1 ~]# echo root:111111|chpasswd #为root用户设置密码,密码为111111
[root@linux-node1 ~]# echo syaving:111111|chpasswd #为syaving用户设置密码,密码为111111
交互式
[root@linux-node1 ~]# passwd #默认为root用户设置密码
Changing password for user root.
New password: #第一次输入密码 123456
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: #第二次输入密码 123456
passwd: all authentication tokens updated successfully.
[root@linux-node1 ~]# passwd syaving #为syaving用户设置密码
Changing password for user syaving.
New password: #第一次输入密码 123456
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: #第二次输入密码 123456
passwd: all authentication tokens updated successfully.
删除用户
userdel命令用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
[root@linux-node1 ~]# userdel test #删除test用户,但不删除其家目录及文件
[root@linux-node1 ~]# userdel -r nginx #删除用户lnginx,其家目录及文件一并删除;
创建工作组
[root@linux-node1 ~]# groupadd test #新建test工作组
[root@linux-node1 ~]# tail -1 /etc/group #查看创建的工作组
test:x:1003:
新建用户同时增加工作组
[root@linux-node1 ~]# useradd -g test syaving ##注:-g 所属组 -d 家目录 -s 所用的SHELL
[root@linux-node1 ~]# id syaving
uid=1003(syaving) gid=1003(test) groups=1003(test)
给已有的用户增加工作组
[root@linux-node1 ~]# id ya
uid=1002(ya) gid=1001(wnagluo) groups=1001(wnagluo)
[root@linux-node1 ~]# usermod -g test ya ##gpasswd -a group user (usermod -a -G 用户组 用户名)
[root@linux-node1 ~]# id ya
uid=1002(ya) gid=1003(test) groups=1003(test)
[root@linux-node1 ~]# groups ya ##查看用户所属组
ya : test
把test2用户加入到song的用户组
[root@linux-node1 ~]# gpasswd -a test2 song
Adding user test2 to group song
[root@linux-node1 ~]# tail -6 /etc/group
song:x:1002:ya,test1,test2
test:x:1003:
test1:x:1004:
test2:x:1005:
test3:x:1006:
test4:x:1007:
把用户从用户组移除
[root@linux-node1 ~]# gpasswd -d test2 song
Removing user test2 from group song
[root@linux-node1 ~]# tail -6 /etc/group
song:x:1002:ya,test1
test:x:1003:
test1:x:1004:
test2:x:1005:
test3:x:1006:
test4:x:1007:
用户锁定解锁
passwd -l username锁定用户
passwd -u username解锁用户
useradd添加一个系统用户
useradd -M -s /sbin/nologin -g backup -u 88 backup
设置用户的过期时间
usermod -e 2011-08-25 username
linux 以某个用户的权限执行
su -c “command” username
查看指定用户进程
ps -fu 用户名
查看指定用户的所有pid
ps -auxww|awk '{if ($1="root") print $2}'
单用户模式下直接切换至多用户模式
init 3
只允许特定的组用户su切换到root
linux系统root具有至高无上的权限,工作生产环境或者VPS一般为了安全起见,禁止root登录,禁止root用户权限,使用普通用户登录,有特殊需求可以su或sudo切换到root权限进行操作
下面介绍一个方法只允许特定的组用户su切换到root:
1、新建普通用户
[root@linux-node1 ~]# useradd syaving
2、修改密码123456
[root@linux-node1 ~]# passwd syaving
3、将帐号加入wheel组
[root@linux-node1 ~]# usermod -G wheel syaving
4、设置只允许这个组的帐号,使用su命令切换到root
vi /etc/pam.d/su
#找到#auth required pam_wheel.so use_uid
#去掉行首的注释符 # 保存退出;
#接着
vi /etc/login.defs
#在最末添加SU_WHEEL_ONLY yes 保存退出即可。
#或者执行
echo "SU_WHEEL_ONLY yes">>/etc/login.defs
现在,再建立新的普通帐号,是无法使用su命令切换到root组了。
实验验证:
[root@localhost ~]# su - syaving
[syaving@localhost ~]$ whoami
syaving
[syaving@localhost ~]$ su -
Password:
[root@localhost ~]# whoami
root
[root@localhost ~]# su - lisi
[lisi@localhost ~]$ whoami
lisi
[lisi@localhost ~]$ su -
Password:
su: incorrect password
syaving属于wheel组,wheel组的用户只允许su切换到root;lisi不属于wheel组,正确输入root的密码也提示不正确的密码,无法切换到root;