Linux 用户及用户组的基本管理

【概述】

Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问,另一方面也可以帮助用户组织文件,同时为用户提供安全性保护。

每个用户账号都拥有一个唯一的用户名和各自的口令,用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

实现用户账号的管理,要完成的工作主要有如下几个方面:
  1. 用户账号的添加、删除与修改。
  2. 用户口令的管理。
  3. 用户组的管理。

【用户的管理】

1.查看用户账号

查看用户账号用的是 who 命令,who 命令常用参数如下

参数 说明
-m 打印打开当前伪终端的用户的用户名、当前伪终端的序号及其启动时间
-q 打印当前登录用户数及用户名
-u 打印当前登录用户登录信息
-r 打印运行等级
-a 打印能打印的全部
-d 打印死掉的进程

以下图的 who -m 命令为例:

    1.输出的第一列表示打开当前伪终端的用户的用户名;

    2.第二列的 pts/0 中 pts 表示伪终端(所谓伪终端是相对于 /dev/tty ),伪终端是在当前图形用户界面使用 /dev/tty7 时每打开一个终端就会产生一个伪终端, pts/0 后面那个数字就表示打开的伪终端序;

    3.第三列则表示当前伪终端的启动时间。

Linux 用户及用户组的基本管理

2.创建用户

创建用户是在 root 权限下,使用 useradd 命令创建,其基本语法为:useradd [选项] 用户名

选项:

-c  指定一段注释性描述
-d 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g 指定用户所属的用户组
-G 指定用户所属的附加组

-s

Shell文件 指定用户的登录Shell
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号

例如:

Linux 用户及用户组的基本管理

创建好一个用户后即可用创建的用户登录,使用如下命令切换登录用户:su -l 用户名,然后输入刚刚设置的用户名的密码即可。

注意,为保证安全性,用户登录时输入密码是不可见的。

退出当前用户与退出终端方法相同,使用 exit 命令或者使用快捷键 Ctrl+D 均可。

Linux 用户及用户组的基本管理

注:除了使用 useradd 命令创建用户,还可以使用 adduser 命令创建,两个命令在不同的 Linux 发行版上有所不同。

  1. 在 CentOs 下 useradd 与 adduser 是没有区别的,都是在创建用户时在home下自动创建目录,没有设置密码,需要使用passwd命令修改密码。
  2. 而在 Ubuntu 下 useradd 在创建用户时不会在 /home 下自动创建与用户名同名的用户目录,且不会自动选择 shell 版本,也没有设置密码,需要使用 passwd 命令修改密码后才可登录;adduser 在创建用户会在 /home 下自动创建与用户名同名的用户目录,以及系统 shell 版本,并且会在创建时会提示输入密码,更加友好。

3.删除用户

如果一个用户的账号不再使用,可以从系统中删除。

删除用户账号实质就是将在 /etc/passwd 等系统文件中的该用户记录删除,必要时还删除用户的主目录。

删除一个已有的用户账号使用 userdel 命令,其格式为:userdel [选项] 用户名

常用的选项是 -r,其作用是将用户的主目录一起删除。

例如:

Linux 用户及用户组的基本管理

此命令删除用户 test 在系统文件中(主要是 /etc/passwd , /etc/shadow, /etc/group 等)的记录,同时删除用户的主目录。

4.修改用户

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录 Shell 等。

修改已有用户的信息使用 usermod 命令,其格式为:usermod [选项] 用户名

常用的选项包括 -c , -d , -m , -g , -G , -s , -u ,-o 等,这些选项的意义同 useradd 命令中的选项一样,可以为用户指定新的资源值。

具体的命令可以使用:usermod -h 命令,显示此命令的帮助信息。

例如:

Linux 用户及用户组的基本管理

5.用户口令的管理

用户管理的一项重要内容是用户口令的管理,用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

指定和修改用户口令的 Shell 命令是 passwd,超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。

命令的格式为:passwd [选项] 用户名

常见的选项有:

-l 锁定口令(锁定某一用户,使其不能登录,即禁用帐号)
-u 口令解锁
-d 使账号无口令(此命令将用户口令删除,这样用户下一次登录时,系统就不再询问口令)
-f 强迫用户下次登录时修改口令

注:

    1.如果是默认用户名,则修改当前用户的口令。

Linux 用户及用户组的基本管理

    2.如果是超级用户,可以用下列形式指定任何用户的口令:passwd 用户名

Linux 用户及用户组的基本管理

    3.普通用户修改自己的口令时,passwd 命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。

【用户组的管理】

每个用户都有一个用户组,简单的来说就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源,系统可以对一个用户组中的所有用户进行集中管理。

用户组的管理涉及用户组的添加、删除和修改,实质上就是对 /etc/group 文件的更新。

1.查看当前用户属于哪一用户组

语法格式:groups

Linux 用户及用户组的基本管理

可以看到,root 用户属于 root 用户组

2.增添一个新的用户组

增添新用户组的格式为:addgroup [选项] 用户组

常见选项有:

-g 
指定新用户组的组标识号(GID)
-o 一般与 -g 同时使用,表示新用户组的 GID 可以与系统已有用户组的 GID 相同

Linux 用户及用户组的基本管理

3.修改用户组的属性

修改用户组的属性语法如下:groupmod [选项] 用户组

常见选项有:

-g GID 为用户组指定新的组标识号
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同
-n -n新用户组 将用户组的名字改为新名字
Linux 用户及用户组的基本管理

此命令将组group1的组标识号修改为1002

4.删除一个已有的用户组

删除用户组格式为:groupdel 用户组

Linux 用户及用户组的基本管理


5.用户在用户组之间的切换

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。

语法格式为:newgrp  用户组

Linux 用户及用户组的基本管理

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。

6.将一个用户添加到已有的用户组

将一个已有用户 test 增加到已有用户组 group1、group2 中,使用户组成为该用户的附加用户组。

Linux 用户及用户组的基本管理

使用 geroups 命令可以看到,用户 test 属于 test、group1、group2 用户组。

usermod 命令中, -a 代表 append,即将用户添加到新用户组中而不必离开原有的其他用户组。该命令需要配合 -G 使用,指定用户的附加组。

如果要将 test 的主要用户组改为 group ,则直接使用 -g 选项

Linux 用户及用户组的基本管理