什么是用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
能够正常登录系统的就是用户 Linux系统支持多用户同时登陆 互相管理不冲突 Windows不支持多用户同时登陆 为什么要有用户? 1. 系统的程序进程需要指定的用户进行运行 2. root管理系统权限太大,需要普通用户进行管理 #查看用户的基本信息 [root@qls ~]# id #默认查看当前登录的用户的信息 uid=0(root) gid=0(root) groups=0(root) [root@qls ~]# id nginx uid=998(nginx) gid=996(nginx) groups=996(nginx) |
用户跟系统的约定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
CentOS-7 UID 0 --- 超级管理员用户 权限最大 1-200 --- 系统用户,系统默认创建好的 不能登录系统的用户 用来运行系统中的程序和进程 201-1000 --- 系统用户 用户自定义的 运行一些软件程序 1000+ --- 普通用户 可以正常登录系统 但是权限很低 CentOS-6 1-500 系统用户 500+ 普通用户 |
用户相关的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#用户的基本信息存放在这个文件里面 [root@qls ~]# ll /etc/passwd -rw-r--r-- 1 root root 860 Jul 20 19:50 /etc/passwd #以冒号为分隔符,分为7列 [root@qls ~]# head -1 /etc/passwd root:x:0:0:root:/root:/bin/bash 第一列: root #用户的名称 第二列: x #用户的密码占位符 第三列: 0 #用户的UID信息 第四列: 0 #用户的GID信息 第五列: root #用户的注释信息 第六列: /root #用户的家目录 第七列: /bin/bash #用户的命令解释器 能够登录系统的 /sbin/nologin 禁止登录系统 #用户的密码信息及账号信息 [root@qls ~]# ll /etc/shadow ---------- 1 root root 584 Jul 20 19:50 /etc/shadow #以冒号为分隔符,分为9列 [root@qls ~]# head -2 /etc/shadow root:$6$SoTZ3L8.5rI4::0:99999:7::: bin:*:17834:0:99999:7::: 第一列: root #用户的名称 第二列: * 或者 !! #加密后的密码信息, * 和 !! 表示的是没有密码 第三列: 17834 #密码最后一次修改距离1970年1月1日过了多少天 第四列: 0 #密码最短有效期 0没有限制 第五列: 99999 #密码最长有效期 99999 没有限制 第六列: 7 #密码到期前的预警时间 第七列: 10 #密码到期后的宽恕时间 第八列: 20391231 #账号过期时间 第九列: 空 #没有使用 |
用户管理命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
1. useradd == adduser #创建用户 选项: -u #指定uid -g #指定组 gid 前提需存在 -G #指定附加组 多个用逗号分割 -d #指定家目录 -c #注释信息 -s #指定命令解释器 -r #创建系统用户,默认不创建家目录 命令解释器是允许登录的 -M #不创建家目录 [root@qls ~]# useradd user01 [root@qls ~]# tail -1 /etc/passwd user01:x:1000:1000::/home/user01:/bin/bash [root@qls ~]# tail -1 /etc/shadow user01:!!:18464:0:99999:7::: [root@qls ~]# useradd -u666 -d /opt/user02 -c "test" user02 [root@qls ~]# tail -1 /etc/passwd user02:x:666:1001:test:/opt/user02:/bin/bash [root@qls ~]# ll /opt/ drwx------ 2 user02 user02 62 Jul 21 16:47 user02 [root@qls ~]# useradd -r user03 [root@qls ~]# tail -1 /etc/passwd user03:x:665:665::/home/user03:/bin/bash [root@qls ~]# ll /home/ total 0 drwx------ 2 user01 user01 62 Jul 21 16:40 user01 [root@qls ~]# useradd -r -s /sbin/nologin user04 [root@qls ~]# tail -1 /etc/passwd user04:x:664:664::/home/user04:/sbin/nologin [root@qls ~]# ll /home/ total 0 drwx------ 2 user01 user01 62 Jul 21 16:40 user01 [root@qls ~]# useradd -M -s /sbin/nologin user05 [root@qls ~]# tail -1 /etc/passwd user05:x:1001:1002::/home/user05:/sbin/nologin [root@qls ~]# 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@qls ~]# usermod -u6666 -g 1001 -aG 665,664 -md /opt/user01 -c "123" -l user123 user01 [root@qls ~]# grep 'user01' /etc/passwd user123:x:6666:1001:123:/opt/user01:/bin/bash [root@qls ~]# id user123 uid=6666(user123) gid=1001(user02) groups=1001(user02),665(user03),664(user04) [root@qls ~]# usermod -s /bin/bash user05 [root@qls ~]# grep 'user05' /etc/passwd user05:x:1001:1002::/home/user05:/bin/bash [root@qls ~]# usermod -L user02 [root@qls ~]# usermod -U user02 #修改密码 [root@qls ~]# 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@qls ~]$ 3. userdel #删除用户 默认不删除家目录及邮件信息 选项: -r #删除用户的时候,删除家目录及邮件相关信息 [root@qls ~]# 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@qls ~]# userdel user123 [root@qls ~]# 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@qls ~]# useradd user06 [root@qls ~]# ll /home/ total 0 drwx------ 2 user06 user06 62 Jul 21 17:45 user06 [root@qls ~]# 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@qls ~]# userdel -r user06 [root@qls ~]# ll /home/ total 0 [root@qls ~]# 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@qls ~]# userdel user02 userdel: user user02 is currently used by process 8333 #用户正在使用 [root@qls ~]# 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@qls ~]# userdel user02 4. 查看用户的命令 #查看用忽的id及组的相关信息 [root@qls ~]# id root uid=0(root) gid=0(root) groups=0(root) [root@qls ~]# yum install -y finger [root@qls ~]# 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@qls ~]# who root pts/0 2020-07-21 17:49 (10.0.0.1) [root@qls ~]# whoami root [root@qls ~]# 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@qls ~]# uptime 09:59:49 up 22:14, 1 user, load average: 0.00, 0.01, 0.05 |
用户创建相关的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
创建用户的时候,没有指定相关信息,系统创建用户是根据两个文件进行创建的 [root@qls ~]# ll /etc/login.defs -rw-r--r--. 1 root root 2028 Oct 30 2018 /etc/login.defs [root@qls ~]# ll /etc/default/useradd -rw-r--r--. 1 root root 119 Oct 30 2018 /etc/default/useradd [root@qls ~]# 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@qls ~]# 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 #创建邮件相关信息 |
用户命令行故障
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
[root@qls ~]# 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@qls ~]# 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@qls ~]# mkdir -m 700 /home/test [root@qls ~]# ll -d /home/test drwx------ 2 root root 6 Jul 21 10:53 /home/test [root@qls ~]# 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 |
用户的密码信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
#如何设置密码 管理员可以给任何用户设置密码 密码的长度没有限制 普通用户只能给自己设置密码 且是无规律的8位以上的密码 [root@qls ~]# useradd qls01 [root@qls ~]# passwd #默认给当前用户设置密码 Changing password for user root. New password: [root@qls ~]# passwd qls01 #给指定的用户设置密码 Changing password for user qls01. New password: BAD PASSWORD: The password is a palindrome Retype new password: passwd: all authentication tokens updated successfully. [root@qls ~]# 非交互式设置密码 --stdin [root@qls ~]# echo '2' | passwd --stdin qls01 Changing password for user qls01. passwd: all authentication tokens updated successfully. #如何设置随机密码 #如何获得随机数 [root@qls ~]# echo $RANDOM 28241 [root@qls ~]# echo $RANDOM | md5sum 6c8a1df9e12e9c553d0f9a397b860f4e - [root@qls ~]# echo $RANDOM | md5sum | cut -c 1-10 64091f6823 [root@qls ~]# echo $RANDOM | md5sum | cut -c 1-10 df0676f775 #密码设置成功,但是不知道密码 [root@qls ~]# echo $RANDOM | md5sum | cut -c 1-10 | passwd --stdin qls01 Changing password for user qls01. passwd: all authentication tokens updated successfully. [root@qls ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee pass.txt b676039b3f [root@qls ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee pass.txt | passwd --stdin qls01 Changing password for user qls01. passwd: all authentication tokens updated successfully. [root@qls ~]# cat pass.txt 7d53328b61 tee #重定向的命令 将数据重定向到指定的文件中,并输出在屏幕上面一份 -a #追加 #设置更复杂的密码 [root@qls ~]# yum install -y expect 选项: -l #指定的密码位数 -d #指定数字位数 -c #小写字母位数 -C #大小字母位数 -s #特殊字符位数 [root@qls ~]# mkpasswd gC}2atTf9 [root@qls ~]# mkpasswd -l 24 -d 6 -c 6 -C 6 -s 6 sv_^WF85J@DF5Ng5|3{f3/ng [root@qls ~]# mkpasswd -l 24 9px3Sesrx[ybtbvElubxxltj [root@qls ~]# mkpasswd -l 24 uimYw\Z4amzffhti0eljucgg [root@qls ~]# 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@qls ~]# mkpasswd -l 24 -s 24 -d 0 -c 0 -C 0 $.$}+?;-~]|)>(#_),[)!#@$ [root@qls ~]# mkpasswd -l 24 -s 24 -d 0 -c 0 -C 0 | tee pass.txt | passwd --stdin qls01 Changing password for user qls01. passwd: all authentication tokens updated successfully. [root@qls ~]# cat pass.txt :{]~"/'%[,+"^*%??%,'?}~$ |
用户组的管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
什么是用户组 组分为两类 基本组 #一个用户只能拥有一个基本组 附加组 #当基本组的权限不够用户使用的,就出现了附加组 一个用户允许拥有多个附加组 跟组相关的文件 [root@qls ~]# ll /etc/group -rw-r--r-- 1 root root 573 Jul 21 11:04 /etc/group [root@qls ~]# ll /etc/gshadow ---------- 1 root root 449 Jul 21 11:04 /etc/gshadow [root@qls ~]# #以冒号为分隔符 分为4列 [root@qls ~]# cat /etc/group #用户组的基本信息文件 root:x:0: bin:x:1: daemon:x:2: mail:x:12:postfix 第一列: root #组的名称 第二列: x #组的密码占位符 第三列: 0 #组的GID 第四列: #用户名 哪些用户使用此组作为附加组 多个用逗号分割 #用户组的组密码文件 #以冒号为分隔符 分为四列 [root@qls ~]# cat /etc/gshadow root::: bin::: daemon::: mail:::postfix 第一列: root #组的名称 第二列: !或者空 #用户组的密码信息 空或者!是没有密码 第三列: 空 #用户组的管理者 第四列: 空 #用户名 哪些用户使用此组作为附加组 多个用逗号分割 [root@qls ~]# usermod -aG user05,user03,user01 qls01 [root@qls ~]# grep 'qls01' /etc/group user01:x:1000:qls01 user03:x:665:qls01 user05:x:1002:qls01 qls01:x:1006: [root@qls ~]# grep 'qls01' /etc/gshadow user01:!::qls01 user03:!::qls01 user05:!::qls01 qls01:!:: |
用户组的相关命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
1. 创建用户组的命令 groupadd 选项: -g #指定组的ID GID -r #创建系统组 [root@qls ~]# groupadd user_group01 [root@qls ~]# tail -1 /etc/group user_group01:x:1007: [root@qls ~]# groupadd -g 666 user_group02 [root@qls ~]# tail -1 /etc/group user_group02:x:666: [root@qls ~]# groupadd -r user_group03 [root@qls ~]# tail -1 /etc/group user_group03:x:664: 2. 修改用户组的命令 groupmod 选项: -g #修改用户组的ID GID -n #修改组的名称 [root@qls ~]# groupmod -g 6666 user_group01 [root@qls ~]# grep 'user_group01' /etc/group user_group01:x:6666: [root@qls ~]# groupmod -n new_group user_group01 [root@qls ~]# grep 'new_group' /etc/group new_group:x:6666: 3. 删除用户组的命令 groupdel [root@qls ~]# groupdel new_group [root@qls ~]# grep 'new_group' /etc/group #删除作为某个用户的附加组的用户组 删除没有影响 [root@qls ~]# groupdel user01 [root@qls ~]# grep '1002' /etc/group user05:x:1002:qls01 [root@qls ~]# grep '1002' /etc/passwd user05:x:1001:1002::/home/user05:/bin/bash test:x:1002:1003::/home/test:/bin/bash [root@qls ~]# id user05 uid=1001(user05) gid=1002(user05) groups=1002(user05) #删除一个组作为某个用户的基本组 是不能删除的 解决: 给这里面的用户重新找个基本组 把用户也一并删除掉 [root@qls ~]# groupdel user05 groupdel: cannot remove the primary group of user 'user05' [root@qls ~]# usermod -g 1003 user05 [root@qls ~]# id user05 uid=1001(user05) gid=1003(test) groups=1003(test) [root@qls ~]# groupdel user05 |