Linux是多用户多任务的操作系统,用户(user)和用户组(group)的管理是学习和使用Linux的需要了解和掌握的基础之一。
用户管理常用命令
用户在系统中是分角色的。在Linux系统中,由于角色不同,权限和所完成的操作也是不一样的。用户的角色通过UID进行区别标识。Linux中的用户可分为三类,分别如下:
- 超级用户:该用户既可以登录系统,也可以操作系统任何文件和命令,拥有最高的权限,如root。
- 一般用户:这一类型的用户可以登录系统,但只能操作其根目录的内容,权限受到限制,这种类型的用户一般是通过系统管理员自行添加。
- 虚拟用户:这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、ftp、mail等,这种类型的用户是系统自身拥有的,而非后来添加的。当然也可以自行添加虚拟用户。
Linux中用户管理的常用命令有:
- useradd或adduser:添加用户
- usermod:修改用户
- userdel:删除用户
- passwd:修改密码
添加用户-useradd/adduser
useradd和adduser是两个等价的命令,都是用来添加用户,基本语法格式如下所示:
useradd [参数] 用户名
执行上面的命令之后,将在系统执行以下操作:
- 1、在/etc/passwd文件中添加一行记录
- 2、在/home目录中创建新建用户的主目录
该命令的详细参数如下所示:
参数 | 功能 |
---|---|
-g [群组] | 用于添加用户账号时指定该用户的私有组。如不指定-g参数,则将自动建立与用户账号同名的组做为该账号的私有组 |
-G [群组] | 用于添加附属组 |
-D | 用于显示或变更useradd所使用的默认值 |
-d [目录] | 指定用户主目录,如果该目录不存在,则同时使用-m创建主目录 |
-m | 若使用者目录不存在,则自动创建 |
-u UID | 指定用户的UID,UID值不能为负值,预设值最小不能小于99而逐次增加。0~99传统上保留给系统账号使用 |
使用useradd/adduser命令添加用户时,系统将为用户创建一个同名的用户组,称为私有组,这样是为了能让新用户和其他用户隔离,确保安全。如果需要改变私有组的名字,则使用-g参数完成。
示例
修改用户-usermod
usermod命令是用来修改用户账号的各种属性,如用户主目录、私有组、登录Shell等内容。基本语法格式如下:
usermod [参数] 用户名
主要参数如下所示:
参数 | 功能 |
---|---|
-d [目录] | 修改用户登入时候的目录 |
-e [天数] | 修改账号的有效期限 |
-g [群组] | 修改用户所属的群组 |
-l [登录名] | 变更用户登录时的名称 |
-l [密码] | 修改用户密码 |
-s [shell] | 指定用户登录的Shell,如果不设置,则选用系统预设的Shell |
需要注意的是,最好不要使用usermod命令修改用户密码。因为如果使用该命令,则显示在文件/etc/shadow中的密码是明文密码,推荐使用passwd命令修改密码。
示例
删除用户-userdel
userdel命令比较简单,只有一个参数-r,如果在使用userdel时添加该参数,则删除用户时,会将/home目录下的该用户目录和文件一并删除。
示例
修改密码-passwd
passwd的语法格式如下所示:
passwd [参数] [用户名]
主要参数如下所示:
参数 | 功能 |
---|---|
-l | 锁定用户,即禁止使用该账号 |
-u | 用户口令解锁 |
-d | 关闭用户的密码确认功能,在用户登录时可以不用输入密码,只有具备root权限的用户才能使用 |
-f | 强制用户下次登录时修改密码 |
示例
用户组常用命令
用户组就是具有相同特征的用户集合。用户和用户组的关系是多对多的,即一个用户可以属于多个用户组,而用户组也可以包含多个用户。在Linux中每个文件都有一个用户组,当创建一个文件或目录时,系统会赋予其一个用户组关系。
Linux中用户组管理的常用命令有:
- groupadd:添加用户组
- groupmod:修改用户组
- groupdel:删除用户组
添加用户组-groupadd
groupadd可指定用户组名称来新建用户组。其语法格式如下所示:
groupadd [参数] [用户组名称]
参数 | 功能 |
---|---|
-g GID | 除非使用参数 -o,否则GID值必须唯一且数值不可以为负 |
-o GID | 运行GID不唯一 |
-r | 加入组GID号,且GID号低于499系统账号 |
示例
如果使用groupadd命令时不设置GID号,如下所示:
groupadd TestGroup
则在系统中新建用户组TestGroup,新组的标识GID则在当前最大组标识的基础上加1
修改用户组-groupmod
groupmod可用来修改当前用户组的名称,语法格式如下所示:
groupmod [参数] [用户组名称]
参数 | 功能 |
---|---|
-g GID | 修改为新的GID |
-o GID | 重复使用GID |
-n | 修改用户组名称 |
示例
删除用户组-groupdel
groupdel是用来删除已有的用户组,其语法格式如下所示:
groupdel [用户组名称]
groupdel命令使用比较简单,有一点需要注意的是,如果该用户组包含有一些用户,则必须先删除这些用户,才能删除该用户组。