Linux学习记录–第07天–用户和组

Linux学习记录--第07天--用户和组

1. 用户和组存在意义

  • 系统上的每一个进程都需要特定的用户运行
  • 每一个文件都有特定的用户拥有
  • 访问文件或者目录受到用户的限制
  • 进程能够以何种方式访问一个文件或者目录,与进程所关联的用户有关

2. id命令

查看用户的所属组信息

[root@oldboy ~]# id root  
uid=0(root) gid=0(root) groups=0(root)
[root@oldboy ~]# id
uid=0(root) gid=0(root) groups=0(root)
CentOS7 中
0    超级管理员
1-200    系统用户,系统分配给系统进程使用
201-999系统用户,用来运行服务账户,不需要登陆系统
1000+ 常规用户
至于为什么是这范围,/etc/login.defs 告诉你答案

3. 用户管理

/etc/passwd 
/etc/shadow

4. /etc/passwd

该文件每一行包含7个字段

  • 用户名
  • 密码占位符 -> /etc/passwd
  • UID
  • 用户基本组GID
  • 用户注释
  • 用户家目录
  • 用户登录shell
[root@oldboy ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy:x:1000:1000::/home/oldboy:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

5. /etc/shadow

该文件每一行包含9个字段

  • 用户名
  • 加密后的密码,未设置密码时为 !!
  • 最近一次密码更改的时间,从1970.01.01开始计算
  • 密码最少使用多少天,0表示无限制
  • 密码最多使用多少天,99999表示永不过期
  • 密码到期前警告期限,默认7天
  • 密码到期后保持活动的天数
  • 账户到期时间
  • 标志(保留)
[root@oldboy ~]# cat /etc/shadow
root:$6$1exL6a7oT/2yCd3h$QzGaEseyB9i3KDpd2lTWJ0W4Dm8r3GamjibLKVRLxS7IvXRqcajzeGh/HtZkyNz7Q0GYUnIOAUIjG9x9TFCyH0::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
sync:*:17834:0:99999:7:::
shutdown:*:17834:0:99999:7:::
halt:*:17834:0:99999:7:::
mail:*:17834:0:99999:7:::
operator:*:17834:0:99999:7:::
games:*:17834:0:99999:7:::
ftp:*:17834:0:99999:7:::
nobody:*:17834:0:99999:7:::
systemd-network:!!:18134::::::
dbus:!!:18134::::::
polkitd:!!:18134::::::
sshd:!!:18134::::::
postfix:!!:18134::::::
oldboy:!!:18134:0:99999:7:::
apache:!!:18137::::::

6. chage命令

chage 更改用户密码使用情况
     -d  设置最近一次更改密码时间,0:下次登陆系统时强制修改密码
     -m  设置用户两次更改密码之前使用"最小天数"
     -M  设置用户两次更改密码之前使用"最大天数"
     -W  设置密码更改警告时间,将过期警告天数设置为"警告天数"
     -I  设置密码过期天数后,密码为失效状态
     -E  设置用户过期时间,账户失效后无法登陆
     -l  显示用户信息
[root@oldboy ~]# date -s "20140831"
Sun Aug 31 00:00:00 CST 2014
[root@oldboy ~]# date
Sun Aug 31 00:00:02 CST 2014
[root@oldboy ~]# useradd oldboy1
[root@oldboy ~]# tail -n 1 /etc/passwd
oldboy1:x:1001:1001::/home/oldboy1:/bin/bash
[root@oldboy ~]# tail -n 1 /etc/shadow
oldboy1:!!:16312:0:99999:7:::
[root@oldboy ~]# echo 123| passwd --stdin oldboy1
Changing password for user oldboy1.
passwd: all authentication tokens updated successfully.
[root@oldboy ~]# tail -n 1 /etc/shadow
oldboy1:$6$mwU/1adU$z6zVDyRso.7rT/CqWl2U5mVi8dVLkVUd/o2PB5DYV6RiG4RzwYyT7TDp4qjChZAQ7uhNYmCjmYAxlwH6NfgfD.:16312:0:99999:7:::
[root@oldboy ~]# chage -l oldboy1
Last password change          : Aug 30, 2014
Password expires          : never
Password inactive          : never
Account expires            : never
Minimum number of days between password change    : 0
Maximum number of days between password change    : 99999
Number of days of warning before password expires  : 7

7. useradd命令

useradd    添加用户
     -u  指定用户的UID
     -g  指定用户默认的基本组
     -G  指定用户的附加组,用逗号隔开多个组
     -d  指定用户的家目录
     -c  指定用户注释信息
     -M  不创建家目录
     -s  指定用户默认shell
     -r  创建系统账户,没有家目录
练习实例
     用户配置信息,尽量在创建用户的时候设置好
     创建oldboy用户
     指定UID 5001
     基本组students
     附加组 sa dba
     注释信息2018 new student
     shell:bash

[root@oldboy ~]# groupadd sa
[root@oldboy ~]# groupadd dba
[root@oldboy ~]# groupadd students
[root@oldboy ~]# useradd -u 5001 -g students -G sa,dba -c "2018 new student" -d /home/oldboy -s /bin/bash oldboy
[root@oldboy ~]# tail -n 1 /etc/passwd
oldboy:x:5001:1002:2018 new student:/home/oldboy:/bin/bash

8. usermod命令

usermod
     -u  修改用户的UID
     -g  修改用户所属的基本组 GID
     -G  修改用户的附加组,逗号隔开
     -a  追加附加组,必须与G连用  -aG 追加附加组
     -md 家目录迁移,必须和d连用
     -d  指定用户的家目录的新位置
     -c  修改用户的注释信息
     -s  更改用户登陆的shell
     -l  更改用户登录名
     -L  锁定用户
     -U  解锁用户    实质shadow密码字段前加!

9. finger chfn chsh

[root@oldboy ~]# finger root
Login: root                 Name: root
Directory: /root                      Shell: /bin/bash
On since Thu Aug 29 10:33 (CST) on tty1
On since Sun Sep  1 14:04 (CST) on pts/0 from 10.0.0.1
No mail.
No Plan.
[root@oldboy ~]# finger oldboy
Login: oldboy               Name: 2018 new student
Directory: /home/oldboy               Shell: /bin/bash
Never logged in.
No mail.
No Plan.
[root@oldboy ~]# chfn oldboy
Changing finger information for oldboy.
Name [2018 new student]: 2019
Office []: sdu
Office Phone []: 123123
Home Phone []: 
Finger information changed.
[root@oldboy ~]# finger oldboy
Login: oldboy               Name: 2019
Directory: /home/oldboy               Shell: /bin/bash
Office: sdu, 123123
Never logged in.
No mail.
No Plan.
[root@oldboy ~]# chsh
Changing shell for root.
New shell [/bin/bash]: 
[root@oldboy ~]# chsh oldboy
Changing shell for oldboy.
New shell [/bin/bash]: /sbin/nologin
chsh: Warning: "/sbin/nologin" is not listed in /etc/shells.
Shell changed.

10. userdel

删除用户,-r同时删除家目录

[root@oldboy ~]# useradd supersunsir  添加用户
[root@oldboy ~]# ls /home/
oldboy  supersunsir
[root@oldboy ~]# tail -n 1 /etc/passwd
supersunsir:x:5002:5002::/home/supersunsir:/bin/bash
[root@oldboy ~]# tail -n 1 /etc/shadow
supersunsir:!!:16312:0:99999:7:::
[root@oldboy ~]# userdel -r supersunsir  -r连同家目录都删除
[root@oldboy ~]# ls /home/
oldboy

11. 用户创建原理

linux系统创建用户会默认读取/etc/default/useradd的配置文件,如果当指定参数时,使用指定参数,如果不指定参数,默认使用/etc/default/useradd中的配置。当我们使用useradd命令创建用户的时候,用户家目录下会产生相应的.bash*文件,这些文件默认是从/etc/skel目录中复制过去的。
如需变更环境拷贝目录,可以修改/etc/default/useradd配置文件
[root@oldboy ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@oldboy ~]# ll -a /etc/skel/
total 24
drwxr-xr-x.  2 root root   62 Apr 11  2018 .
drwxr-xr-x. 74 root root 8192 Aug 31 01:52 ..
-rw-r--r--.  1 root root   18 Oct 31  2018 .bash_logout
-rw-r--r--.  1 root root  193 Oct 31  2018 .bash_profile
-rw-r--r--.  1 root root  231 Oct 31  2018 .bashrc
[root@oldboy ~]# egrep -v "^#|^$" /etc/login.defs   过滤空行和注释
MAIL_DIR  /var/spool/mail
PASS_MAX_DAYS  99999
PASS_MIN_DAYS  0
PASS_MIN_LEN  5
PASS_WARN_AGE  7
UID_MIN                  1000
UID_MAX                 60000
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME  yes
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512

如果使用了useradd添加用户,但是没有设置密码,那么只可以使用su切换至该用户,不能直接登录

因此需要使用passwd为该用户设置密码(强度尽量大)

12. 修改密码的两种方式

[root@oldboy ~]# passwd oldboy
Changing password for user oldboy.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@oldboy ~]# echo 123 | passwd --stdin oldboy
Changing password for user oldboy.
passwd: all authentication tokens updated successfully.

