用户管理 #
Linux 是一个多用户平台,允许多个用户同时登录系统工作。但为了方便分配每个用户的权限,Linux 还支持用户组(Group)。组是多个用户的集合,组可以为成员们分配某一类权限。每个用户可以在多个组,这样就可以利用组给用户快速分配权限。
用户 #
Linux 系统的用户存放在 /etc/passwd 文件中。/etc/shadow 是用户密码相关的文件。
useradd:创建用户。useradd pooky添加了一个用户 pooky。id pooky验证 pooky 用户是否存在。root 用户的 uid 是0。普通用户的 uid 如果改为 0,那就会具有 root 用户的权限。-g:指定用户组。useradd -g group1 user2创建用户 user2 并加入到用户组 group1。添加用户时,不指定用户组,就会默认创建和用户名同名的用户组。
userdel:删除用户。userdel pooky删除用户 pooky。-r:会删除用户的 home 目录,否则会保留。
passwd:修改密码。passwd pooky设置用户 pooky 的密码。直接输入passwd会修改当前用户的密码。usermod:修改用户属性-d:修改用户 home 目录。usermod -d /hmoe/pookyh pooky把 pooky 的 home 目录改为pookyh。-g:修改用户组。usermod -g group1 pooky将 pooky 的用户组改为 group1。
chage:修改用户密码的过期信息。
用户组 #
Linux 用户组的信息存放在 /etc/group 文件中。
groupadd:创建用户组groupadd group1groupdel:删除用户组
用户切换 #
su切换用户su - user1,切换到用户 user1。-表示同时切换用户环境。exit退回上个用户。sudo以 root 用户身份执行命令。
visudo #
su 切换到 root 是需要密码的,如果普通用户想要使用 root 权限,就需要告诉他密码,这是有风险的。因此,就出现了 sudo。
sudo 命令,可以使 root 权限,有针对性授权给指定的普通用户,而且不需要告诉普通用户 root 的密码。使用 sudo 的前提就是通过配置 /etc/sudoers 文件来授权。
visudo 就是编辑 /etc/sudoers 文件的命令。
## Allows people in group pooky to run all commands
%pooky ALL=(ALL) ALL
## Without a password
%pooky ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the cdrom as root
%users ALL=/sbin/mount /mnt/cdrom, /sbin/unmount /mnt/cdrom
## Allows members of the usrs froup to shutdown this system
%users localhost=/sbin/shutdown -h now
上面的示例,%pooky 表示 pooky 用户组,如果要表示 pooky 用户,则去掉 %。
ALL=(ALL)表示在哪些主机可以执行哪些命令。Linux 可以通过 ssh 远程登录,也可以本地登录(localhost)。ALL 表示远程和本地登录都允许。localhost=/sbin/shutdown -h no表示本地主句只允许一条命令/sbin/shutdown -h now。- 如果多条命令用逗号分隔,
ALL=/sbin/mount /mnt/cdrom, /sbin/unmount /mnt/cdrom表示/sbin/mount /mnt/cdrom和/sbin/unmount /mnt/cdrom这两条命令允许执行。
- 如果多条命令用逗号分隔,
NOPASSWD: ALL表示普通用户执行管理员权限的密码不需要密码。只有一个ALL表示需要密码。
用户和用户组的配置文件 #
用户配置文件 /etc/passwd:
# 用户名:是否需要密码验证:UID:GID:注释:用户 home 目录:用户登录使用的命令解释器
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
# ...
root:x中x表示此用户有密码,真正的密码保存在/etc/shadow文件中。如果没有x,表示此用户没有密码。- 可以直接编辑这个文件来新建用户。比如添加一行
user1:x:1000:1000::/home/user1:/bin/bash,添加了 user1 用户。用户 home 目录需要手动创建。 - 可以修改 UID 来修改权限,比如把 UID 改为 0,用户就会拥有 root 权限。
/sbin/nologin表示不允许登录。
/etc/shadow 保存用户和密码信息,此文件只有 root 用户可以浏览和操作,最大限度地保证了密码的安全:
# 用户名:加密的密码:
root:$6$PcVZ4yj4vlMjqmkL$RUHwggR7gPD0SnjTF1WnStHi2If0hSJnc4M/oVTfD0omJxVGhQgnQhBKRNPiwcBSeL72IerSphnEVdaomgjx./::0:99999:7:::
bin:*:17492:0:99999:7:::
daemon:*:17492:0:99999:7:::
# ...
- 第二个部分的密码即使相同,但是显示也会不同,更加安全。
用户组配置文件 /etc/group:
# 用户组名:是否需要密码验证:GID:用户组中的用户列表
root:x:0:
bin:x:1:
daemon:x:2:
daemon2:x:3:bin,daemon2
# ...
- 用户组中的用户列表:如果为空,表示该用户组是这个用户的初始组,例如
daemon:x:2:就表示daemon这个用户组是用户daemon的初始组。每个用户只能属于一个初始组。