内容


Linux 新用户的基本任务

Linux 安装好后,下一步该做什么?

Comments

简介

如果您是一位想尝试 Linux 的 Windows 用户,而且您是 Linux 新手,那么本教程很适合您。我们将介绍一些基本任务,它们可能与您的习惯不同。本文涉及以下任务:

登录
登录并理解 Linux 桌面
导航和设置
调整设置以满足您的个人需求
命令行访问
当您的确需要在命令行上工作时
成为超级用户(或根用户)
当普通用户的权限不够用时
作为另一个用户使用一个 GUI 应用程序
熟悉多用户系统功能
可移除设备
使用可移除媒体,确保断开可移除设备时不会丢失数据
注销
当您完成任务一段时间之后,或者需要一个面板图标用于注销或使用其他应用程序时
添加用户或用户组
向您的系统添加更多用户或用户组

这些指南和示例主要关注三个流行发行版及其默认图形桌面:

  • Fedora 14,使用一个 GNOME 桌面
  • OpenSUSE 11.3,使用一个 KDE 4 桌面
  • Ubuntu 10.10,使用一个 GNOME 桌面

还有其他一些发行版、桌面和窗口管理器,我们鼓励您自己进一步探索。即使本文提供的部分信息特定于某个特殊发行版,甚至特定于某个发行版的某个特殊版本,您在这里所了解的信息应该有助于您理解一个怪异的发行版。本教程的目的是帮助您入门,因此您不会看到关于重新编译内核或安装软件等高级任务的信息。 我们推荐您参阅我们免费的 学习 Linux,101:LPIC-1 路线图 了解更多信息。

在本文撰写之时,GNOME 3 可能不久将面市。本文描述的内容可能与该用户界面不符。

在使用本文的指南之前,应安装一个 Linux 系统并在您的安装过程中至少创建一个非根 用户。

登录

安装 Linux 发行版并启动系统之后,您可能会自从登录,也可能会看到一个登录界面。下一节将展示如何在这两种启动方法之间切换并讨论自动登录的安全影响。至于本小节,我们假定您已经登录。本教程讨论的三个系统实现登录的方式略微不同,但它们都将提示一个或多个用户的姓名。选中一个用户后,需要输入密码。

登录界面

登录界面外观因 Linux 发行版不同而不同,但它们都允许进一步定制,这可能不会让人感到惊讶,但我们不会在这样短的教程内介绍如何定制。Ubuntu 10.10 系统的一个典型登录界面如 图 1 所示,Fedora 14 的如 图 2 所示。这两个图示还展示了这些系统上使用的默认 GNOME 桌面。

图 1. Ubuntu 10.10 登录界面
Ubuntu 10.10 登录界面
Ubuntu 10.10 登录界面
图 2. Fedora 14 登录界面
Fedora 14 登录界面
Fedora 14 登录界面

OpenSUSE 11.3 系统的典型登录界面和默认 KDE 4 桌面如 图 3 所示。

图 3. OpenSUSE Linux 11.3 登录界面
OpenSUSE Linux 11.3 登录界面
OpenSUSE Linux 11.3 登录界面

当您输入或选择一个 ID 并按下 Enter 键时,将提示输入密码。如果登录界面显示一个密码域(如这里的 OpenSUSE 示例所示),您可以选择密码域并输入您的密码。如果一个显示的 ID 没有输入域,且您需要输入一个可用 ID 列表中没有的 ID,您通常会看到一个类似 “other...” 的条目,如 图 2 所示。选择该条目,您应该会看到该 ID 的输入域。我们将在 成为超级用户(或根用户) 小节中进一步讨论这一点。

登录界面上可能还有其他项,其中包括一个时钟,可能还有系统名称,以及允许关闭或重启系统的图标或命名菜单。

辅助功能

GNOME 桌面上有一个小图标,看起来像一个人位于一个圆圈中。单击该图标,您将看到一个可访问性选项对话框,包含屏幕键盘或大字体等选项。图 4 展示了 Fedora 系统的一个示例。这些选项用于放大 图 2 中显示的登录屏幕中的文本,使其更容易阅读。

图 4. Fedora 登录辅助功能选项
Fedora 登录辅助功能选项
Fedora 登录辅助功能选项

桌面界面

键入密码并再次按下 Enter 键后,应该会成功登录并看到您的桌面。图 5 显示用户 ian 在 Ubuntu 10.10 系统上可能看到的界面:屏幕顶部有一个面板,底部还有一个面板。要探索这个桌面,将鼠标移动到这些图标上方并单击它们。

注意: 下面三个图像旨在使您对您的桌面的外观有感性认识。如果您看不清图像中的内容,不必担心。

图 5. Ubuntu 10 和 GNOME 桌面的样例初始窗口
Ubuntu 10 和 GNOME 桌面的样例初始窗口
Ubuntu 10 和 GNOME 桌面的样例初始窗口

Fedora 14 也使用 GNOME 桌面。在 图 6 中,我们单击顶部面板左侧的 System 图标,然后选择 Preferences。当我们将鼠标移动到子菜单的 Desktop Effects 选项之上时,将显示 Select desktop effects。您可以在这里选择桌面效果,比如在桌面上移动窗口时窗口边缘抖动。注意,这需要 3D 图形功能,可能需要一个非开源图形卡。

图 6. Fedora 14 和 GNOME 桌面的样例初始窗口
Fedora 14 和 GNOME 桌面的样例初始窗口
Fedora 14 和 GNOME 桌面的样例初始窗口

图 7 显示 OpenSUSE 和 KDE 4 桌面的样例初始窗口。

图 7. SUSE Linux 和 KDE 桌面的样例初始窗口
SUSE Linux 和 KDE 桌面的样例初始窗口
SUSE Linux 和 KDE 桌面的样例初始窗口

相对较新的 KDE 4 桌面使用一个不同的导航隐喻(navigation metaphor),导航和设置 小节将详细介绍相关内容。注意,Desktop Folder 的窗口菜单滑到窗口左侧或右侧,而不是固定在顶部。

导航和设置

我们首先了解一下桌面上的 Linux 面板,然后查看导航和一个桌面定制示例,该示例通过切换到左手鼠标使用展示如何定制桌面。

桌面面板

面板提供与桌面交互的出发点和系统相关信息,桌面上通常有一两个面板。通常,这些面板将默认位于屏幕顶部、底部或同时位于顶部和底部。如果愿意,也可以将它们移动左边或右边,方法通常是单击面板并更改属性。

不同的发行版和桌面通常拥有不同的面板布局,因此实际情况可能与这里的介绍不同。我们的 Ubuntu GNOME 面板如 图 8 所示。为了更清晰,我们显示了面板的末端。