13. 生成随机密码

  1. 使用随机数的md5
[root@oldboy ~]# echo $RANDOM
12472
[root@oldboy ~]# echo $RANDOM | md5sum
22509e173bbaf12503e26b4d8dabdd18  -
[root@oldboy ~]# echo $RANDOM | md5sum | cut -c 1-10
5029993720
[root@oldboy ~]# echo $RANDOM | md5sum | cut -c 1-10
7e1f258893
[root@oldboy ~]# echo $RANDOM | md5sum | cut -c 1-10
be8032a3ea
[root@oldboy ~]# echo $RANDOM | md5sum | cut -c 1-10
a53c3a7081
  1. 使用mkpasswd密码生成工具
[root@oldboy ~]# mkpasswd -l 15 -d 3 -C 5 -c 5
St]9FwxY8S9Odyv
[root@oldboy ~]# mkpasswd -l 15 -d 3 -C 5 -c 5
5zkuZ4AN%QhovJ5
[root@oldboy ~]# mkpasswd -l 15 -d 3 -C 5 -c 5
1MJVtlV93W]tuti
[root@oldboy ~]# mkpasswd -l 15 -d 3 -C 5 -c 5
dsRCzl04ThfE\C1
暂无评论

发送评论 编辑评论


				
上一篇
下一篇