LV205-用户管理命令简介
用户管理
1. 基础知识
用户的属性:用户名、口令、用户 ID ( UID )、用户主目录( HOME )和用户 shell 。
/etc/passwd 文件: /etc/passwd 文件是系统能够识别的用户清单。用户登陆时,系统查询这个文件,确定用户的 UID 并验证用户口令。包括:登陆名、经过加密的口令、 UID 、默认的 GID 、个人信息、主目录、登陆 shell 等
/etc/group 文件:包含了 UNIX 组的名称和每个组中成员列表每一行代表一个组,包括 4 个字段:组名、加密的口令、 GID 号、成员列表( , 隔开)。
2. 查看当前用户:whoami
2.1 使用格式
whoami 命令用于显示自身用户名称,一般不用带参数。一般格式如下:
whoami2.2 使用实例
hk@vm:~$ whoami
hk3. 查看登录用户:who
3.1 使用格式
who 命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID 、使用的终端机、从哪边连上来的、上线时间、呆滞时间、 CPU 使用量、动作等等。一般格式如下:
who [option]3.2 使用实例
3.2.1 显示当前登录系统的用户
hk@vm:~$ who
hk tty7 2022-10-13 09:42 (:0)3.2.1 显示信息带标题栏
k@vm:~$ who -H
名称 线路 时间 备注
hk tty7 2022-10-13 09:42 (:0)3.2.1 显示终端属性和标题栏
hk@vm:~$ who -TH
名称 线路 时间 备注
hk + tty7 2022-10-13 09:42 (:0)4. 退出登录账户:exit
4.1 使用格式
exit 命令用于退出目前的 shell 或者退出当前用户(root 用户下常用)。
exit [状态值]【参数说明】
- 状态值 :就是退出的时候一个反馈给系统的值,是可选的。一般在终端使用的时候是用于退出 root 用户,一般不写状态值。
4.2 使用实例
hk@vm:~$ su
密码:
root@vm:/home/hk# exit
exit5. 添加用户账号:useradd、adduser
5.1 两个命令区别
useradd 和 adduser 命令都可以用于添加用户账号,参数基本上是一模一样,但是在 Ubuntu 中,两者都不使用参数时是有区别的:
- useradd 在使用该命令创建用户是不会在 /home 下自动创建与用户名同名的用户目录,而且不会自动选择 shell 版本,也没有设置密码,那么这个用户是不能登录的,需要使用 passwd 命令修改密码。
- adduser 在使用该命令创建用户是会在 /home 下自动创建与用户名同名的用户目录,自动选择系统 shell 版本,会在创建时会提示输入密码,更加友好,一般推荐使用这个命令来创建用户。
5.2 使用格式
5.2.1 useradd
useradd 命令的一般格式如下:
useradd [option] [user_name]【参数说明】
option :选项。
user_name :要创建的用户的用户名。
【注意】
(1)使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。
(2)使用的时候可能会需要添加 sudo,否则可能会提示 ” useradd: Permission denied “ 。
5.2.2 adduser
adduser 一般格式如下:
adduser [option] [user_name]【参数说明】
option :选项。
user_name :要创建的用户的用户名。
【注意】
(1)使用 adduser 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。
(2)使用的时候可能会需要添加 sudo,否则可能会提示 ” useradd: Permission denied “ 。
5.3 使用实例
5.3.1 useradd 实例
- 直接创建用户
hk@vm:~$ useradd aaa
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。
hk@vm:~$ sudo useradd aaa
[sudo] hk 的密码:
hk@vm:~$ ls /home/
hk我们看一下 /etc/passwd 文件中的我们新创建的用户 aaa:
hk@vm:~$ cat /etc/passwd | grep aaa
aaa:x:1001:1001::/home/aaa:从这里可以看出,我们直接创建用户的话,在 /home 目录下并没有自动生成新建用户的目录,但是指定了登录用户的时候的默认目录,并且我们创建用户还需要加上 sudo 。
- 创建用户的时候指定家目录
hk@vm:~$ useradd -d /home/hk2 aaa
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。
hk@vm:~$ sudo useradd -d /home/hk2 aaa
hk@vm:~$ ls /home/
hk我们看一下 /etc/passwd 文件中的我们新创建的用户 aaa :
hk@vm:~$ cat /etc/passwd | grep aaa
aaa:x:1001:1001::/home/hk2:可以看到家目录已经不再是默认的 aaa 了,改为了我们指定的目录。
5.3.2 adduser 实例
hk@vm:~$ adduser bbb
adduser:只有 root 才能将用户或组添加到系统。
hk@vm:~$ sudo adduser bbb
正在添加用户"bbb"...
正在添加新组"bbb" (1002)...
正在添加新用户"bbb" (1002) 到组"bbb"...
创建主目录"/home/bbb"...
正在从"/etc/skel"复制文件...
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
正在改变 bbb 的用户信息
请输入新值,或直接敲回车键以使用默认值
全名 []:
房间号码 []:
工作电话 []:
家庭电话 []:
其它 []:
这些信息是否正确? [Y/n]
hk@vm:~$ ls /home/
bbb hk我们来看一下 /etc/passwd 文件中的我们新创建的用户 bbb:
hk@vm:~$ cat /etc/passwd | grep bbb
bbb:x:1002:1002:,,,:/home/bbb:/bin/bash会发现,该命令同时为我们指定了 shell。
6. 修改用户密码:passwd
6.1 使用格式
出于系统安全考虑, Linux 系统中的每一个帐号都必须同时具备用户名和密码, passwd 就是用来更改使用者的密码。需要说明的是,超级用户 root 可以修改所有其他用户的口令,而普通用户只能修改自己的用户口令,如果确要修改超级用户或其他用户口令的话,需要具有超级用户的权限。一般格式如下
passwd [option] <user_name>【参数说明】
option : 选项。
user_name :需要修改密码的用户名。
【注意】使用的时候要注意加上 sudo。
6.2 使用实例
hk@vm:~$ passwd bbb
passwd:您不能查看或更改 bbb 的密码信息。
hk@vm:~$ sudo passwd bbb
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码7. 删除用户:userdel、deluser
7.1 两个命令区别
userdel 和 deluser 命令都用于删除用户,将一个用户从一个组中删除(即退出用户组)。 deluser 的选项要比 userdel 丰富,功能要更强大,其他的区别嘛,就不是很清楚了,后边要是发现有重大的区别的话再补充。
7.1.1 userdel
userdel 一般格式如下:
userdel [option] <user_name>【参数说明】
option : 选项。
user_name :需要删除的用户的用户名。
7.1.2 deluser
deluser 一般格式如下:
deluser [option] <username>【参数说明】
option : 选项。
user_name :需要删除的用户的用户名。
7.3 使用实例
7.3.1 userdel 实例
hk@vm:~$ cat /etc/passwd | grep bbb
bbb:x:1002:1002:,,,:/home/bbb:/bin/bash
hk@vm:~$ ls /home/
bbb hk
hk@vm:~$ sudo userdel bbb
hk@vm:~$ ls /home/
bbb hk我们来看一下 /etc/passwd 文件中的我们新创建的用户 bbb:
hk@vm:~$ cat /etc/passwd | grep bbb会发现用户已经删除了,但是用户目录没有删除,所以其实删除的时候可以加上 -r 选项。
7.3.2 deluser 实例
hk@vm:~$ cat /etc/passwd | grep bbb
bbb:x:1002:1002:,,,:/home/bbb:/bin/bash
hk@vm:~$ ls /home/
bbb hk
hk@vm:~$ deluser --remove-home bbb
/usr/sbin/deluser:只有 root 才能从系统中删除用户或组。
hk@vm:~$ sudo deluser --remove-home bbb
正在寻找要备份或删除的文件...
正在删除文件...
正在删除用户 'bbb'...
警告:组"bbb"没有其他成员了。
userdel: user bbb is currently used by process 80839
/usr/sbin/deluser:"/usr/sbin/userdel bbb"返回错误代码 8,退出。
hk@vm:~$ ls /home/
hk我们来看一下 /etc/passwd 文件中的我们新创建的用户 bbb:
hk@vm:~$ cat /etc/passwd | grep bbb会发现用户已经删除了。
8. 切换用户:su
8.1 使用格式
su 命令用于临时改变用户身份,具有其他用户的权限。普通用户可以使用 su 命令临时具有超级用户的权限;超级用户也可以使用普通用户身份完成一些操作,除 root 外,需要键入该使用者的密码。。当需要放弃当前用户身份,可以使用 exit 命令切换回来。 su 命令的一般语法格式为:
su [option] [USER [ARG]]【参数说明】
- option :选项。
| option | 说明 |
| - | 当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会切换为 root 用户。 |
| -f 或 --fast | 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh |
| -m -p 或 --preserve-environment | 执行 su 时不改变当前的工作环境(不使用切换用户的配置文件)。 |
| -c command 或 --command = command | 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者 |
| -s shell 或 --shell = shell | 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell |
| --help | 显示说明文件 |
| --version | 显示版本资讯 |
| -l 或 --login | 同 - 的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号(默认是 root)。 |
【注意】
使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。
例如,普通用户 hk 通过 su 命令切换成 root 用户,但没有使用 - 选项,这样情况下,虽然看似是 root 用户,但系统中的 $PATH 环境变量依然是 hk 的(而不是 root 的),因此当前工作环境中,并不包含 /sbin 、 /usr/sbin 等超级用户命令的保存路径,这就导致很多管理员命令根本无法使用。不仅如此,当 root 用户接受邮件时,会发现收到的是 hk 用户的邮件,因为环境变量 $MAIL 也没有切换。
8.2 使用实例
hk@vm:~$ su bbb
密码:
bbb@vm:/home/hk$9. 查看有哪些用户组
要想查看当前系统中有哪些用户组,有下边几种方式。
getent group # 方法一
cat /etc/group # 方法二
compgen -g # 方法三,只会显示用户名10. 查看用户在哪些组:groups
10.1 使用格式
group 命令用于查询用户所在的组。
groups [option] <user_name>10.2 使用实例
hk@vm:~$ groups hk
hk : hk adm cdrom sudo dip plugdev lpadmin sambashare11. 修改用户属性:usermod
11.1 使用格式
usermod 命令用来修改用户帐号的各项设定。
usermod [option1] [option2] <user_name>11.2 使用实例
usermod –d /home/newname –m –l newname oldname # 用户 oldname 改名为 newname,注意要同时更改家目录12. 修改文件权限:chmod
12.1 文件权限说明
Linux/Unix 的文件 调用权限分为三级 : 文件所有者( Owner )、用户组( Group )、其它用户( Other Users )。只有文件所有者和超级用户可以修改文件或目录的权限。
| file type | - | 代表文件 |
| d | 代表目录 | |
| Owner Group Other Users | r | read(可读) |
| w | write(可写) | |
| x | execute(可执行) | |
| - | 无权限 |
使用 ls -lh 就可以列出文件以及对应的权限,例如:
sumu@virtual-machine:~/work/alpha$ ls -l
total 4
drwxr-xr-x 16 sumu sumu 4096 Mar 2 17:25 imx6ull-app-demo-main我们可以使用绝对模式(八进制数字模式),符号模式 指定文件的权限。

