# 用户管理

## 热知识

1. Linux是多用户系统，root用户拥有最高权限。
2. 每个用户都有一个用户ID，UID：0表示root；UID：1~999表示系统用户；UID：1000+表示普通用户。
3. Linux系统在输入密码的时候都是不会回显字符到屏幕的，不要以为是卡死了。

## 添加子用户

- Ubuntu系统默认关闭了root用户直接SSH登录，请勿开启允许root⽤⼾登录的开关。
- 新增⼦⽤⼾时，勿使⽤弱密码，设置密码⾄少包含⼤⼩写以及特殊符号，⻓度12位以上。 
- 使用`sudo adduser xxx`添加用户，而不是`sudo useradd xxx`，否则创建的用户没有家目录，Rstudio等软件登录后会报错。

<CodePreview title="add-user" language="bash" executable={false} code={'sudo adduser 用户名'} />

## 设置子账号权限

> 如果需要设置子账号之间相互不能查看文件，可以这样设置

<CodePreview title="change-user-permission" language="bash" executable={false} code={'chmod 700 -R /home/子账号用户名'} />

## 给用户添加sudo权限

> 授予sudo账号的时候，应当依据最小权限原则进行，只给有需要root权限且熟悉Linux操作的人员赋予sudo权限。

- 给指定用户sudo权限
<CodePreview title="grant-sudo-permission" language="bash" executable={false} code={'sudo usermod -aG sudo 用户名'} />

- 检查哪些用户有sudo权限
<CodePreview title="check-sudo-user" language="bash" code={'getent group sudo'} />

## 修改用户密码

- 修改他人密码，需要sudo权限
<CodePreview title="change-user-password" language="bash" executable={false} code={'sudo passwd 用户名'} />

- 修改自己的密码，直接执行passwd命令即可

<CodePreview title="change-self-password" language="bash" code={'id'} />

## 用户信息查询

- 查看当前用户的用户ID以及用户组
<CodePreview title="check-user-id" language="bash" code={'id'} />

- 查看有哪些用户
<CodePreview title="list-user" language="bash" code={'cat /etc/passwd'} />

- 查看有哪些用户组

<CodePreview title="list-user-group" language="bash" code={'cat /etc/group'} />

## 将一个用户从用户组中移除

<CodePreview title="remove-user-from-group" language="bash" executable={false} code={'sudo deluser 用户名 组名'} />

## 删除用户

- 删除用户并删除家目录（注意有无需要备份的数据）
<CodePreview title="remove-user" language="bash" executable={false} code={'sudo deluser --remove-home 用户名'} />
