Linux系统基础-账号管理

禁止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;

原文地址:https://www.cnblogs.com/syavingcs/p/12258467.html