图 8. Ubuntu 上的 GNOME 面板功能
Ubuntu 上的 GNOME 面板功能
Ubuntu 上的 GNOME 面板功能
  • 顶端面板的左边部分提供了一个访问程序、文件夹(目录)或系统设置和信息的出发点。
  • 顶部面板的右边部分提供一些信息,比如时间、日期、以及几个快速访问按钮,用于访问一些功能,比如设置卷控制、打开图表窗口、注销。
  • 底部面板的左边部分有一个按钮用于隐藏所有窗口以显示桌面,还有几个按钮用于激活窗口。
  • 底部面板的右边部分包含一个回收站和 4 个矩形,后者用于在虚拟桌面间导航。大多数 Linux 系统都设置多个不同的桌面,比如,您可以在一个桌面上收发电子邮件和浏览 web,在一个桌面上进行程序开发,在另一个桌面上进行测试。要在桌面之间切换,可以单击适当的小方框,或者使用组合键。对于 GNOME,Ctrl-Alt-左箭头Ctrl-Alt-右箭头 通常以 Alt-tab 在桌面上的应用程序窗口之间循环的方式循环桌面。对于 OpenSUSE,ctrl-F1ctrl-F4 直接选择桌面 1 到 4。浏览时,确保您作为非根用户登录,以避免意外错误;这类错误在您拥有无限权限时通常更严重。

我们的 Fedora 系统的面板如 图 9 所示。左上方的 System 项被选中,因为我们使用了 图 6 中的图像来创建这个图像。注意,我们没有快捷方式来访问右上方的注销功能、左下方的隐藏所有窗口功能或 Ubuntu 面板的右下方的回收站图标。相反,这个面板布局基本相似。

图 9. Fedora 上的 GNOME 面板功能
Fedora 上的 GNOME 面板功能
Fedora 上的 GNOME 面板功能

OpenSUSE 系统只有一个面板横跨屏幕底部,如 图 10 所示。对程序、文件夹和系统功能的访问从最左边的大按钮开始,我们将该按钮称为开始 按钮。开始按钮右边是一些快速访问按钮,用于访问浏览器和桌面导航器;再右边是 5 个虚拟桌面的对应按钮。面板最右侧是一个时钟和几个方便的按钮,类似于 Ubuntu GNOME 顶端面板右边的按钮。

图 10. OpenSUSE 上的 KDE 4 面板功能
OpenSUSE 上的 KDE 4 面板功能
OpenSUSE 上的 KDE 4 面板功能

导航

GNOME 2.3x 桌面使用现在常见的层叠式菜单。图 11 展示如何从 Fedora System 图标访问鼠标设置。不同发行版的菜单安排方式不同。例如,“鼠标设置” 在 Ubuntu 上和 Fedora 上位于相同的位置;但 Desktop Effects 首选项在 Ubuntu 上位于 System->Preferences->Desktop Effects 之下,在 Fedora 上则是 System->Preferences->Appearance 下的 Visual Effects 选项卡。浏览图形应用程序通常就像翻开不同的石头,看看下面藏着什么。

图 11. 访问 Fedora 中的鼠标设置
访问 Fedora 中的鼠标设置
访问 Fedora 中的鼠标设置

相反,KDE 4 桌面使用一个不同的 Start 菜单隐喻。菜单面板互相替代,导航方法是单击菜单中的项,或将鼠标移动到于菜单底部的图标上。图 12 显示了 FavoritesApplications 菜单。

图 12. 鼠标位于图标上方时 KDE 4 菜单改变
鼠标位于图标上方时 KDE 4 菜单改变
鼠标位于图标上方时 KDE 4 菜单改变

子菜单(比如从 Start->Applications->Utilities)被选中时,子菜单左边将出现一个回退按钮,以便返回上一级菜单,如 图 12 所示。

图 13. KDE 4 菜单回退按钮
KDE 4 菜单回退按钮

OpenSUSE 上的有些 Start 菜单项会打开一个对话框,可能包含进一步选项。Start->Applications->Configure Desktop 菜单就是这样的例子,该菜单打开一个如 图 14 所示的窗口,其中显示了 Keyboard & Mouse 设置菜单项的鼠标移动帮助。

图 14. KDE 4 Configure Desktop 菜单
KDE 4 Configure Desktop 菜单
KDE 4 Configure Desktop 菜单

切换到左手鼠标使用

系统通常假定用户习惯使用右手操作鼠标,但可以更改鼠标配置为左手使用,还可以更改其他很多桌面设置。请参见 图 11 或 图 14 导航到鼠标设置对话框。

在 Ubuntu 系统上,应该能看到一个类似于 图 15 的窗口,可以在其中更改鼠标设置。除了基本的左手和右手使用外,还有其他几个可以更改的设置,以及一个包含其他辅助选项设置的选项卡。设置立即生效,因此,一旦单击左手选项,鼠标就被设置为左手使用,必须将鼠标右键作为第一键来关闭对话框。Fedora 系统上的对话框与此类似。

图 15. 更改鼠标设置的 GNOME 对话框
更改鼠标设置的 GNOME 对话框
更改鼠标设置的 GNOME 对话框

在 OpenSUSE 系统的 KDE 桌面上,用于更改鼠标设置的窗口应该类似于 图 16 所示。请注意对话框中的鼠标图像。如果切换到左手使用,鼠标图示中的右键将突出显示,表明它是主要选择按钮。切换回右手使用时,鼠标左键将突出显示。与 Ubuntu 对话框不同,更改只有在单击 Apply 按钮后才生效。

图 16. 用于更改鼠标设置的 KDE 对话框
用于更改鼠标设置的 KDE 对话框
用于更改鼠标设置的 KDE 对话框

命令行访问

在 Linux 系统上,有时需要输入 Linux 命令,而不是使用 GUI。Linux Terminal 窗口类似于 Windows 中的 DOS 命令提示。在我们的 KDE 桌面上,可以使用 Start->Applications->System->Terminal(如 图 17 所示)访问一列可用终端程序。

图 17. 在使用 KDE 4 的 OpenSUSE 上打开一个终端
在使用 KDE 4 的 OpenSUSE 上打开一个终端

在 Ubuntu 系统上,可以在 Applications->Accessories->Terminal(如 图 18 所示)或 Applications->System->Terminal 下找到一个终端窗口。在 Fedora 系统上,位于 Applications->System Tools->Terminal 下。

注意:如果您右键单击(或者使用配置后的鼠标的相应键)终端菜单项,通常会看到一个选项,允许将这个图标添加到您的面板或桌面。如果将其添加到您的面板,就可以快速访问终端,不必逐级选择菜单。

图 18. KDE shell 图标
KDE shell 图标

在 OpenSUSE 系统上,选择 Terminal (konsole) 选项将看到一个类似 图 19 的终端窗口。图 19 和 图 20 包含了一些将在下面讨论的命令及其输出。

图 19. KDE shell 图标
KDE shell 图标
KDE shell 图标

Ubuntu 终端窗口类似于 图 20。

图 20. KDE shell 图标
KDE shell 图标
KDE shell 图标

