用户文件
**(原密码文件)
/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