[root@jinkai01 ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin 以:为隔离分段 第一段:用户名 第二段:以前密码存放地 第三段:用户uid 第四段:组gid 第五段:注释 第六段:用户家目录 第七段:用户的shell
[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 [组名]
[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 grp3:x:1006:
删除一个组(删除组必须把组内的用户清空才可以)
groupdel [组名]
[root@jinkai01 ~]# groupdel grp3
创建用户
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 user3:x:1005:1007::/home/user3:/bin/bash
-d:指定家目录
-s:指定shell
-g:指定组
实验3:新建用户user4指定组为grp2
[root@jinkai01 ~]# useradd -g grp2 user4 user4:x:1006:1005::/home/user4:/bin/bash
删除用户
格式:
userdel [用户名]
userdel user4 删除用户后用户的家目录还是存在的
[root@jinkai01 ~]# userdel user4 [root@jinkai01 ~]# ls /home/ linuxprobe user1 user2 user3 user4
-r:删除用户时,同时删除家目录
[root@jinkai01 ~]# userdel -r user3 linuxprobe user1 user2 user4
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 [root@jinkai01 ~]# usermod -u 1008 user2 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 ~]# usermod -g grp3 user2 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 uid=1008(user2) gid=1007(grp3) groups=1007(grp3),1005(grp2)
更改用户密码
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 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
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