10分钟Linux-用户管理

U

NIX是一个多用户多任务(Multiple-User and Multiple-Tasking)的操作系统,也就是说 UNIX 可以在同一时间提供给很多人使用;而且每一个用户同时间又可以执行多项工作。为了避免不合法的用户滥用 UNIX 的系统资源,于是 UNIX 一开始就发展出账号的机制,以便让 UNIX 系统能够辨识用户的身份,从而决定用户在 UNIX 系统上的权限。

Linux是一套免费使用和自由传播的类Unix操作系统,因此,Linux也会提供账号的机制。

01

什么是账号?

账号(Account),是一种用来记录单个用户或是多个用户的数据。Linux中每一个合法的用户都必须要拥有账号,才能使用 Linux。这是因为Linux 必须依靠账号来验证用户的身份,以及决定用户可以在Linux 上从事哪些工作。

02

账号的分类

在Linux上账号可以分为两类:

1

用户账号:用来储存单一用户的数据,你可以使用一个用户账号,来储存某一个用户的数据。

2

组账号:用来储存多个用户的信息,每一个群组账号可以用来记录一组用户的数据。

我们还可以把Linux的所有账号按照账号的位置和账号的功能进行分类。

按照账号的位置

本机账号:存储于本机硬盘中的账号数据,我们称为本机账号(Local Account)。本机账号使用范围局限在账号建立的 Linux 系统上,如果超出范围时,比如调用其他计算机时,本机账号将无法使用。

域账号:你也可以把大量的计算机组织成为一个域(Domain),然后在域中的某一台Linux 上建立账号数据,并且通过LDAP通信协议将账号数据分享出来。当其他计算机需要取得账号数据时,再通过网络调用这些分享的账号即可。这种账号我们称为域账号 (Domain Account)。

按照账号的功能

无论是本机账号还是域账号,按照账号的功能可以分为如图几类:

用户账号部分:包含了超级用户、系统用户和普通用户

超级用户:超级用户(Superuser)在 Linux 系统上拥有完整的控制能力,你可以利用超级用户读取或写入 Linux 上任何文件、安装或删除软硬件、启动或停止服务,甚至关机与停止系统的执行。

系统用户:系统账号主要是提供给 Linux 系统本身使用。为了满足某些软件使用特定的账号运行,创建的账号。例如:运行MySQL的mysql账号。

普通用户:普通账号主要是用户登录到Linux系统的账号,普通账号在Linux系统上会受到权限和权力的限制,只能调用具备权限的文件,如果没有足够的权限,普通用户是完全无法调用的。

组账号部分:包含了超级用户组、系统组以及普通组三大类。

超级用户组:Linux 有一个叫做 root 的群组,因为这个群组的名称与 root 这个超级用户(Superuser)的名称相同,所以,我们习惯把 root 群组叫做超级用户群组 (Superuser Group)。

系统用户组:与系统账号一样,系统群组(System Group)也是给 Linux 系统本身,或是某个软件所使用。

普通用户组:普通用户组和普通用户相对应,通常,默认创建一个普通用户会创建一个同名的普通用户组,我们将这个组称为“主要组”

03

用户账号管理命令

Linux系统下提供了useradd、usermod和userdel命令来实现添加、修改和删除账号。

3.1

添加用户账号:useradd

如果你要添加一个用户的账号,你可以使用 useradd 这个工具。

命令语法

useradd [-u UID [-o]] [-g GROUP] [-G GROUPS... ] [-d HOME][-s SHELL] [-c COMMENT] [-p PASSWORD] [-n] [-r] [[-m] | [-M]] USERNAME

useradd命令参数详细意义如下:

举个例子

使用useradd命令,我们以创建jinlong账号为例:

# id jinlong

id: jinlong: No such user

# useradd jinlong

# id jinlong

uid=610(jinlong) gid=610(jinlong) groups=610(jinlong)

① 先检查是否有 jinlong 这个用户账号,结果告诉我们此用户不存在。

② 使用 useradd 建立出 jinlong 用户账号,这里全部采用默认值。

③ 再次查询 jinlong账号数据,就能显示 jinlong的帐户信息,因此,useradd已经帮我们建立出 jinlong 这个账号了。

3.2

修改用户账号:usermod

要修改账号的数据,你可以使用 usermod 命令。

命令语法

usermod [-u UID] [-g GROUP] [-G GROUPS... ] [-d HOME] [-s SHELL]

[-c COMMENT] [-l NEWNAME] [[-L] | [-U]] USERNAME

usermod 与 useradd 使用的参数很多是相同的,因此,你可以在 usermod 使用useradd命令提到的各种参数。usermod 另外还提供下列几个:

举个例子

使用usermod命令修改jinlong账号的UID为1000为例

# id jinlong

uid=610(jinlong) gid=610(jinlong) groups=610(jinlong)

# ls -lnd /home/jinlong/

drwx------ 2 608 610 4096 Jun 14 15:10/home/jinlong/

# usermod -u 1000 jinlong

# id jinlong

uid=1000(jinlong) gid=610(jinlong) groups=610(jinlong)

# ls -lnd /home/jinlong/

drwx------ 2 1000 610 4096 Jun 14 15:10/home/jinlong/

① 先查询一下目前 jinlong的帐户信息,请注意,此时 jinlong的 UID 为 610。

② 检查一下 jinlong 的主目录,目前的属主也是 jinlong。

③ 接着使用 usermod 将 jinlong 的 UID 修改成为 1000。

④ 你会发现,jinlong 的 UID 变成 1000 了!

⑤ 而且jinlong 的家目录也会自动的修改属主的 UID 的。

用户经常使用 usermod 的时候,主要是用于修改用户的次要组(Secondary Groups)信息。在 Linux 中,你使用 usermod -G 可以修改用户次要群组的内容。

以users和mail组为jinlong的次要组为例:

# id jinlong

uid=1000(jinlong) gid=610(jinlong) groups=610(jinlong)

# usermod -G users,mail jinlong

# id jinlong

uid=1000(jinlong) gid=610(jinlong) groups=610(jinlong),12(mail),100(users)

# usermod -G '' jinlong

# id jinlong

uid=1000(jinlong) gid=610(jinlong) groups=610(jinlong)

① 目前 jinlong 只有一个次要组:jinlong。

② 使用 usermod -G 为 jinlong 增加 users 与 mail两个次要组。

③ 现在 jinlong 就有 jinlong、users 与 mail 三个次要群组了。

④ 接着删除 users 与 mail这些次要组。由于 usermod 不提供直接删除次要群组的方法,所以我们必须要指定“设置后的次要群组内容”!

⑤ 最后,jinlong 只剩下 jinlong 这个次要组了。

3.3

删除用户账户:userdel

要删除用户账号,你可以使用 userdel 命令。

命令语法

userdel [-r] USERNAME

userdel 命令只有一个 -r 的参数,这个参数是用来删除用户的下列数据:

用户的主目录 (Home Directory)

用户的邮箱

在 Linux 系统中,-r 参数默认是停用的,也就是说,除非特别指定,否则 Linux 将不会删除用户的个人资料。

举个例子

以下是使用userdel命令删除jinlong这个账号为例:

# id jinlong

uid=1000(jinlong) gid=610(jinlong) groups=610(jinlong)

# userdel -r jinlong

# id jinlong

id: jinlong: No such user

① 先查询 jinlong账号是否存在,通过输出的的信息,jinlong账号的确存在。

② 使用用 userdel -r 把 jinlong 账号删除。

③ 再查询一次,jinlong 账号已经找不到了,说明成功删除。

关注我们

云运维联盟

专注Linux云平台运维

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180614G22H3500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券