您的 shell 窗口的默认外观取决于您的发行版和选择的桌面。要调整窗口大小,可以使用鼠标左键拖动窗口的角或边。要往回滚动查看最近历史,可以使用滚动条。对于非 root 用户,命令提示通常以一个 $ 字符结束。如果命令提示以一个 # 字符结束,表明此 shell 的用户是 root 用户或拥有根权限。可以使用向上箭头回调最近的命令并根据需要修改它们。通常有一个 Settings 或 Terminal 菜单,允许更改窗口颜色和字体等设置。

图 19 和 图 20 显示了几条命令及其输出:

whoami
显示谁正在使用这个终端窗口,这里是 ian
pwd
显示当前工作目录的完整名称,这里是 /home/ian。注意,命令提示中的 $ 前面的波浪号 (~) 表示用户目前位于其主目录中。
cd
切换当前或工作目录。我们演示了切换到 /(即根)目录,然后切换到 /tmp 目录,后者通常用于保存临时文件。注意,/ 是整个文件系统的根,而 /root 是 root 用户的根目录。不带任何目录名的 cd 将用户返回主目录,cd - 将用户返回当前目录之前的最后一个目录。非根用户的主目录通常位于 /home 下。例如,/home/ian 是我的 ID 为 ian 的系统上的主目录。还记得吗,波浪号 (~) 是当前用户的主目录的简写。在其后添加某个特定用户的姓名以引用该用户的主目录。例如,用户 ian 的主目录也可以引用为 ~ian
uname
如果不带参数,此命令显示操作系统的名称:Linux。带 -a 参数,显示关于您的系统的其他信息。
which
扫描 PATH 环境变量中的目录;如果在 shell 提示中输入一条命令,将显示 将被执行的可执行程序的完整路径。在这里,我们看到 xclock 程序将从 /usr/bin/xclock 运行。注意,这个应用程序并不总是安装在默认 Linux 安装中,它通常是一个名称类似于 的包的一部分,因此您可能必须找到并安装适当的包才能使用它。
xclock
在桌面上启动一个新窗口,其中包含一个时钟。注意命令后的 &,该符号表示命令处理器应该将控制权返回终端窗口,而不是等待命令结束。还要注意,这是这个终端窗口生成的第一个类似进程,它的进程 ID(PID)为 1774。
ps
如果使用 -T 选项,显示这个终端启动的所有进程。在某些系统上,ps 命令的默认显示包含一个进程状态。请参阅手册页了解关于所有可能选项和输出列的详细信息。如果本例中显示了状态,您应该能够看到 bash shell 程序等待输入(状态 S 表示睡眠),就像 xclock 进程一样。ps 命令正在运行,应该拥有状态 R(表示可运行)。

这些命令的输出已在前面的两个终端窗口中显示。清单 1 显示了来自 Ubuntu 系统的一个文本形式。

清单 1. 一些基本命令的 Ubuntu 输出
ian@pinguino:~$ whoami
ian
ian@pinguino:~$ pwd
/home/ian
ian@pinguino:~$ cd /
ian@pinguino:/$ cd /tmp
ian@pinguino:/tmp$ uname
Linux
ian@pinguino:/tmp$ uname -a
Linux pinguino 2.6.35-27-generic #48-Ubuntu SMP Tue Feb 22 20:25:29 UTC 2011 
i686 GNU/Linux
ian@pinguino:/tmp$ which xclock
/usr/bin/xclock
ian@pinguino:/tmp$ xclock&
[1] 2072
ian@pinguino:/tmp$ ps -T
  PID  SPID TTY          TIME CMD
 2049  2049 pts/1    00:00:00 bash
 2072  2072 pts/1    00:00:00 xclock
 2073  2073 pts/1    00:00:00 ps
ian@pinguino:/tmp$

可能对您有用的其他一些命令包括:

info cmd_name
显示名为 cmd_name 的命令的有关信息。尝试 info info,了解关于 info 文档系统的信息。
man cmd_name
是名为 cmd_name 的命令的在线手册页的一个接口。有些信息采用 info 格式,而另一些信息只以手册页格式提供。尝试 man man,了解关于手册页的更多信息。

成为超级用户(或根用户)

对于 Linux 上的很多任务,您需要根用户超级用户 权限。根用户(有时称为超级用户)是通常用于完成配置系统或安装软件等管理任务的用户。仅当需要执行管理任务才使用 root,避免使用 root 执行常规任务。根用户可以做任何事,包括意外毁灭系统,这通常不是什么好事情。常规用户拥有较少特权,系统受到更多保护,不会受到常规用户意外损坏。

大多数拥有图形界面的管理应用程序现在要求非根用户提供根密码才能访问其功能。当您需要作为根用户从一个终端运行命令时,这帮不上忙。

您的第一反应可能是注销当前 userid 并使用新的 userid 登录,切换到另一个 userid。但如果您只是需要作为另一个用户运行几个快速命令,又该怎么办呢?Linux 提供了一个解决方案:su(替代用户)和 sudo 命令允许临时作为另一个用户运行一个或多个命令。这通常用于需要根权限的任务。事实上,如果您使用 ssh(或非常不安全的 telnet)这样的终端程序远程连接到一个系统,那么很多 Linux 发行版都会阻止您作为根用户登录。这是一种良好的安全实践,我们建议您不要试图绕过这个限制。相反,您应该作为非特权用户登录,然后使用 susudo 命令执行需要根权限的工作。

总结起来,有两种主要方法可以使用根权限运行任一命令。

  1. 使用 su 命令(通常带 - 选项)成为根用户。
  2. 使用 sudo 命令以根权限执行一个命令。

在 Fedora 或 OpenSUSE 这样的系统上,这两种方法都可以使用,但使用 su 可能更普遍。在 Ubuntu 这样的基于 Debian 的系统上,安全模型阻止根登录,因此您既不能作为根用户登录,也不能使用 su 成为根用户,只能使用 sudo

使用 su

假设您已登录,正在查看一个终端窗口,您不是根用户,但需要运行一个需要根权限的命令(比如 fdisk)。您单独使用 su 命令切换到根用户,或者,更普遍的情况是添加 - 选项。

不带 - 选项的 su 命令只是使您变成根用户,但不更改您的环境变量,包括您的路径。- 选项,也可以输入为 -l-login(如果您的确喜欢输入额外的字母),允许读取替代用户的登录启动文件,从而允许将路径、环境和提示等设置为目标用户的值。清单 2 展示了我们的 Fedora 系统上的这两种形式。我们已经使用 pwd (print working directory) 命令显示每种形式的当前工作目录。注意提示有何不同。如果您想深入了解如何定制自己的提示以及哪些因素决定提示外观,请参阅 developerWorks 上的 “Prompt magic” 技巧。

清单 2. 切换到根用户
[ian@echidna ~]$ su
Password:
[root@echidna ian]# pwd
/home/ian
[root@echidna ian]# su -
[root@echidna ~]# pwd
/root

