Linux操作系统是多任务(Multi-tasks)多用户(Multi-users)分时操作系统,linux操作系统的用户就是登录到linux的权限;每当我们使用用户名登录操作系统时,linux都会对该用户进行认证、授权审计等操作。操作系统为了识别每个用户,会给每个用户定义一个ID,就是UID。用户组就相当于多个用户的容器;在linux系统中,用户组也有一个ID,GID。本文主要介绍Linux 用户和组管理。
1、Linux系统用户
Linux系统上有三种类型的帐户:
1)root用户
root用户也被称为超级用户,将完全和不受约束的控制系统。超级用户可以不受任何限制地运行任何命令。该用户可以认为是越级系统管理员。
2)系统用户
系统帐户是操作特定于系统的组件所需的帐户,例如,邮件帐户和sshd帐户。系统上的某些特定功能通常需要这些帐户linux操作系统怎么样,对它们的任何修改都可能对系统产生不利影响。
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
删除系统用户组
参考文档:Linux shell man命令查看帮助文档
2、创建用户组
创建用户之前我们需要创建对应的组删除linux用户,否则也可以利用系统中现有的组。在/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命令和组名。
例如删除linux用户,
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文件红旗linux系统下载,并创建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