• 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;

  • 相关阅读:
    java 线程的终止与线程中断
    java 线程协作 wait(等待)与 notiy(通知)
    java 线程协作 yield()
    java 线程协作 join()
    python学习 文件操作
    linux 学习 常用命令
    linux 学习 设置固定网Ip
    web 安全
    MySQL数据物理备份之tar打包备份
    MySQL数据物理备份之lvm快照
  • 原文地址:https://www.cnblogs.com/syavingcs/p/12258467.html
Copyright © 2020-2023  润新知