在Linux系统中root账号一般是指管理员,它拥有操作整个系统的所有权限,但是要注意的是root账号之所以是管理员并不是根据它的名字是否是root来判断,而是要看这个账号的UID(User IDentification)
是否为0,在Linux系统中所有的用户的有一个唯一的UID,所以root账号的UID一定是0。
下面是UID数值区间的含义。
- 0,系统的管理员用户。
- 1-999,系统用户,Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
- 1000开始,是由管理员创建的用于日常工作的用户。
可以使用id
命令来查看用户的信息
[test@VM_0_11_centos dev]$ id test
uid=1000(test) gid=1001(test1) groups=1001(test1),0(root)
也可以使用cat /etc/passwd | cut -f 1,3,4 -d :
来查看所有的用户,其中UID大于999的都是普通用户。
test:1000:1001
test1:1001:0
test2:1002:1002
test3:1003:1001
test4:1004:1004
为了便于管理多个用户,Linux系统中拥有用户组的概念,也就是将多个用户划分为同一组,然后使用GID(Group IDentification)
统一管理用户组中所有的用户。
可以使用groupadd
命令用于创建用户组,格式为groupadd [选项] 群组名
groupadd test
也可以使用cat /etc/group
命令来查看系统中所有的用户组,同样GID大于999的都是普通用户组
test1:x:1001:
可以使用groupdel 群组名
命令来删除指定的用户组。
groupdel test
useradd
命令可以创建用户,格式为useradd [选项] 用户名
,创建的时候会默认将家目录放在/home
目录下,默认的shell解释器为/bin/bash
,并且如果没有指定用户组会默认的创建一个用户同名的基本用户组,下面是一些常用的参数命令。
- -d,指定用户的家目录(默认为/home/username)
- -e,账户的到期时间,格式为 YYYY-MM-DD
- -u,指定该用户的默认UID
- -g,指定一个初始的用户基本组(必须已存在)
- -G,指定一个或多个扩展用户组
- -N,不创建与用户同名的基本用户组
- -s,指定该用户的默认Shell解释器,此处如果指定/sbin/nologin,则该用户无法登陆。
usermod
命令可以修改用户的属性,例如用户基本组或用户扩展组等等,格式为usermod [选项] 用户名
,其本质上其实是修改/etc/passwd
文件,因为所有的用户信息都存放在这个文件中,直接编辑这个文件也可以修改用户的一些配置,下面是一些常用的参数命令。
- -c,填写用户账户的备注信息
- -d -m,参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
- -e,账户的到期时间,格式为 YYYY-MM-DD
- -g,变更所属用户组
- -G,变更扩展用户组
- -L,锁定用户禁止其登录系统
- -U,解锁用户,允许其登录系统
- -s,变更默认终端
- -u,修改用户的 UID
值得注意的是-g
命令和-G
命令,在创建用户的时候可以使用这两个命令添加指定的基本用户组和扩展用户组,如果不使用这两个参数则默认会有一个同名的基本用户组,这里修改也是分别修改基本用户组和扩展用户组。
userdel
命令用于删除用户,格式为userdel [选项] 用户名
,下面是一些常用的参数命令。
- -f,强制删除用户
- -r,同时删除用户及用户家目录
passwd
命令用于修改用户密码、过期时间、认证信息等,格式为passwd [选项] [用户名]
,下面是一些常用的参数命令。
- -l,锁定用户,禁止其登录
- -u,解除锁定,允许用户登录
- --stdin,允许通过标准输入修改用户密码,如 echo "NewPassWord" | passwd --stdin Username
- -d,使该用户可用空密码登录系统
- -e,强制用户在下次登录时修改密码
- -S,显示用户的密码是否被锁定,以及密码所采用的加密算法名称
root用户可以直接修改普通用户的密码,格式为passwd [用户名]
。
passwd test