12.2 使用格式
chmod 命令用于修改文件权限。
chmod [option] <mode> <file_name>【参数说明】
- option :选项。
| [-cfvR] | -c | 若该文件权限确实已经更改,才显示其更改动作 |
| -f | 若该文件权限无法被更改也不要显示错误讯息 | |
| -v | 显示权限变更的详细资料 | |
| -R | 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更) |
(1)八进制数字模式
要注意这里是三个八进制数,依次代表 Owner 、 Group 和 Other Users 。
# 三个 Octal_number 数字
Octal_number参数说明如下:
| Octal_number | 7 | 111 | rwx | 读 + 写 + 执行权限 |
| 6 | 110 | rw- | 读 + 写权限 | |
| 5 | 101 | r-x | 读 + 执行权限 | |
| 4 | 100 | r-- | 只有可读权限 | |
| 3 | 011 | -wx | 写 + 执行 权限 | |
| 2 | 010 | -w- | 只有可写权限 | |
| 1 | 001 | --x | 只有可执行权限 | |
| 0 | 000 | --- | 无权限 |
who operator permission参数说明如下:
| who | u | user: 文件所有者(Owner) |
| g | group: 文件所有者所在组(Group) | |
| o | others: 所有其他用户(Other Users) | |
| a | all: 所用用户, 相当于 ugo | |
| operator | + | 为指定的用户类型增加权限 |
| - | 去除指定用户类型的权限 | |
| = | 设置指定用户权限的设置,即将用户类型的所有权限重新设置 | |
| permission | r | 读,设置为可读权限 |
| w | 写,设置为可写权限 | |
| x | 执行权限,设置为可执行权限 | |
| X | 特殊执行权限, 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 | |
| s | setuid/gid: 当文件被执行时,根据 who 参数指定的用户类型设置文件的 setuid 或者 setgid 权限 | |
| t | 粘贴位,设置粘贴位,只有超级用户可以设置该位,只有文件所有者 u 可以使用该位 |
【注意】 有的文件修改权限时可能会需要管理员权限再能修改,此时可以加上 sudo 。
12.3 使用实例
chmod ugo+r file.sh # 将文件 file.sh 设为所有人皆可读取
chmod a+r file.sh # 将文件 file.sh 设为所有人皆可读取
chmod ug+w,o-w file1.sh file2.sh # 将文件 file1.sh 与 file2.sh 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入
chmod -R a+r * # 当前目录下的所有文件与子目录皆设为任何人可读取
chmod 664 file.sh # 对 file.sh 的所有者和用户组设置读写权限, 为其其他用户设置读权限