1、Linux系统用户
Linux系统上有三种类型的帐户:
1)root用户
root用户也被称为超级用户,将完全和不受约束的控制系统。超级用户可以不受任何限制地运行任何命令。该用户可以认为是越级系统管理员。
2)系统用户
系统帐户是操作特定于系统的组件所需的帐户,例如,邮件帐户和sshd
帐户。系统上的某些特定功能通常需要这些帐户,对它们的任何修改都可能对系统产生不利影响。
3)用户帐户
用户帐户为用户和用户组提供对系统的交互访问。一般用户通常分配给这类帐户,并且通常对关键的系统文件和目录有有限的访问权限。
Linux支持组帐户(Group Account)的概念,它从逻辑上将多个帐户分组。每个帐户将是另一个组帐户的一部分。Linux组在处理文件权限和进程管理中起着重要的作用。
2、管理用户和组
用户管理相关的文件主要有4个,如下:
1)/etc/passwd
/etc/passwd
中保存用户帐号和密码信息。也保存了Linux系统上关于帐户的大部分信息。
2)/etc/shadow
/etc/shadow
中保存对应帐户的加密密码。并不是所有的系统都支持这个文件。
3)/etc/group
/etc/group
文件包含每个帐户的组信息。
4)/etc/gshadow
/etc/gshadow
文件包含安全组帐户信息。
可以使用cat命令查看上述的文件内容,常用的用于创建和管理帐户和组的命令如下表:
命令 | 说明 |
useradd | 添加系统用户帐户 |
usermod | 修改账户属性 |
userdel | 删除系统帐户 |
groupadd | 添加用户组 |
groupmod | 修改用户组属性 |
groupdel | 删除系统用户组 |
2、创建用户组
创建用户之前我们需要创建对应的组,否则也可以利用系统中现有的组。在/etc/groups
文件中包含所有的组。所有默认组都是针对系统帐号的组,不建议对普通帐号使用。创建组的方法如下:
groupadd [-g gid [-o]] [-r] [-f] groupname
相关选项参数说明如下表:
命令选项 | 描述 |
-g GID | 指定基本组ID,此组得事先存在; |
-o | 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。 |
-r | 创建系统组 |
-f | 如果指定的组已经存在,该选项只会导致以成功状态退出。使用-g,如果指定的GID已经存在,则选择其他(唯一的)GID |
groupname | 要创建的组名 |
如果不指定任何参数,则系统使用默认值。
例如,
$ groupadd developers
3、修改组
要修改组,可以使用groupmod
命令:
groupmod -n new_modified_group_name old_group_name
可以将cjavapy
组名更改为developer
:
groupmod -n developer cjavapy
如果想要修改GID可以使用命令如下:
groupmod -g 561 developer
4、删除组
如果要删除已存在的组,只需要使用groupdel命令和组名。
例如,
groupdel developer
注意:groupdel developer
是只删除组,而不删除与组关联的文件。文件的所有者仍然可以访问这些文件。
5、创建用户
如果我们需要在Linux系统上添加一个用户的帐户,可以使用命令如下:
useradd -d homedir -g groupname -m -s shell -u userid accountname
相关选项参数说明如下表:
命令 | 描述 |
-d homedir | 指定帐户的主目录 |
-g groupname | 指定此帐户的用户组 |
-m | 如果主目录不存在,则创建它 |
-s shell | 指定此帐户的默认shell |
-u userid | 可以为这个帐户指定一个用户id |
accountname | 要创建的帐户名称 |
注意:如果不指定任何参数,则系统使用默认值。useradd
命令修改/etc/passwd
、/etc/shadow
和/etc/group
文件,并创建home目录。
例如,
useradd -d /home/cjavapy-g developers -s /bin/bash cjavapy
注意:如果创建用户指定的用户组不存在,则需要使用groupadd
命令进行添加。
用户登陆完成之后,需要使用passwd
命令为用户设置密码,
例如,
$ passwd cjavapy
Enter new UNIX password: //输入新密码,输入的密码不显示
Retype new UNIX password: //确认密码
passwd: password updated successfully
注意:可以使用相同的命令更改密码,不需要指定的帐户名。
6、修改帐户
usermod
命令可以从命令行对现有帐户进行更改。它使用与useradd
命令相同的参数,加上-l
参数,允许更改帐户名称。
例如,
将帐户名cjavapy
修改为dev
,也修改主目录为/home/dev
:
$ usermod -d /home/dev -m -l cjavapy dev
7、删除帐户
userdel
命令用于删除已存在的用户。使用这个需要谨慎一点,如果错删除了其它重要用户,会影响很大。
使用-r
选项,可以删除帐户的主目录和邮件文件,
例如,
userdel -r cjavapy