• 第二十章 用户管理(一)


    一、用户基本概述

    1.什么是用户?

    定义:能够正常登录系统的就是用户

    区别:

    Linux系统支持多用户同时登陆 互相管理不冲突

    Windows不支持多用户同时登陆


    2.为什么要有用户?

    1)系统的程序进程需要指定的用户进行运行

    2)root管理系统权限太大,需要普通用户进行管理


    3.id #查看用户的基本信息

    [root@jindada ~]# id #默认查看当前登录的用户的信息
    uid=0(root) gid=0(root) groups=0(root)

    [root@jindada ~]# id nginx
    uid=998(nginx) gid=996(nginx) groups=996(nginx)

     

    二、用户跟系统的约定

    在CentOS-7中,UID为:

    0 --- 超级管理员用户 权限最大

    1-200 --- 系统用户,系统默认创建好的 不能登录系统的用户 用来运行系统中的程序和进程

    201-1000 --- 系统用户 用户自定义的 运行一些软件程序

    1000+ --- 普通用户 可以正常登录系统 但是权限很低


    在CentOS-6中,UID为:

    1-500 系统用户

    500+ 普通用户

     

     三、用户相关的文件

    #用户的基本信息存放在这个文件里面

    [root@jindada ~]# ll /etc/passwd
    -rw-r--r-- 1 root root 860 Jul 20 19:50 /etc/passwd

    #以冒号为分隔符,分为7列

     

     

    #用户的密码信息及账号信息

    [root@jindada ~]# ll /etc/shadow
    ---------- 1 root root 584 Jul 20 19:50 /etc/shadow

    #以冒号为分隔符,分为9列

     

     

     

     

    四、用户相关命令


    1. useradd == adduser #创建用户

    选项:

    -u #指定uid

    -g #指定组 gid 前提需存在

    -G #指定附加组 多个用逗号分割

    -d #指定家目录

    -c #注释信息

    -s #指定命令解释器

    -r #创建系统用户,默认不创建家目录 命令解释器是允许登录的

    -M #不创建家目录


    [root@jindada ~]# useradd user01
    [root@jindada ~]# tail -1 /etc/passwd
    user01:x:1000:1000::/home/user01:/bin/bash
    [root@jindada ~]# tail -1 /etc/shadow
    user01:!!:18464:0:99999:7:::


    [root@jindada ~]# useradd -u666 -d /opt/user02 -c "test" user02
    [root@jindada ~]# tail -1 /etc/passwd
    user02:x:666:1001:test:/opt/user02:/bin/bash
    [root@jindada ~]# ll /opt/
    drwx------ 2 user02 user02 62 Jul 21 16:47 user02

    [root@jindada ~]# useradd -r user03
    [root@jindada ~]# tail -1 /etc/passwd
    user03:x:665:665::/home/user03:/bin/bash
    [root@jindada ~]# ll /home/
    total 0
    drwx------ 2 user01 user01 62 Jul 21 16:40 user01

    [root@jindada ~]# useradd -r -s /sbin/nologin user04
    [root@jindada ~]# tail -1 /etc/passwd
    user04:x:664:664::/home/user04:/sbin/nologin
    [root@jindada ~]# ll /home/
    total 0
    drwx------ 2 user01 user01 62 Jul 21 16:40 user01

    [root@jindada ~]# useradd -M -s /sbin/nologin user05
    [root@jindada ~]# tail -1 /etc/passwd
    user05:x:1001:1002::/home/user05:/sbin/nologin
    [root@jindada ~]# ll /home/
    total 0
    drwx------ 2 user01 user01 62 Jul 21 16:40 user01


    2. usermod #修改用户信息的


    选项:

    -u #修改用户的uid

    -g #修改用户的gid

    -a #追加 添加附加组 需跟-G配合使用

    -G #修改附加组,默认会覆盖原来的所有附加组 -aG 追加

    -m #迁移家目录

    -d #修改家目录

    -c #修改注释信息

    -s #修改命令解释器

    -l #修改用户的名称

    -L #锁定用户

    -U #解锁用户


    [root@jindada ~]# usermod -u6666 -g 1001 -aG 665,664 -md /opt/user01 -c "123" -l user123 user01
    [root@jindada ~]# grep 'user01' /etc/passwd
    user123:x:6666:1001:123:/opt/user01:/bin/bash
    [root@jindada ~]# id user123
    uid=6666(user123) gid=1001(user02) groups=1001(user02),665(user03),664(user04)


    [root@jindada ~]# usermod -s /bin/bash user05
    [root@jindada ~]# grep 'user05' /etc/passwd
    user05:x:1001:1002::/home/user05:/bin/bash


    [root@jindada ~]# usermod -L user02
    [root@jindada ~]# usermod -U user02

    #修改密码

    [root@jindada ~]# passwd user02
    Changing password for user user02.
    New password:
    BAD PASSWORD: The password is a palindrome
    Retype new password:
    passwd: all authentication tokens updated successfully.

    #远程登录

    [C:\~]$ ssh user02@10.0.0.100


    Connecting to 10.0.0.100:22...
    Connection established.
    To escape to local shell, press 'Ctrl+Alt+]'.

    Last failed login: Tue Jul 21 17:22:10 CST 2020 from 10.0.0.1 on ssh:notty
    There were 4 failed login attempts since the last successful login.
    Last login: Tue Jul 21 17:20:45 2020 from 10.0.0.1
    [user02@jindada ~]$


    3. userdel #删除用户 默认不删除家目录及邮件信息

    选项:

    -r #删除用户的时候,删除家目录及邮件相关信息


    [root@jindada ~]# ll /opt/
    total 1016
    drwx------ 2 user123 user02 62 Jul 21 16:40 user01
    drwx------ 2 user02 user02 62 Jul 21 16:47 user02
    [root@jindada ~]# userdel user123
    [root@jindada ~]# ll /opt/
    total 1016
    drwx------ 2 6666 user02 62 Jul 21 16:40 user01
    drwx------ 2 user02 user02 62 Jul 21 16:47 user02

     

    [root@jindada ~]# useradd user06
    [root@jindada ~]# ll /home/
    total 0
    drwx------ 2 user06 user06 62 Jul 21 17:45 user06
    [root@jindada ~]# ll /var/mail/
    total 0
    -rw-rw---- 1 user02 mail 0 Jul 21 16:47 user02
    -rw-rw---- 1 user05 mail 0 Jul 21 16:55 user05
    -rw-rw---- 1 user06 mail 0 Jul 21 17:45 user06
    -rw-rw---- 1 6666 mail 0 Jul 21 16:40 user123
    [root@jindada ~]# userdel -r user06
    [root@jindada ~]# ll /home/
    total 0
    [root@jindada ~]# ll /var/mail/
    total 0
    -rw-rw---- 1 user02 mail 0 Jul 21 16:47 user02
    -rw-rw---- 1 user05 mail 0 Jul 21 16:55 user05
    -rw-rw---- 1 6666 mail 0 Jul 21 16:40 user123

    [root@jindada ~]# userdel user02
    userdel: user user02 is currently used by process 8333 #用户正在使用
    [root@jindada ~]# ps aux |grep 8333
    user02 8333 0.0 0.1 161364 2348 ? S 17:42 0:00 sshd: user02@pts/1
    root 8389 0.0 0.0 112708 976 pts/0 R+ 17:46 0:00 grep --color=auto 8333
    [root@jindada ~]# userdel user02


    4. 查看用户的命令

    #查看用忽的id及组的相关信息

    [root@jindada ~]# id root
    uid=0(root) gid=0(root) groups=0(root)


    [root@jindada ~]# yum install -y finger

    [root@jindada ~]# finger root
    Login: root Name: root
    Directory: /root Shell: /bin/bash
    On since Tue Jul 21 17:49 (CST) on pts/0 from 10.0.0.1
    7 seconds idle
    No mail.
    No Plan.


    [root@jindada ~]# who
    root pts/0 2020-07-21 17:49 (10.0.0.1)

    [root@jindada ~]# whoami
    root

    [root@jindada ~]# w
    09:59:15 up 22:14, 1 user, load average: 0.00, 0.01, 0.05
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    root pts/0 10.0.0.1 17:49 ? 0.02s 0.00s w


    [root@jindada ~]# uptime
    09:59:49 up 22:14, 1 user, load average: 0.00, 0.01, 0.05

     

    五、用户创建的相关文件


    创建用户的时候,没有指定相关信息,系统创建用户是根据两个文件进行创建的

    [root@jindada ~]# ll /etc/login.defs
    -rw-r--r--. 1 root root 2028 Oct 30 2018 /etc/login.defs
    [root@jindada ~]# ll /etc/default/useradd
    -rw-r--r--. 1 root root 119 Oct 30 2018 /etc/default/useradd

     


    [root@jindada ~]# grep -Ev '^$|^#' /etc/login.defs
    MAIL_DIR /var/spool/mail     #接收邮件的目录
    PASS_MAX_DAYS 99999     #密码最大的有效期天数
    PASS_MIN_DAYS 0            #密码最小的有效期
    PASS_MIN_LEN 5            #密码最小的长度 不起作用 root用户限制不了 普通用户最少8位
    PASS_WARN_AGE 7        #密码到期前的告警时间
    UID_MIN 1000                 #普通用户最小的UID
    UID_MAX 60000             #普通用户最大的UID
    SYS_UID_MIN 201         #系统用户的最小UID
    SYS_UID_MAX 999        #系统用户的最大UID
    GID_MIN 1000                #普通用户的组的最小GID
    GID_MAX 60000               #普通用户的组的最大GID
    SYS_GID_MIN 201         #系统用户的组的最小GID
    SYS_GID_MAX 999        #系统用户的组的最大GID
    CREATE_HOME yes      #创建用户的时候默认创建家目录
    UMASK 077               #默认创建用户的家目录的权限 umask为077 777-077=700
    USERGROUPS_ENAB yes       #创建或删除用户的时候,没有指定组,默认创建或删除跟用户相同名称的组
    ENCRYPT_METHOD SHA512    #密码的加密规则


    [root@jindada ~]# cat /etc/default/useradd
    GROUP=100   #当创建用户没有指定组,并且USERGROUPS_ENAB为no的时候,这个选项生效
    HOME=/home    #创建用户的家目录的位置
    INACTIVE=-1    #跟shadow文件的第七列 密码到期后的宽恕时间 -1 密码永不失效 不启用
    EXPIRE=      #跟shadow文件第八列 账号密码的失效时间 时间戳 空则表示没有失效时间
    SHELL=/bin/bash   #默认的命令解释器
    SKEL=/etc/skel   #默认创建家目录的模板
    CREATE_MAIL_SPOOL=yes   #创建邮件相关信息

     

    六、用户命令行故障

    [root@jindada ~]# passwd test
    Changing password for user test.
    New password:
    BAD PASSWORD: The password is a palindrome
    Retype new password:
    passwd: all authentication tokens updated successfully.
    [root@jindada ~]# rm -f /home/test/.bash*

     

    #家目录里面的环境变量配置文件不存在

    -bash-4.2$
    -bash-4.2$

    #解决

    -bash-4.2$ pwd
    /home/test
    -bash-4.2$ cp -a /etc/skel/.bash* ./


    Permission denied #权限不足

    [root@jindada ~]# mkdir -m 700 /home/test
    [root@jindada ~]# ll -d /home/test
    drwx------ 2 root root 6 Jul 21 10:53 /home/test
    [root@jindada ~]# chown -R test.test /home/test

     

    -bash-4.2$ cd /home/test
    -bash-4.2$ pwd
    /home/test
    -bash-4.2$ cp -a /etc/skel/.bash* ./
    -bash-4.2$ logout

     

    七、用户的密码信息 

    #如何设置密码

    管理员可以给任何用户设置密码 密码的长度没有限制

    普通用户只能给自己设置密码 且是无规律的8位以上的密码

     

    [root@jindada ~]# useradd jindada01

    [root@jindada ~]# passwd #默认给当前用户设置密码
    Changing password for user root.
    New password:
    [root@jindada ~]# passwd jindada01 #给指定的用户设置密码
    Changing password for user jindada01.
    New password:
    BAD PASSWORD: The password is a palindrome
    Retype new password:
    passwd: all authentication tokens updated successfully.
    [root@jindada ~]#

     

    非交互式设置密码

    --stdin

    [root@jindada ~]# echo '2' | passwd --stdin jindada01
    Changing password for user jindada01.
    passwd: all authentication tokens updated successfully.


    #如何设置随机密码

    #如何获得随机数

    [root@jindada ~]# echo $RANDOM
    28241
    [root@jindada ~]# echo $RANDOM | md5sum
    6c8a1df9e12e9c553d0f9a397b860f4e -
    [root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10
    64091f6823
    [root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10
    df0676f775

    #密码设置成功,但是不知道密码

    [root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10 | passwd --stdin jindada01
    Changing password for user jindada01.
    passwd: all authentication tokens updated successfully.

     

    [root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee pass.txt
    b676039b3f


    [root@jindada ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee pass.txt | passwd --stdin jindada01
    Changing password for user jindada01.
    passwd: all authentication tokens updated successfully.
    [root@jindada ~]# cat pass.txt
    7d53328b61


    tee #重定向的命令 将数据重定向到指定的文件中,并输出在屏幕上面一份

    -a #追加

    #设置更复杂的密码

    [root@jindada ~]# yum install -y expect

    选项:

    -l #指定的密码位数

    -d #指定数字位数

    -c #小写字母位数

    -C #大小字母位数

    -s #特殊字符位数


    [root@jindada ~]# mkpasswd
    gC}2atTf9
    [root@jindada ~]# mkpasswd -l 24 -d 6 -c 6 -C 6 -s 6
    sv_^WF85J@DF5Ng5|3{f3/ng
    [root@jindada ~]# mkpasswd -l 24
    9px3Sesrx[ybtbvElubxxltj
    [root@jindada ~]# mkpasswd -l 24
    uimYw\Z4amzffhti0eljucgg
    [root@jindada ~]# mkpasswd -l 24 -s 24
    impossible to generate 24-character password with 2 numbers, 2 lowercase letters, 2 uppercase letters and 24 special characters.
    [root@jindada ~]# mkpasswd -l 24 -s 24 -d 0 -c 0 -C 0
    $.$}+?;-~]|)>(#_),[)!#@$

    [root@jindada ~]# mkpasswd -l 24 -s 24 -d 0 -c 0 -C 0 | tee pass.txt | passwd --stdin jindada01
    Changing password for user jindada01.
    passwd: all authentication tokens updated successfully.
    [root@jindada ~]# cat pass.txt
    :{]~"/'%[,+"^*%??%,'?}~$

     

    八、用户组的管理

    什么是用户组

    组分为两类


    基本组 #一个用户只能拥有一个基本组

    附加组 #当基本组的权限不够用户使用的,就出现了附加组 一个用户允许拥有多个附加组


    跟组相关的文件


    [root@jindada ~]# ll /etc/group
    -rw-r--r-- 1 root root 573 Jul 21 11:04 /etc/group
    [root@jindada ~]# ll /etc/gshadow
    ---------- 1 root root 449 Jul 21 11:04 /etc/gshadow
    [root@jindada ~]#

    #以冒号为分隔符 分为4列

     

     

    #用户组的组密码文件

    #以冒号为分隔符 分为四列

    [root@jindada ~]# usermod -aG user05,user03,user01 jindada01
    [root@jindada ~]# grep 'jindada01' /etc/group
    user01:x:1000:jindada01
    user03:x:665:jindada01
    user05:x:1002:jindada01
    jindada01:x:1006:
    [root@jindada ~]# grep 'jindada01' /etc/gshadow
    user01:!::jindada01
    user03:!::jindada01
    user05:!::jindada01
    jindada01:!::

     

    九、用户组的相关命令


    1. 创建用户组的命令 groupadd

    选项:

    -g #指定组的ID GID

    -r #创建系统组

    [root@jindada ~]# groupadd user_group01
    [root@jindada ~]# tail -1 /etc/group
    user_group01:x:1007:


    [root@jindada ~]# groupadd -g 666 user_group02
    [root@jindada ~]# tail -1 /etc/group
    user_group02:x:666:


    [root@jindada ~]# groupadd -r user_group03
    [root@jindada ~]# tail -1 /etc/group
    user_group03:x:664:

     

    2. 修改用户组的命令 groupmod

    选项:

    -g #修改用户组的ID GID

    -n #修改组的名称

     

    [root@jindada ~]# groupmod -g 6666 user_group01
    [root@jindada ~]# grep 'user_group01' /etc/group
    user_group01:x:6666:

    [root@jindada ~]# groupmod -n new_group user_group01
    [root@jindada ~]# grep 'new_group' /etc/group
    new_group:x:6666:

     

    3. 删除用户组的命令 groupdel


    [root@jindada ~]# groupdel new_group
    [root@jindada ~]# grep 'new_group' /etc/group

    #删除作为某个用户的附加组的用户组 删除没有影响

    [root@jindada ~]# groupdel user01

     


    [root@jindada ~]# grep '1002' /etc/group
    user05:x:1002:jindada01
    [root@jindada ~]# grep '1002' /etc/passwd
    user05:x:1001:1002::/home/user05:/bin/bash
    test:x:1002:1003::/home/test:/bin/bash
    [root@jindada ~]# id user05
    uid=1001(user05) gid=1002(user05) groups=1002(user05)


    #删除一个组作为某个用户的基本组 是不能删除的

    解决:

    给这里面的用户重新找个基本组

    把用户也一并删除掉

    [root@jindada ~]# groupdel user05
    groupdel: cannot remove the primary group of user 'user05'
    [root@jindada ~]# usermod -g 1003 user05
    [root@jindada ~]# id user05
    uid=1001(user05) gid=1003(test) groups=1003(test)
    [root@jindada ~]# groupdel user05

  • 相关阅读:
    thinkphp3.2 无法加载模块
    php 使用 wangeditor3 图片上传
    nginx 配置 server
    oracle练手(一)
    Oracle练习(一)
    java运算符优先级
    数据库(mysql和oracle)
    java实现4种内部排序
    mysql-----分库分表
    NIO总结-----Buffer
  • 原文地址:https://www.cnblogs.com/jhno1/p/13368073.html
Copyright © 2020-2023  润新知