- Unix/Linux 初学者指南
- Unix/Linux - 首页
- Unix/Linux - 什么是Linux?
- Unix/Linux - 入门
- Unix/Linux - 文件管理
- Unix/Linux - 目录
- Unix/Linux - 文件权限
- Unix/Linux - 环境
- Unix/Linux - 基本实用程序
- Unix/Linux - 管道与过滤器
- Unix/Linux - 进程
- Unix/Linux - 通信
- Unix/Linux - vi编辑器
- Unix/Linux Shell编程
- Unix/Linux - Shell脚本
- Unix/Linux - 什么是Shell?
- Unix/Linux - 使用变量
- Unix/Linux - 特殊变量
- Unix/Linux - 使用数组
- Unix/Linux - 基本运算符
- Unix/Linux - 决策
- Unix/Linux - Shell循环
- Unix/Linux - 循环控制
- Unix/Linux - Shell替换
- Unix/Linux - 引号机制
- Unix/Linux - I/O重定向
- Unix/Linux - Shell函数
- Unix/Linux - 手册页帮助
- 高级Unix/Linux
- Unix/Linux - 标准I/O流
- Unix/Linux - 文件链接
- Unix/Linux - 正则表达式
- Unix/Linux - 文件系统基础
- Unix/Linux - 用户管理
- Unix/Linux - 系统性能
- Unix/Linux - 系统日志
- Unix/Linux - 信号和陷阱
Unix/Linux - 用户管理
在本章中,我们将详细讨论Unix中的用户管理。
Unix系统上有三种类型的账户:
根账户
这也被称为超级用户,并且对系统拥有完全且不受限制的控制权。超级用户可以运行任何命令而没有任何限制。此用户应被视为系统管理员。
系统账户
系统账户是系统特定组件操作所需的账户,例如邮件账户和sshd账户。这些账户通常需要用于系统上的某些特定功能,并且对它们的任何修改都可能对系统产生不利影响。
用户账户
用户账户为用户和用户组提供对系统的交互式访问。普通用户通常被分配到这些账户,并且通常对关键系统文件和目录的访问权限有限。
Unix支持组账户的概念,该概念在逻辑上将多个账户分组。每个账户都将是另一个组账户的一部分。Unix组在处理文件权限和进程管理方面起着重要作用。
管理用户和组
主要有四个用户管理文件:
/etc/passwd - 保存用户账户和密码信息。此文件保存了有关Unix系统上账户的大部分信息。
/etc/shadow - 保存相应账户的加密密码。并非所有系统都支持此文件。
/etc/group - 此文件包含每个账户的组信息。
/etc/gshadow - 此文件包含安全的组账户信息。
使用cat命令检查所有上述文件。
下表列出了大多数Unix系统上可用于创建和管理账户和组的命令:
序号 | 命令及描述 |
---|---|
1 |
useradd 向系统添加账户 |
2 |
usermod 修改账户属性 |
3 |
userdel 从系统中删除账户 |
4 |
groupadd 向系统添加组 |
5 |
groupmod 修改组属性 |
6 |
groupdel 从系统中删除组 |
您可以使用手册页帮助检查此处提到的每个命令的完整语法。
创建组
我们现在将了解如何创建组。为此,我们需要在创建任何账户之前创建组,否则,我们可以使用系统中现有的组。我们在/etc/groups文件中列出了所有组。
所有默认组都是特定于系统账户的组,不建议将它们用于普通账户。因此,以下是创建新组账户的语法:
groupadd [-g gid [-o]] [-r] [-f] groupname
下表列出了参数:
序号 | 选项及描述 |
---|---|
1 |
-g GID 组ID的数值 |
2 |
-o 此选项允许添加具有非唯一GID的组 |
3 |
-r 此标志指示groupadd添加系统账户 |
4 |
-f 此选项导致仅在指定组已存在时以成功状态退出。使用-g,如果指定的GID已存在,则选择其他(唯一)GID |
5 |
groupname 要创建的实际组名 |
如果未指定任何参数,则系统使用默认值。
以下示例使用默认值创建了一个developers组,这对于大多数管理员来说都是可以接受的。
$ groupadd developers
修改组
要修改组,请使用groupmod语法:
$ groupmod -n new_modified_group_name old_group_name
要将developers_2组名更改为developer,请输入:
$ groupmod -n developer developer_2
以下是如何将financial的GID更改为545:
$ groupmod -g 545 developer
删除组
我们现在将了解如何删除组。要删除现有组,您只需要groupdel命令和组名即可。要删除financial组,命令为:
$ groupdel developer
这仅删除组,而不删除与该组关联的文件。文件仍然可以由其所有者访问。
创建账户
让我们看看如何在您的Unix系统上创建新账户。以下是创建用户账户的语法:
useradd -d homedir -g groupname -m -s shell -u userid accountname
下表列出了参数:
序号 | 选项及描述 |
---|---|
1 |
-d homedir 指定账户的主目录 |
2 |
-g groupname 为该账户指定一个组账户 |
3 |
-m 如果主目录不存在,则创建它 |
4 |
-s shell 为该账户指定默认shell |
5 |
-u userid 您可以为该账户指定用户ID |
6 |
accountname 要创建的实际账户名 |
如果未指定任何参数,则系统使用默认值。useradd命令修改/etc/passwd、/etc/shadow和/etc/group文件并创建主目录。
以下示例创建了一个mcmohd账户,将其主目录设置为/home/mcmohd,并将组设置为developers。此用户将分配Korn Shell。
$ useradd -d /home/mcmohd -g developers -s /bin/ksh mcmohd
在发出上述命令之前,请确保您已使用groupadd命令创建了developers组。
创建账户后,您可以使用passwd命令设置其密码,如下所示:
$ passwd mcmohd20 Changing password for user mcmohd20. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
当您键入passwd accountname时,它会为您提供更改密码的选项,前提是您是超级用户。否则,您可以使用相同的命令更改您的密码,但无需指定您的账户名。
修改账户
usermod命令使您能够从命令行对现有账户进行更改。它使用与useradd命令相同的参数,以及-l参数,该参数允许您更改账户名。
例如,要将账户名mcmohd更改为mcmohd20并相应地更改主目录,您需要发出以下命令:
$ usermod -d /home/mcmohd20 -m -l mcmohd mcmohd20
删除账户
userdel命令可用于删除现有用户。如果使用不当,这是一个非常危险的命令。
该命令只有一个参数或选项.r,用于删除账户的主目录和邮件文件。
例如,要删除账户mcmohd20,请发出以下命令:
$ userdel -r mcmohd20
如果要出于备份目的保留主目录,请省略-r选项。您可以根据需要在以后删除主目录。