毫不奇怪,您将注意到,必须提供密码才能切换到根用户。一旦拥有根权限,就能使用 susu - 切换到另一个用户,或切换到带 login 选项的根用户。如果您 想切换到一个非根用户,只需添加相应 ID。如前所述,可以根据需要使用或不使用 - 选项。例如:

su - db2inst1

要返回此前的 ID,按 Ctrl-d 键;或者, 如果正在使用 bash shell(这是大多数 Linux 系统上的默认值),输入 exit 并按 Enter 键。

我们已经了解了如何使用 su,下面我们通过 fdisk 命令来实践。

清单 3. 使用 su 运行 fdisk 命令
[ian@echidna ~]$ fdisk /dev/sda

Unable to open /dev/sda
[ian@echidna ~]$ su -
Password:
[root@echidna ~]# fdisk /dev/sda

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): q

[root@echidna ~]# exit
logout
[ian@echidna ~]$

使用 sudo

su 命令类似,sudo 命令允许使用另一个用户的权限运行命令。一个给定用户或一类用户可能执行的命令在 /etc/sudoers 文件中列示。与 su 命令相反,无需 知道根用户或其他用户的密码,但需要提供您自己的密码。/etc/sudoers 文件由根用户维护,通过 visudo 命令编辑。

如果快速执行多个 sudo 命令,通常不需要为每个命令重新输入密码。另一种方法是运行带 -s 选项的 sudo 命令,此命令将为您运行一个 shell,您可以作为目标用户从该 shell 运行多个命令,直到您关闭 shell。清单 4 展示了这两种方法。

清单 4. 在 Ubuntu 上使用 sudo 命令
ian@pinguino:~$ fdisk /dev/sda

Unable to open /dev/sda
ian@pinguino:~$ sudo fdisk /dev/sda
[sudo] password for ian:

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x54085408

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        2611    20972826    7  HPFS/NTFS
/dev/sda2            2612        2624      104422+  83  Linux
/dev/sda3            2625       14593    96140962    5  Extended
/dev/sda5            2625        2689      522081   82  Linux swap / Solaris
/dev/sda6            2690        5180    20008926   83  Linux
/dev/sda7            5181        9341    33423201   83  Linux
/dev/sda8            9342       14593    42186658+  83  Linux

Command (m for help): q

ian@pinguino:~$ sudo -s
root@pinguino:~# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): q

root@pinguino:~# exit
ian@pinguino:~$

如果您没有在 sudoers 文件中获得授权,将收到一条类似于 清单 5 的错误消息。

清单 5. 越权使用 sudo
[ian@echidna ~]$ sudo fdisk /dev/sda
[sudo] password for ian:
ian is not in the sudoers file.  This incident will be reported.

作为另一个用户使用一个 GUI 应用程序

您可能已经注意到,在 上一小节su 命令的讨论中,我们只运行了在终端窗口中显示了输出的命令。通常,您也可以运行 GUI 命令。例如,有些安装程序需要有根权限才能安装一个程序和拥有一个 GUI 安装程序。如果您发现自己不能作为另一个用户启动 GUI 应用程序,那么请继续阅读,因为在有些发行版上,要作为另一个用户运行 GUI 应用程序,可能必须额外采取一些步骤。

注意: 最新的发行版通常允许同时打开多个桌面,使用一个键序列(比如 Ctrl-Alt-F7 或 Ctrl-Alt-F8)在桌面之间切换。根据您需要执行的操作,这可能是另一个替代方法。请参阅 注销 小节了解这个菜单选项的更多信息。

Linux 上的 GUI 应用程序使用 X Window System,这是一个客户机-服务器系统,旨在允许多个用户使用一些窗口化的应用程序跨一个网络访问一台计算机。X 显示的名称采用以下形式:hostname:displaynumber.screennumber。对于在一台 PC 这样的工作站上运行的 Linux,通常只有一个包含一个屏幕的显示。在本例中,displayname 可能(且通常)被省略,因此显示名为 :0.0,或者,有时只是 :0。

X Window System 服务器需要知道显示,还要知道您是否有权连接服务器。通常通过使用 MIT-MAGIC-COOKIE-1 进行授权,这是一个随机长字符串,每当服务器重置时都会重新生成。为了应用程序能将此信息传递到 X 服务器,需要在您的环境变量中设置 DISPLAY 和 XAUTHORITY 变量。作为一项安全预防措施,XAUTHORITY 变量指向一个通常只能由拥有用户读取或写入的文件。如果您正在读取此文件,我们假设您正在使用一个图形登录,以便您的启动文件已经为您设置了这些变量。清单 6 中的示例来自我们的 Ubuntu 系统,展示了 DISPLAY 和 XAUTHORITY 变量的值,以及 XAUTHORITY 变量指向的文件的所有权。

清单 6. DISPLAY 和 XAUTHORITY
ian@pinguino:~$ echo $DISPLAY
:0.0
ian@pinguino:~$ echo $XAUTHORITY
/var/run/gdm/auth-for-ian-WoeKHn/database
ian@pinguino:~$ ls -l $XAUTHORITY
-rw------- 1 ian ian 53 2011-04-01 16:24 /var/run/gdm/auth-for-ian-WoeKHn/database

现在,同样在我们的 Ubuntu 系统上,我们尝试作为用户 editor 使用 sudo 运行 xclock 命令。如 清单 7 所示,DISPLAY 和 XAUTHORITY 变量的值与用户 ian 的相同,但 xclock 命令失败。

清单 7. sudo 与 DISPLAY 和 XAUTHORITY
ian@pinguino:~$ sudo -u editor echo $DISPLAY
[sudo] password for ian:
:0.0
ian@pinguino:~$ sudo -u editor echo $XAUTHORITY
/var/run/gdm/auth-for-ian-WoeKHn/database
ian@pinguino:~$ sudo -u editor xclock
No protocol specified
Error: Can't open display: :0.0

在本例中,用户 editor 将 XAUTHORITY 变量设置为 /var/run/gdm/auth-for-ian-WoeKHn/database,但我们已经看到,该文件上的权限只允许用户 ian 读写它。如果用户 editor 不能读取它指向的文件,那么此变量也可能没有设置。在了解如何解决这个问题之前,我们先看看如果我们取消设置(unset)用户 ian 的 DISPLAY 或 XAUTHORITY 变量,会发生什么情况。为此,我们将运行 xclock 命令,在运行命令之前,使用 env 命令的 -u 选项取消设置一个环境变量,修改该环境变量。我们的结果如 清单 8 所示。

清单 8. 取消设置 DISPLAY 和 XAUTHORITY
ian@pinguino:~$ env -u DISPLAY xclock
Error: Can't open display:
ian@pinguino:~$ env -u XAUTHORITY xclock

您可能会感到吃惊:尽管我们取消设置了 XAUTHORITY 环境变量,xclock 命令仍然会运行。

