用户文件

**(原密码文件)

/etc/passwd**

[root@jinkai01 ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin 以:为隔离分段 第一段:用户名 第二段:以前密码存放地 第三段:用户UID 第四段:组GID 第五段:注释 第六段:用户家目录 第七段:用户的shell

密码文件

/etc/shadow

[root@jinkai01 ~]# head -n2 /etc/shadow root:$6$iIKa5PJh$MvkpTCvxtu1lgan8MiVRiX2Lb05bEZFuCYCh1hc9s6zBQDukJaVaNyCdLPwzWc3ihD/GmZTqwEdEAl9UXpTsc/:18478:0:99999:7::: bin:*:17834:0:99999:7::: 分为9段,其中密码已经被加密 第一段:用户名 第二段:密码 第三段:上次更改密码的时间(1970年-数值年) 第四段:要过多少天你必须更改 0为不需要 第五段:密码多少天到期; 第六段:密码到期前的警告; 第七段:账号失效时段;到期后还有7天时间可以使用;

用户组管理

组文件 /etc/group 组密码文件 /etc/gshadow

groupadd

增加一个组 命令格式: groupadd [组名]

[root@jinkai01 ~]# groupadd grp2 [root@jinkai01 ~]# tail -n5 /etc/group postfix:x:89: linuxprobe:x:1000:linuxprobe grp1:x:1003: user1:x:1004: grp2:x:1005:

-g:指定组id groupadd -g 1005 grp3

[root@jinkai01 ~]# groupadd -g 1006 grp3 [root@jinkai01 ~]# tail -n5 /etc/group linuxprobe:x:1000:linuxprobe grp1:x:1003: user1:x:1004: grp2:x:1005: grp3:x:1006:

groupdel

删除一个组(删除组必须把组内的用户清空才可以) 命令格式: groupdel [组名]

[root@jinkai01 ~]# groupdel grp3 [root@jinkai01 ~]# tail -n5 /etc/group postfix:x:89: linuxprobe:x:1000:linuxprobe grp1:x:1003: user1:x:1004: grp2:x:1005:

用户管理

useradd

创建用户 命令格式: useradd [参数][用户名] 实验1:增加一个用户名user2 useradd user2

[root@jinkai01 ~]# useradd user2 [root@jinkai01 ~]# tail -n2 /etc/passwd user1:x:1003:1004::/home/user1:/bin/bash user2:x:1004:1006::/home/user2:/bin/bash

-u:指定uid 实验2:增加一个用户名user3,指定uid为1005 useradd -u 1005 user3

[root@jinkai01 ~]# useradd -u 1005 user3 [root@jinkai01 ~]# tail -n2 /etc/passwd user2:x:1004:1006::/home/user2:/bin/bash user3:x:1005:1007::/home/user3:/bin/bash

-d:指定家目录 -s:指定shell -g:指定组 实验3:新建用户user4指定组为grp2

[root@jinkai01 ~]# useradd -g grp2 user4 [root@jinkai01 ~]# tail -n2 /etc/passwd user3:x:1005:1007::/home/user3:/bin/bash user4:x:1006:1005::/home/user4:/bin/bash

userdel

删除用户 格式: userdel [用户名] userdel user4 删除用户后用户的家目录还是存在的

[root@jinkai01 ~]# userdel user4 [root@jinkai01 ~]# tail -n2 /etc/passwd user2:x:1004:1006::/home/user2:/bin/bash user3:x:1005:1007::/home/user3:/bin/bash [root@jinkai01 ~]# ls /home/ linuxprobe user1 user2 user3 user4

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

[root@jinkai01 ~]# userdel -r user3 [root@jinkai01 ~]# ls /home/ linuxprobe user1 user2 user4

usermod命令

usermod命令用于修改用户帐号 usermod可用来修改用户帐号的各项设定 参数

-c<备注>  修改用户帐号的备注文字。 -d<登入目录>  修改用户登入时的目录。 -e<有效期限>  修改帐号的有效期限。 -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。 -g<群组>  修改用户所属的群组。 -G<群组>  修改用户所属的附加群组。 -l<帐号名称>  修改用户帐号名称。 -L  锁定用户密码,使密码无效。 -s<shell>  修改用户登入后所使用的shell。 -u<uid>  修改用户ID。 -U  解除密码锁定。*

更改用户uid 实验1:更改user2用户的uid为1008 命令:usermod -u 1008 user2

[root@jinkai01 ~]# tail -n1 /etc/passwd user2:x:1004:1006::/home/user2:/bin/bash [root@jinkai01 ~]# usermod -u 1008 user2 [root@jinkai01 ~]# tail -n1 /etc/passwd user2:x:1008:1006::/home/user2:/bin/bash

更改用户所属组 实验2:更改账号user005用户的组为grp3也就是gid为1007 命令:usermod -g grp2 user2 更改用户家目录

[root@jinkai01 ~]# tail -n1 /etc/group grp3:x:1007: [root@jinkai01 ~]# tail -n1 /etc/passwd user2:x:1008:1006::/home/user2:/bin/bash [root@jinkai01 ~]# usermod -g grp3 user2 [root@jinkai01 ~]# tail -n1 /etc/passwd user2:x:1008:1007::/home/user2:/bin/bash

实验3:指定user2的家目录为/home/user4

[root@jinkai01 ~]# usermod -d /home/user4 user2

更改用户shell目录 实验4:指定user2的shell

usermod -s /sbin/nologin user2

增加用户所属组(多个组) 查询所属uid gid 组的命令 id [用户名] id user2

[root@jinkai01 ~]# id user2 uid=1008(user2) gid=1007(grp3) groups=1007(grp3)

添加到额外扩展组中 usermod -G [组名] [用户名]

[root@jinkai01 ~]# usermod -G grp2 user2 [root@jinkai01 ~]# id user2 uid=1008(user2) gid=1007(grp3) groups=1007(grp3),1005(grp2)

用户密码管理

passwd命令

更改用户密码 格式: passwd [用户名] passwd user2

[root@jinkai01 ~]# passwd user2 Changing password for user user2. New password: BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word Retype new password: passwd: all authentication tokens updated successfully

**注意:查看/etc/shadow 文件中第二列表示密码,!号为无密码,号为被锁定无法登陆使用;

锁定一个用户

格式: passwd -l [用户名] passwd -l user2** [root@jinkai01 ~]# passwd -l user2 Locking password for user user2. passwd: Success

[root@jinkai01 ~]# tail -n1 /etc/shadow user2:!!$6$a0f4Dgf0$4oeCi5cLN7Kp9tDPgc5hAfZtPMKN8QB4hMc60qj6FAGB5O8NSH/Nceggc/zIKyhPfTohdtAG.9HslB/xQfzTj1:18479:0:99999:7:::

解锁一个用户

格式: passwd -u [用户名] passwd -u user2

[root@jinkai01 ~]# passwd -u user2 Unlocking password for user user2. passwd: Success [root@jinkai01 ~]# tail -n1 /etc/shadow user2:$6$a0f4Dgf0$4oeCi5cLN7Kp9tDPgc5hAfZtPMKN8QB4hMc60qj6FAGB5O8NSH/Nceggc/zIKyhPfTohdtAG.9HslB/xQfzTj1:18479:0:99999:7:::

新技能

更改用户密码,只需要输入1次密码; passwd --stdin 【用户名】 passwd --stdin user2

[root@jinkai01 ~]# passwd --stdin user2 Changing password for user user2 admin123 passwd: all authentication tokens updated successfully.

那么我们写脚本时可以使用管道符|一次性给一个账号改密码

echo "123456789"|passwd --stdin user2

命令意思就是输出字符串123456789给passwd --stdin user2 来实现密码更改

[root@jinkai01 ~]# echo "123456789" | passwd --stdin user2 Changing password for user user2. passwd: all authentication tokens updated successfully.

echo新技能 echo -e 可以在字符串中加入\n来实现换行 echo -e "123456\nABCD"

[root@jinkai01 ~]# echo -e "123456\nABCD" 123456 ABCD

根据这个 我们也可以来一次性更改密码 更改用户 user2 的密码 。

[root@jinkai01 ~]# echo -e "admin\nadmin" | passwd user2 mkpasswd

一个生成密码的小工具 安装包expect yum install -y expect 默认随机生成9位密码

[root@jinkai01 ~]# mkpasswd sFk8Ov0p$

命令格式: -l [数值]:指定生成字符串的长度 -s [数值]:指定特殊符号 -d [数值]:指定多少个数字 指定长度 实验1:生成长度为12的字符串

[root@jinkai01 ~]# mkpasswd -l 12 6+yxi5FcuSkm

指定特殊符号数 实验2:生成长度为12,特殊符号为0的字符串

[root@jinkai01 ~]# mkpasswd -l 12 -s 0 q1omoohw1cYO

指定数字数 实验3:生成长度为12,特殊符号为0,数字为8的字符串;

[root@jinkai01 ~]# mkpasswd -l 12 -s 0 -d 8 17n39u6M90U1