# 修改组和用户

## 用户组和用户修改

### groupmod 命令

`groupmod` 命令：

介绍：修改用户组属性

格式：groupmod \[option] groupname

用法：

* groupmod -g gid groupname：修改gid
* groupmod -n newname groupname：修改组名

```bash
[root@localhost ~]# groupdel test
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# groupadd test
[root@localhost ~]# tail -1 /etc/group
test:x:1001:
[root@localhost ~]# groupm
groupmems  groupmod   
[root@localhost ~]# groupmod -g 1002 test
[root@localhost ~]# tail -1 /etc/group
test:x:1002:
[root@localhost ~]# groupmod -n test1 test
[root@localhost ~]# tail -1 /etc/group
test1:x:1002:
```

## usermod 命令

`usermod` 命令：

介绍： 修改用户属性

格式：usermod \[option] username

用法：

* -u uid ：修改uid
* -g gid ：修改gid
* -G gid ：添加扩展组

  ，扩展组可删 主组不可删
* -s  ：修改sh
* -d  ：修改家目录

```bash
[root@localhost ~]# tail -1 /etc/passwd
test:x:1001:1001::/home/test:/bin/bash
[root@localhost ~]# usermod -u 1002 test
[root@localhost ~]# tail -1 /etc/passwd
test:x:1002:1001::/home/test:/bin/bash
[root@localhost ~]# usermod -g 1002 test
[root@localhost ~]# tail -1 /etc/passwd
test:x:1002:1002::/home/test:/bin/bash
[root@localhost ~]# usermod -G 1001 test
[root@localhost ~]# id test
uid=1002(test) gid=1002(test1) 组=1002(test1),1001(test)
[root@localhost ~]# usermod -s /sbin/nologin test
[root@localhost ~]# tail -1 /etc/passwd
test:x:1002:1002::/home/test:/sbin/nologin
[root@localhost ~]# usermod -d /tmp test
[root@localhost ~]# tail -1 /etc/passwd
test:x:1002:1002::/tmp:/sbin/nologin
```

### passwd 命令

`passwd` 命令：

介绍：更改用户密码

格式：passwd \[option] \[username]

用法：

* passwd：修改当前用户密码
* passwd username ：更改其他用户密码
* -l ： 锁定用户，使其无法登陆 passwd -l username
* -u ： 解锁 passwd -u username

如：

`echo “password” | passwd --stdin username`：给用户设置密码，常用于脚本

`echo -e "123456\n123456" | passwd username` ：-e 可识别\n

```bash
[root@localhost ~]# passwd test
更改用户 test 的密码 。
新的 密码：
无效的密码： 密码少于 8 个字符
重新输入新的 密码：
passwd：所有的身份验证令牌已经成功更新。
[root@localhost ~]# passwd -l test
锁定用户 test 的密码 。
passwd: 操作成功
[root@localhost ~]# su - test
上一次登录：四 8月  2 22:31:22 CST 2018pts/0 上
[test@localhost ~]$ exit
登出
[root@localhost ~]# passwd -u test
解锁用户 test 的密码。
passwd: 操作成功
[root@localhost ~]# echo "password" | passwd --stdin test
更改用户 test 的密码 。
passwd：所有的身份验证令牌已经成功更新。
[root@localhost ~]# echo -e "password\npassword" | passwd test
更改用户 test 的密码 。
新的 密码：无效的密码： 密码未通过字典检查 - 它基于字典单词
重新输入新的 密码：passwd：所有的身份验证令牌已经成功更新。
[root@localhost ~]#
```

### mkpasswd 命令

`mkpasswd` 命令：

介绍：生成随机密码，默认10位\
，基于expect安装包

用法：mkpasswd \[option]

* -l # ：指定长度
* -s # ：指定特殊字符数

  0 为不指定
* -d # ：指定数字数
* -C # ：指定大写数
* -c # ：指定小写数

```bash
[root@localhost ~]# mkpasswd 
ba9e'5bKP
[root@localhost ~]# mkpasswd -l 20
dpvlh5ya2bczb+bwyyLF
[root@localhost ~]# mkpasswd -s 2 -d 3 -l 20
Bu3kcyxGwhrd1pi]!zw0
[root@localhost ~]# mkpasswd -s 2 -d 3 -C 10 -l 20
O?Ed9QCKUJOPpW87ay,i
[root@localhost ~]# mkpasswd -s 2 -d 3 -c 10 -l 20
ak2ej8RRg.6rhbhyms)r
```