此前,我们提到过 MIT-MAGIC-COOKIE-1 安全方法。如果这个令牌没有提供,X 服务器仍将检查一个未授权主机列表。使用 xhost 命令显示或更新该列表。使用 + 选项增加条目,- 选项移除条目。使用特殊的 family 条目 local:(注意 “:”)允许系统上的任何本地用户访问此显示。由于您使用一个单用户系统,这意味着可以 su 到一个任意非根用户,且现在可以启动 xclock 或其他 X 应用程序。清单 9 展示了 xhost 命令的用法。

清单 9. 使用 xhost
ian@pinguino:~$ xhost
access control enabled, only authorized clients can connect
SI:localuser:ian
ian@pinguino:~$ xhost +local:
non-network local connections being added to access control list
ian@pinguino:~$ xhost
access control enabled, only authorized clients can connect
LOCAL:
SI:localuser:ian
ian@pinguino:~$ sudo -u editor xclock
ian@pinguino:~$ # Close the xclock window to return here
ian@pinguino:~$ xhost -local:
non-network local connections being removed from access control list
ian@pinguino:~$ xhost
access control enabled, only authorized clients can connect
SI:localuser:ian

在单一用户系统上,允许所有本地用户使用这个显示通常是一种简单合理的解决方案。如果您需要进行更多限制,可以使用 xauth 从 XAUTHORITY 文件提取 cookie,将其给予需要访问这个显示的用户。清单 10 执行以下任务:

  1. 作为用户 ian 使用 xauth,以一种特定格式显示 cookie,以便可以通过电子邮件或其他方式发送到其他指定用户。
  2. 使用 sudo -s 并切换到用户 editor 以运行几个命令。
  3. 使用 xauth 新建一个授权文件。注意,我们使用 echo 将数据管道传输到 stdin,同时使用一个后置反斜杠(\)将此命令分分割为几行。
  4. 我们为 XAUTHORITY 变量导出一个新值,以便它指向新建的授权文件。
  5. 最后,我们运行 xclock 命令,使用一个后置(&)以后台模式运行并保留对我们的终端窗口的控制权。
清单 10. 使用 xauth
ian@pinguino:~$ xauth -f $XAUTHORITY nextract - :0
0100 0008 70696e6775696e6f 0001 30 0012 4d49542d4d414749432d434f4f4b49452d31 0010 3c4bc87
c2ce4ce5e97f8199c213b4ec9
ian@pinguino:~$ sudo -s -u editor
editor@pinguino:~$ echo "0100 0008 70696e6775696e6f 0001 30 0012"\
> " 4d49542d4d414749432d434f4f4b49452d31"\
> " 0010 3c4bc87c2ce4ce5e97f8199c213b4ec9" |
> xauth -f ~editor/temp-xauth nmerge -
xauth:  creating new authority file /home/editor/temp-xauth
editor@pinguino:~$ export XAUTHORITY=~editor/temp-xauth
editor@pinguino:~$ xclock&
[1] 4827

通过这个简单的介绍,您应该了解如何作为另一个用户运行 X 应用程序。尽管我们以 Ubuntu 为例,但这里演示的基本原则适用于所有发行版。要详细了解如何使用 xauthxhost 命令,可以使用以下命令查看在线手册页:

  • info xauth
  • man xauth
  • info xhost
  • man xhost

可移除设备

在 Linux 和 UNIX® 系统上,所有文件都作为一个以 / 为根的 “大树” 的一部分。要访问一个 CD-ROM 中的文件,需要在文件树的某个装载点装载该 CD-ROM 设备。在目前的发行版中,设备通常自动装载;您只需插入磁盘,磁盘将被识别并装载。设备装载后,重要的是要正确卸载设备以免丢失数据。

装载可移除设备

当您将一个 CD 或 DVD 插入 SUSE 11.3 系统或连接一个 USB 驱动器时,会看到一个类似于 图 21 的弹出窗口。如果您在弹出窗口关闭前错过了它,可以使用前面显示过的图像左上角的面板图标再次打开弹出窗口。将鼠标移动到图标上方,将显示一个工具提示,表明设备还没有装载。

图 21. 当 CD 或 DVD 载入 SUSE 系统时的弹出菜单
当 CD 或 DVD 载入 SUSE 系统时的弹出菜单
当 CD 或 DVD 载入 SUSE 系统时的弹出菜单

将鼠标移动到图像右边的插头图标上,将显示一个工具提示 “Click to access this device from other applications(单击此图标,从其他应用程序访问此设备)”。单击文本 “4 actions for this device(此设备的 4 个操作)” 将展开图像,如 图 22 所示。如果您安装了不同的软件包,那么您的系统上的可用操作可能不同。

图 22. CD 或 DVD 的可用操作
CD 或 DVD 的可用操作

如果单击 “Open with File Manager” 选项,将看到一个类似于 图 23 的窗口。可以从这个窗口导航 DVD,打开文件,或运行应用程序。将鼠标移动到一个项目上方,查看窗口右边的描述。

图 23. SUSE File Manager
SUSE File Manager
SUSE File Manager

在 Ubuntu 和 Fedora 系统上,插入磁盘时的默认操作略微不同。通常,一个类似 图 24 的图标将出现在您的桌面上。文件管理器(Nautilus)也可能会自动打开。如果没有打开,可以双击该图标打开文件管理器。根据您的系统,可能会提示您,询问是否运行磁盘根目录中的 autorun 文件。

图 24. 在 Ubuntu 上插入的 CD
在 Ubuntu 上插入的 CD

如果您单击以从其他应用程序访问设备(OpenSUSE),或者使用 File Manager 或任意发行版上的另一个应用程序打开它,则该设备将已经为您装载。它通常会被装载到 /media 目录中,且可能会使用磁盘标签作为一个装载点。要验证这一点,可以打开一个终端窗口并运行 mount 目录,我们的 OpenSUSE 系统中如 清单 11 所示。其他系统非常相似,尽管装载点可能略微不同。

清单 11. 使用 mount 命令
ian@lyrebird:~> mount
/dev/sdb12 on / type ext4 (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
...
/dev/sr0 on /media/openSUSE-DVD-x86_64.0702..001 type iso9660 (ro,nosuid,nodev,uid=1000,
utf8)

在本例中,我们的磁盘装载到 /media/openSUSE-DVD-x86_64.0702..001,您可以从这个终端窗口浏览磁盘或切换到磁盘上的一个目录。注意,CD/DVD 设备是 /dev/sr0。Linux 上的设备也出现在文件系统树中。换言之,/dev/sr0 中的媒体上的文件系统允许在装载点 /media/openSUSE-DVD-x86_64.0702..001 启动的应用程序访问。如果您想深入了解设备是如何装载的,请参阅我们的文章:学习 Linux,101:控制文件系统的安装和卸载

安全移除设备

DVD 或 CD 加载后,您就可以使用磁盘上的文件,因为它们现在是您的文件系统的一部分。当一个 CD-ROM 装载后,Linux 将锁定该 CD,以免它被 Eject 按钮弹出。当然,这不能阻止您取出外部 CD 或 USB 驱动器,从 USB 槽拔出 U 盘,或弹出软盘。要避免潜在的数据损失,应该总是通过首先卸载 设备来安全地移除设备。

可以从图形桌面或命令行卸载设备。umount 命令(注意 umount 缺少一个 “n”)用于卸载设备,eject 命令首先卸载设备,然后试图弹出设备,例如打开 CD 托盘。以前,装载和卸载设备需要根权限。现在一般允许用户装载,以便非根用户能装载和卸载设备。您可能已经注意到了 清单 11 中的选项 uid=1000。uid 1000 对应系统上的用户 ian,如 清单 12 所示。

清单 12. 使用当前用户的 id 命令
iian@lyrebird:~> id
uid=1000(ian) gid=100(users) groups=33(video),100(users)

如果您使用图形桌面工具来卸载设备,那么如果您已经注销,然后作为另一个用户登录,则您可能只需担心 ids 问题。下面,我们先查看图形工具,然后查看命令行工具。

在 Ubuntu 或 Fedora 上,右键单击可移除媒体的图标,将看到类似于 图 25 的上下文菜单。可以选择卸载或弹出设备。对 CD 或 DVD 选择弹出选项. 设备将被卸载,设备图标将从您的桌面消失,CD 托盘将打开。对于 USB 驱动器,这个选项可能卸载而不是弹出,设备卸载后,就可以被安全地拔出。如果您使用一个包含多个分区的外部硬盘驱动器,必须先卸载所有分区,然后才能移除驱动器或关闭电源。

图 25. SUSE File Manager
SUSE File Manager

图 26 显示了我们的 OpenSUSE 系统,有一个已连接的 USB 驱动器,以及我们此前使用过的 DVD。DVD 和硬盘驱动器的一个分区已被装载。 OpenSUSE 通过将插头图标(当设备未装载时)更改为一个弹出按钮(当设备装载后)来区分未装载和已装载设备。您还能注意到,设备图标左下角的小方框也从拥有一根对角线到拥有一个星号。注意,对于可写入媒体,比如我们的硬盘,还将显示可用空间。

图 26. OpenSUSE File Manager
SUSE File Manager

要卸载或弹出一个已装载驱动器,只需单击弹出图标(如上图中 2006R1 分区的弹出图标)。如果您弹出一个设备(比如 CD 或 DVD,其中托盘打开或发生其他类似的物理连接断开),那么该设备将从您的已插入设备列表中移除。

从命令行安全移除

前面提到过 umounteject 命令。现在我们来了解如何使用它们,以及您可能想了解的 lsof 命令。在这个领域中,您可能发现不同的系统存在一些差异,因此您可能会遇到与这里的说明不完全一致的情况。

首先,我们查看如何使用 unmount 命令在我们的 Ubuntu 系统上卸载 CD,如 清单 13 所示。我们首先使用 grep 过滤 mount 的输出,只显示那些包含 “media”(这通常是可移除媒体的装载点)的条目。然后,我们使用 umount 卸载设备,这要用到它的装载点(/media/Ubuntu 10.10 i386)。最后,我们重复这个 “mount + grep 过滤器” 过程,确认该设备已不再处于已装载状态。注意,可以将装载点或设备名称(本例中为 /dev/sr0)作为 umount 的参数。

清单 13. 在 Ubuntu 上从命令行卸载一个 CD
ian@pinguino:~$ mount | grep media
/dev/sr0 on /media/Ubuntu 10.10 i386 type iso9660 (ro,nosuid,nodev,uhelper=udisks,
uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500)
ian@pinguino:~$ umount /media/Ubuntu\ 10.10\ i386
ian@pinguino:~$ mount | grep media

如您所见,Ubuntu 允许使用命令行卸载自动装载的驱动器。在 OpenSUSE 11.3 上重复上述场景可能会生成类似于 清单 14 的结果。

清单 14. 在 OpenSUSE 上从命令行卸载一个 CD (1)
ian@lyrebird:~> mount | grep media
/dev/sr0 on /media/openSUSE-DVD-x86_64.0702..001 type iso9660 (ro,nosuid,nodev,uid=1000,
utf8)
/dev/sdc6 on /media/2006R1 type ext3 (rw,nosuid,nodev)
ian@lyrebird:~> umount /media/openSUSE-DVD-x86_64.0702..001/
umount: /media/openSUSE-DVD-x86_64.0702..001 is not in the fstab (and you are not root)
ian@lyrebird:~> umount /dev/sr0
umount: /dev/sr0 is not in the fstab (and you are not root)

有时您会发现,以图形方式能执行的操作和在命令行上可能执行的操作之间有差异。随着 Linux 日益成熟,这样的差异将越来越少,但您有时还会发现它们,就像这里一样。鉴于您已经在本教程中学习的内容,明显的解决方案是使用 susudo 以根权限运行必要的命令。下面,我们尝试使用 su 命令,如 清单 15 所示。

清单 15. 在 OpenSUSE 上从命令行卸载一个 CD (2)
ian@lyrebird:~> su -
Password:
lyrebird:~ # mount | grep media
/dev/sr0 on /media/openSUSE-DVD-x86_64.0702..001 type iso9660 (ro,nosuid,nodev,uid=1000,
utf8)
/dev/sdc6 on /media/2006R1 type ext3 (rw,nosuid,nodev)
lyrebird:~ # umount /dev/sdc6
lyrebird:~ # umount /media/openSUSE-DVD-x86_64.0702..001/
umount: /media/openSUSE-DVD-x86_64.0702..001: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

我们能成功卸载 /dev/sdc6 successfully,但不能卸载 /media/openSUSE-DVD-x86_64.0702..001,因为 Linux 声称它繁忙。如果我们尝试使用 eject 命令,将会得到类似的错误消息。还记得吗,前面讲过,Linux 将在 CD 或 DVD 使用时锁定它。更普遍的情况是,如果一个文件系统正在被另一个用户使用,也不能卸载。正如上面的错误消息中所建议的,可以使用 lsoffuser 命令发现哪个用户正在导致您的卸载问题。典型的用法如 清单 16 所示。

清单 16. 使用 lsof 和 fuser(作为根用户)
lyrebird:~ # lsof /media/openSUSE-DVD-x86_64.0702..001/
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    3824  ian  cwd    DIR   11,0     2048 2048 /media/openSUSE-DVD-x86_64.0702..001/
boot
lyrebird:~ # fuser -um /media/openSUSE-DVD-x86_64.0702..001/
/media/openSUSE-DVD-x86_64.0702..001:  3824c(ian)

lsof 命令显示打开的实际文件或目录(本例中为 /media/openSUSE-DVD-x86_64.0702..001/boot)以及使用此文件或目录的进程 ID(3824)和用户 ID(ian)。fuser 命令显示使用 /media/openSUSE-DVD-x86_64.0702..001 文件系统但不使用此特定的打开文件或目录的用户和进程 ID。

通常,您将使用这个信息干净利落地关闭使用文件系统的打开进程或窗口。在有些 Linux 系统上,umount 命令还有一个 -L 选项,允许执行 卸载:文件系统立即与文件系统层级分离,但对文件系统的所有引用将在文件系统不再繁忙上清除。OpenSUSE 11.3 不提供这个选项,因此您必须在卸载之前手动清除文件系统引用,方法有二:一是终止肇事进程;二是确保肇事进程不再使用受影响的资源。

我们在 清单 14 中提到过,OpenSUSE 系统不支持对从桌面装载的设备使用命令行命令 umount,因此我们通过使用根权限解决这个问题。另一种解决方法是使用 halmount 命令卸载设备。HAL 表示 Hardware Abstraction Layer,旨在向各种硬件设备提供一个一致的应用程序接口。但使用 halmount 还是不能卸载一个繁忙设备。清单 17 展示如何使用 halmount,然后切换到 root,强制终止导致磁盘繁忙的进程。注意,以这种方式终止进程可能会导致数据丢失,因此不推荐这种方法,除非您确定不会丢失数据。然后,我们切换回常规用户模式,使用 halmount 卸载不再繁忙的文件系统。最后,我们使用 eject 打开托盘,弹出 DVD。

清单 17. 使用 halmount、kill 和 eject
ian@lyrebird:~> halmount -u /dev/sr0
/dev/sr0: org.freedesktop.Hal.Device.Volume.Busy: umount: /media/openSUSE-DVD-x86_64.0702
..001: device is busy.
ian@lyrebird:~> lsof /dev/sr0
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    3824  ian  cwd    DIR   11,0     2048 2048 /media/openSUSE-DVD-x86_64.0702..001/
boot
ian@lyrebird:~> su -
Password:
lyrebird:~ # kill -9 3824
lyrebird:~ # ps -ef | grep 3824
root      5542  5507  0 22:47 pts/2    00:00:00 grep 3824
lyrebird:~ # logout
ian@lyrebird:~> halmount -u /dev/sr0
ian@lyrebird:~> eject /dev/sr0

希望这个关于 Linux 上的可移除媒体用法的简单介绍有助于您享受可移除媒体文件并避免数据丢失。

注销

在某种意义上,注销、锁定屏幕、关机和重启系统几个任务通常相关,因为它们都可以从相同或相似的菜单访问。通常,您的发行版会添加一个快速启动按钮来访问这些任务。如果没有,您可以 自己添加一个

OpenSUSE 注销

要注销,单击 Start,然后单击 Leave。您将看到一个类似于 图 27 的菜单,其中包含注销、锁定屏幕、关机和重启系统等选项。单击适当的选项。

图 27. 在 Red Hat enterprise Linux 3 中添加一个注销按钮
在 Red Hat enterprise Linux 3 中添加一个注销按钮

OpenSUSE 面板的右下角还有几个图标,用于注销和锁定。单击右边的 Leave 图标,将看到一个类似于 图 28 的对话框。同样,选择适当的选项。

图 28. 使用 OpenSUSE 面板注销图标
使用 OpenSUSE 面板注销图标

Ubuntu

可以从 Ubuntu 顶部面板右端的一个面板图标访问 Ubuntu 注销和重启功能。这个图标类似于 OpenSUSE 上的 Leave 图标。单击该图标将显示一个类似于 图 29 的对话框,可以在其中选择适当选项。

图 29. 使用 Ubuntu 面板注销图标
使用 Ubuntu 面板注销图标

Fedora 注销

可以从顶部面板的 System 菜单访问 Fedora 注销和重启功能,如 图 30 所示。您的选择类似于前面看到的 OpenSUSE 和 Ubuntu 选择。

图 30. 注销 Fedora GNOME 桌面
注销 Fedora GNOME 桌面

向您的面板添加一个注销按钮

Fedora 没有安装与 OpenSUSE 和 Ubuntu 类似的用于注销或屏幕锁定的面板图标。但是,您可以轻松添加类似按钮。

首先右键单击面板空白处。从上下文菜单选择 Add to Panel...,您将看到一个包含可添加的选项的列表。向下滚动到 Log Out 选项,单击该选项将其添加到您的面板。可以以相同的方法添加 Lock Screen 图标。

图 31. 将一个注销按钮添加到 Fedora GNOME 桌面
将一个注销按钮添加到 Fedora GNOME 桌面
将一个注销按钮添加到 Fedora GNOME 桌面

一个注销图标将被添加到您的面板。

如果某个应用程序没有位于列表中,您可以从 Applications 菜单启动它;或者逐级打开该菜单,直到找到该应用程序,然后右键单击应用程序,打开一个上下文菜单,该菜单包括向面板或桌面添加一个启动器的选项。

添加用户和用户组

有时需要为您的系统定义新用户,为那些用户定义用户组。例如,您可能需要定义一个名为 mqm 的用户和一个名为 mqm 的用户组(在 WebSphere Application Server 中安装嵌入式消息传递组件时还需要定义另一个名为 mqbrkrs 的用户组),或者,您还可能需要创建一些用户来管理数据库。

如果您没有指定用户编号,图形工具通常会分配下一个可用用户编号。对于 Fedora 和 Red Hat 系统,用户编号从 500 开始,因此,您在安装系统时创建的用户可能是用户 500。对于 OpenSUSE 和 Ubuntu,用户编号从 1000 开始。如果您像我一样在几个系统上使用相同的 ID,您可能会发现,在每个系统上使用相同的 ID 和组编号很方便。

对于本节的目的,我们将添加一个名为 testuser 的用户,其用户 ID 和用户组均为 2000。通常先定义用户组,然后定义使用该组的用户,我们在这里也将这样做。您可以使用图形工具进行用户管理,也可以在终端窗口中输入命令。在这里,我们将使用 OpenSUSE 的系统管理工具 简要描述图形流程。接下来,我们将介绍如何找到 Fedora 或 Ubuntu 系统上的对应工具。最后,如果您的确想从命令行操作,我们将向您介绍 相关命令

在 OpenSUSE 系统中添加用户和用户组

在使用 KDE 的 OpenSUSE 系统上,要访问 YaST (Yet Another System Tool) 控制中心,可以使用 Start->Applications,然后选择 System 并向下滚动到 Administrator Settings,如 图 32 所示。

图 32. YaST2 Control Center
YaST2 Control Center

打开这个应用程序并单击左侧面板中的 Security and users,查看 图 33 中的主面板中显示的任务。

图 33. YaST2 Control Center
YaST2 Control Center
YaST2 Control Center

现则 User and Group Management。如果您最近没有收到根权限,可能会提示输入根密码。在下一个屏幕上,您将看到所有已存在的用户。选择 Groups 选项卡,您将看到类似于 图 34 的屏幕。

图 34. YaST2 Control Center 中的 Group 列表
YaST2 Control Center 中的 Group 列表
YaST2 Control Center 中的 Group 列表

单击 Add 按钮添加一个新组。您将看到类似于 图 35 的屏幕。注意,那里已经有几个用户组,它们是在安装系统时创建的。输入 “testuser” 作为 Group Name,输入 “2000” 作为 Group ID。单击 OK 返回组列表显示,其中应该包含这个新组。此时,您的用户组还没有保存到系统,因此如果取消,它将丢失。

图 35. 在 YaST2 Control Center 中添加一个组
在 YaST2 Control Center 中添加一个组
在 YaST2 Control Center 中添加一个组

单击 Users 选项卡返回用户显示,然后单击 Add 添加一个新用户。输入 “Test User” 作为 User's Full Name,输入 “testuser” 作为 User Name,然后为该用户两次输入一个初始密码。参见 图 36。

图 36. 在 YaST2 Control Center 中添加一个用户
在 YaST2 Control Center 中添加一个用户
在 YaST2 Control Center 中添加一个用户

单击 Details 选项卡,输入 “2000” 作为 User ID (uid),选择 Default Group 下拉菜单中的 “testuser”。您可以在这个面板中更改默认主目录和默认登录 shell 等设置。您还可以选择其他组作为此用户的组。完成后,单击 OK 返回用户列表,其中应该包含您的新用户。单击 OK,YaST 将处理所有更改并将更改保存到系统。

图 37. YaST2 Control Center 中的用户细节
YaST2 Control Center 中的用户细节
YaST2 Control Center 中的用户细节

在 Fedora 或 Ubuntu 系统上添加用户和用户组

在 GNOME 系统上,比如 Fedora 和 Ubuntu 系统,从 System->Administration->Users and Groups 菜单启动用户管理,如 图 38 所示。

图 38. 在 GNOME 上启动用户和用户组管理
 任务栏上的 Users 和 Groups
任务栏上的 Users 和 Groups

但是,打开 User and Group management 后,您将发现 Fedora 和 Ubuntu 拥有不同的对话框。Fedora 启动 system-config-users 应用程序,而 Ubuntu 启动 users-admin 应用程序。我们将演示 Fedora 的用法,然后总结 Ubuntu 的区别。

如果您没有作为根用户登录或在最近通过根用户身份验证,则需要在收到提示时提供根密码。然后,您将看到 Users 选项卡上打开的 User Manager 屏幕,如 图 39 所示。默认情况下,仅显示常规用户和组。要查看系统用户和组,请取消选中 Edit->Preferences 下的 Hide system users and groups 复选框。

图 39. Fedora User Manager
Fedora User Manager
Fedora User Manager

我们可以按照上面的 OpenSUSE 系统的方法操作,首先定义我们的用户组。但是,Fedora User Manager 拥有一个方便的特性,允许为组名与用户名相同的用户创建一个私有组。因此,单击 Add User 按钮并按 OpenSUSE 的方法填充 testuser 用户的详细信息。但是,这次选中 Specify user ID manuallySpecify group ID manually 复选框,将这两个值都设置为 2000。现在,我们的屏幕应该类似于 图 40。

图 40. 在 Fedora 中添加一个用户
在 Fedora 中添加一个用户

单击 OK,返回 User Manager。您的新用户应该已经添加到系统,这与 OpenSUSE 不同。单击 Add Group 添加其他需要的组。要使用户成为组成员,可以选择一个组然后使用其属性来添加用户,也可以选择一个用户然后使用其属性来添加组。设置好这些属性后,单击 OK 返回 User Manager,然后单击 File->Quit 关闭 User Manager。

Ubuntu 用户管理器

现在您已经熟悉如何在 OpenSUSE 和 Fedora 上添加用户,应该也能够管理 Ubuntu 流程。通常,Ubuntu 将指导您完成添加用户并设置用户的默认 ID 和组的流程。以这种方法添加 testuser 后,应该能够看到类似 图 41 的屏幕。

图 41. Ubuntu 中的用户管理
在 Ubuntu 中添加一个用户
在 Ubuntu 中添加一个用户

此时,您需要使用 Manage Groups 按钮添加新组(也可以在添加用户之前添加组)。添加 testuser 组后,需要返回 图 41 所示的屏幕,选择 testuser ID,并单击 Advanced 按钮更改该用户的 ID 编号和主要组。

使用命令行添加用户和用户组

可以从命令行添加或更改用户和用户组。这些任务需要根权限。

关于用户组的信息存储在 /etc/group 中的一个平面文件中。可以使用 groupadd 命令添加一个新组,这非常简单。添加一个新用户可能稍微复杂一些,因为涉及更多参数,且需要用户的组的数字编号。我们使用 groupadd 命令添加 testuser 组,组 ID 为 2000,然后使用 grep 命令搜索 /etc/group 并验证设置。注意:如果没有提供组 ID,系统将分配所有现有组 ID 之上的下一个 ID。

root@pinguino:~# groupadd -g 2000 testuser
root@pinguino:~# grep testuser /etc/group
testuser:x:2000:

如您所说见,testuser 组为 2000。现在,我们使用 useradd 命令添加 testuser 用户。-c 选项允许指定一个注释,通常是用户的真实姓名。-u 选项允许指定用户的数字 ID(2000)。-d 选项允许指定用户的主目录。-g 选项允许指定用户的主要组,我们在这里使用组 2000,这是我们刚才创建的 testuser 组。我们使用的最后一个选项是 -G 选项,用于指定这个用户的其他组。这里我们可以使用组名。在本例中,我们将 testuser 添加到组 ian

添加这个用户后,可以再次使用 grep 命令,您将看到,用户 testuser 已被添加到 testuserian 两个组。此时,您已经创建了一个新用户,但该用户没有密码,不能登录系统。有些用户不需要登录,因此这对那些用户没有问题。根用户有权设置(或重置)其他用户的密码。为此,您使用 passwd 命令并将 username 作为一个参数。将提示您输入新密码,然后提示您重新输入密码进行验证。

root@pinguino:~# useradd -c"Test User" -u 2000 -d/home/testuser -g 2000 -G ian \
> testuser
root@pinguino:~# grep testuser /etc/group                         
ian:x:1000:testuser
testuser:x:2000:
root@pinguino:~# passwd testuser
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

最后,您可能需要向一个现有组添加用户。您可以使用 usermod 命令完成这个任务,但是您需要该用户的现有组列表,因为您将替换 “其他组列表”。更简单的方法是直接编辑 /etc/group。首先制作一个备份副本,以防出现问题。要将 editor 用户同时添加到 ian 和 testuser 组,编辑 /etc/group,更新 ian 和 testuser 所在的行,如下所示:

ian:x:1000:testuser,editor
testuser:x:2000:editor

您将发现大部分用户信息存储在 /etc/passwd 中,但不要直接编辑这个文件,应该 使用 useraddusermoduserdel 命令。如果您不是全职系统管理员,您可能会发现,如果只需要偶尔操作用户和用户组,图形界面可能更方便。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=659591
ArticleTitle=Linux 新用户的基本任务
publish-date=05182011