内容


为您的 Linux 应用开发加油提速 2004

针对 Linux 开发新手的基本任务

登录/注销、更改鼠标设置、打开 shell 窗口、挂装/卸装 CD-ROM 以及添加用户和组

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 为您的 Linux 应用开发加油提速 2004

敬请期待该系列的后续内容。

此内容是该系列的一部分:为您的 Linux 应用开发加油提速 2004

敬请期待该系列的后续内容。

以 root 用户身份登录

如果您遵循我们的 Red Hat Linux 7.1Red Hat Linux 7.2SuSE Linux 7.3 安装技巧进行操作,那么,在启动系统时,应该会看到一个图形化的登录屏幕。所显示的屏幕将因 Linux 发行版本的不同而不同。您将看到一个用来输入登录名的字段,或者看到一个用来输入登录名的输入字段和一个用来输入口令的输入字段。屏幕上还有一个按钮,它允许您关闭或重新引导系统,而且屏幕上可能还会有一个允许选择桌面的按钮。在本文中,我们将重点讨论 KDE 和 GNOME 桌面,但其他桌面(诸如 fvwm2、windowmaker 和 twm)也可以使用。

对于本文中的许多任务,都要使用特殊的登录名 rootroot 用户(有时也称为 超级用户)通常是执行诸如配置系统或安装软件之类管理任务的用户。 只有需要执行管理任务时才使用 root ;执行普通任务时应避免使用 rootroot 用户可以做任何事情,包括意外地破坏系统,这通常不是好事情。普通用户的特权较少,因此系统可以免遭受普通用户不经意的破坏。

应该在登录字段输入您的登录名(如果指示您输入 root ,那么就输入 root ),然后按下回车键。您会看到一条口令提示,或许您还需要将光标移动到口令输入字段,这取决于您所拥有的登录提示类型。输入您的口令并再次按下回车键,这样应该完成了登录并看到您的桌面。图 1 是您以 root 用户身份登录到 SuSE Linux 7.3 的 KDE 桌面时,可能看到的屏幕示例。图 2 的示例是使用 Red Hat Linux 7.2 和 GNOME 桌面时可能看到的屏幕。

图 1. 以 root 用户身份登录到 SuSE Linux 7.3 的 KDE 桌面时的样例初始窗口
KDE 桌面
KDE 桌面
图 2. 以 root 用户身份登录到 Red Hat Linux 7.2 的 GNOME 桌面时的样例初始窗口
GNOME 桌面
GNOME 桌面

为了浏览桌面,请在图标上移动您的鼠标(但请尽量避免启动应用程序,除非您是以非 root 用户身份登录的)。

切换到惯用左手的鼠标用法

我们通常假定用户是一位惯用右手的用户,但您可以更改鼠标配置以便于左手使用。此处,我们是在 SuSE Linux 7.3 系统上使用 KDE 桌面说明这一操作的。首先,单击面板上的 Control Center 图标,如图 3 所示。

图 3. KDE Control Center 图标
图 3. KDE Control Center 图标
图 3. KDE Control Center 图标

现在单击 Peripherals 项旁边的 + 号,然后单击 Mouse 项。您将看到一个类似于图 4 的窗口,可以在其中更改鼠标设置。如果您退出时没有应用任何更改,则会提示您是放弃更改还是应用它们。

图 4. 用来更改鼠标设置的 KDE 窗口
图 4. 用来更改鼠标设置的 KDE 窗口
图 4. 用来更改鼠标设置的 KDE 窗口

GNOME 桌面具有类似的能力。我们将在图 5 中说明如何通过主菜单使用它们,但您也可以从 Start Here 视图(请参阅图 2)使用 Preferences。如图 5 所示,单击 Main Menu,然后是 Settings 和 Peripherals,最后单击 Mouse。

图 5. 从 GNOME 主菜单访问鼠标设置
图 5. 从 GNOME 主菜单访问鼠标设置
图 5. 从 GNOME 主菜单访问鼠标设置

您应该看到一个类似于图 6 的窗口,可以在其中更改鼠标设置。

图 6. 用来更改鼠标设置的 GNOME 窗口
图 6. 用来更改鼠标设置的 GNOME 窗口
图 6. 用来更改鼠标设置的 GNOME 窗口

打开终端或 shell 窗口

您经常会需要打开终端或 shell 窗口。这个窗口类似于 Windows 下的 DOS 命令提示符。在 KDE 桌面上,有一个位于屏幕底部的 KDE 面板,类似于图 7。单击如图所示的 shell 图标。在 GNOME 桌面上,您将看到类似于图 8 的面板。

图 7. KDE shell 图标
图 7. KDE shell 图标
图 7. KDE shell 图标
图 8. GNOME shell 图标
图 8. GNOME shell 图标
图 8. GNOME shell 图标

所显示的 shell 窗口将取决于您的发行版本和选择的桌面。要调整其大小,可以使用鼠标左键拖动窗口的角或边。要滚动回最近的历史纪录,可以使用滚动条。以 # 符号结尾的命令提示符,表明该 shell 的用户是 root 用户。对于 root 以外的用户,命令提示符将以 $ 符号结尾。可以使用向上箭头重新调用前面的命令,如有必要可以对其进行修改。图 9 显示了典型的 KDE Konsole shell 窗口。您可以使用 Settings 菜单来更改诸如窗口颜色和字体之类的设置。

图 9. KDE Konsole shell 窗口
图 9. KDE Konsole shell 窗口
图 9. KDE Konsole shell 窗口

在图 9 中,我们显示了几条命令及其输出:

whoami
显示了谁正在使用这个终端窗口,在本例中是 root
pwd
打印当前工作目录的全名,在本例中是 /root 。注:命令提示符中 # 前面的颚化符号(~)表明该用户目前在他(或她)的主目录中。
cd
更改当前或工作目录。我们将举例说明先更改到 /(也称为根)目录,然后再更改到 /tmp 目录,/tmp 目录通常用来存储临时文件。请注意,/ 是整个文件系统的根,而 /root 是 root 用户的主目录。在不带任何目录名的情况下使用 cd ,会使用户返回到主目录。root 用户以外的用户的主目录通常位于 /home 之下。例如,我在某系统上的标识是 ian ,那么 /home/ian 就是我的主目录。还记得颚化符号(~)么?用户 ian 的主目录也可表示为 ~ ian
uname
不带参数时,将显示操作系统的名称:Linux。带 -a 参数时,则显示关于您系统的其他信息。
which
扫描 PATH 环境变量中的目录,如果您在 shell 提示符下输入命令,则显示要执行的可执行程序的完整路径。在本例中,我们看到将从 /usr/X11R6/bin/xclock 运行 xclock 程序。
xclock
在您的桌面上启动一个带有时钟的新窗口。请注意该命令末尾的 &,它意味着命令处理器不等命令执行完就会将控制权交还给终端窗口。还请注意这是该终端窗口所唤醒的第一个此类进程,其进程标识(PID)为 4617。
ps
使用 -T 选项时,则显示该终端启动的所有进程。在本示例中, bash shell 程序正在等待输入(状态 S 表示睡眠), xclock 进程也是如此。 ps 命令正在运行(状态 R 表示可运行)。

您可能会觉得有用的其他一些命令包括:

infocmd_name
显示关于名为 cmd_name 的命令的信息。输入 info info 以了解关于 info 文档系统的信息。
mancmd_name
是到关于名为 cmd_name 的命令的联机手册页的接口。Linux 中的一些信息是用 info 格式表示的,而一些信息只能以联机手册页的格式获得。输入 man man 以了解关于联机手册页的更多信息。

挂装 CD-ROM

在 Linux 和 UNIX 系统上,所有文件都作为一棵大型树的一部分来访问,该树的根是 /。要访问 CD-ROM 上的文件,必需将 CD-ROM 设备挂装在文件树的某个挂装点上。如果您的分发版安装了 automount 软件包,那么可能会自动为您完成这个步骤。无论如何,您的安装过程都有可能为您做一些工作,使 CD-ROM 设备易于挂装。

这些步骤中的示例都是在使用 KDE 桌面的 SuSE Linux SLES8 系统上进行的,并将 CD-RW 驱动器挂装为 /media/cdrecorder。CD-ROM 将被挂装为 /media/cdrom。在早期的 SuSE 系统上,您的 CD 驱动器可能被挂装为 /cdrom。在 Red Hat Linux 7.3+ 系统上,您的 CD 可能挂装为 /mnt/cdrom 而不是 /cdrom。从终端窗口使用命令 cat /etc/fstab 来查看安装过程会将它挂装在哪里。您将看到类似如下所示的几行输出:

/dev/hdc3       /                  ext3     defaults            1 1
/dev/hda8       swap               swap     pri=42              0 0
devpts          /dev/pts           devpts   mode=0620,gid=5     0 0
proc            /proc              proc     defaults            0 0
usbdevfs        /proc/bus/usb      usbdevfs noauto              0 0
/dev/cdrecorder /media/cdrecorder  auto     ro,noauto,user,exec 0 0
/dev/fd0        /media/floppy      auto     noauto,user,sync    0 0

对于本示例,我们将使用 SuSE Linux 7.3 系统,稍后我们将指出它与 Red Hat Linux 的差异。通过研究三条命令及其输出,让我们了解如何将所有这些组合到一起:

清单 1. 挂装 CD-ROM
echidna:~ # cat /etc/fstab
/dev/hda9       /      reiserfs        defaults 1 1
/dev/cdrecorder /media/cdrecorder      auto    ro,noauto,user,exec 0 0
        /dev/cdrom    /media/cdrom   auto    ro,noauto,user,exec 0 0
devpts  /dev/pts       devpts  defaults 0 0
/dev/hda7       /download      ext2    defaults 1 2
/dev/fd0        /media/floppy  auto    noauto,user,sync 0 0
proc    /proc   proc   defaults 0 0
usbdevfs        /proc/bus/usb  usbdevfs        defaults,noauto 0 0
/dev/hda6       /rh72  ext2    defaults 1 2
/dev/hda1       /windows/C     ntfs    ro,noauto,user,umask=022 0 2
/dev/hda5       /windows/D     vfat    noauto,user 0 2
/dev/hda8       swap   swap    pri=42 0 0
echidna:~ # ls /
.    boot       dev       floppy  media  proc sbin  var
..   cdrecorder  download  home   mnt    rh72  tmp   windows
bin  cdrom       etc      lib     opt    root  usr
echidna:~ # ls -l /cdrom
lrwxrwxrwx    1 root     root          12 Apr 19 09:21 /cdrom -> /media/cdrom
echidna:~ #

cat 命令复制并编写文件。如果未提供输出文件,则输出被定向到标准输出,标准输出通常就是您的终端窗口。Linux 系统的许多设置都存储在 /etc 目录中。在这些设置文件中有一个文件,它包含了关于文件系统的描述信息表。清单 1 中的第三行输出表明:CD-ROM 设备(/dev/cdrom)将被挂装在 /media/cdrom 上,除非 mount 命令指定了其他位置。

Linux 还有到目录和文件的快捷方式的概念,这些快捷方式称为 符号链接。SuSE Linux 为我们创建了一个符号链接,以便更容易地访问 CD-ROM。让我们使用 ls 命令来显示 / 目录的内容。请记住 / 是文件系统的根,不应与 /root 混淆,/root 是 root 用户的主目录。从清单 1 中的输出可以看到 / 目录包含了名为 cdrom 的项。

现在我们再次使用 ls 命令,但带有 -l (用于较长的输出)标志和名称 /cdrom ,以显示关于该项的更多信息。从输出中日期和时间戳记后面的 -> ,我们可以看出它是一个指向 /media/cdrom 目录的符号链接。这意味着我们可以在原本使用 /media/cdrom 的任何地方使用 /cdrom。

在挂装 CD-ROM 之前,您可能希望显示 /cdrom 目录的内容。尝试输入 ls /cdrom 命令。如果尚未挂装 CD-ROM,您应该看到项 .(/media/cdrom 目录本身)和 ..(/media/cdrom 的父目录 - /media 目录)。通常您会将设备挂装在象 /media/cdrom 这样的空目录中。如果您碰巧将设备挂装在包含了文件的目录上,那么除非卸装了已挂装的文件系统,否则您将无法看到那些文件。您的数据还在那里,但您无法访问它。

最后,我们已准备好挂装 CD-ROM 了。将光盘插入驱动器,关闭托盘,并输入 mount 命令: echidna:~ # mount /cdrom
echidna:~ # mount /cdrom

如果一切顺利,CD-ROM 驱动器将旋转一会儿,然后返回到命令提示符。那就对了!请注意,您也可以输入这条命令以获取相同的结果: mount /media/cdrom
mount /media/cdrom

一旦挂装了 CD,就可以使用光盘上的文件,因为现在它们是您文件系统的一部分。使用 ls 命令,可以显示 Software Evaluation Kit 的第 1 张光盘的内容:

清单 2. 显示 Software Evaluation Kit 的第 1 张光盘的内容
echidna:~ # ls /cdrom
.            contents.disc g2458531    sg245850  sg246228  template.css
..           db72pf5u      g2458611    sg245968  sg246261  wasi401u
autopp.ini   devcon        g2458621    sg245994  sg246264
autorun.exe  eclipswp      g2458631    sg246049  sg246277
autorun.inf  g245141b      index.html  sg246134  sg246299
echidna:~ #

Red Hat Linux 的挂装差异

还记得我们先前提到的名为 /etc/fstab 的目录吗?好的,它在 Red Hat Linux 7.2 上看上去可能如下所示:

清单 3. 显示 /etc/fstab
LABEL=/         /              ext3    defaults       1 1
none            /dev/pts       devpts  gid=5,mode=620 0 0
/dev/hda7       /download      ext2    defaults       1 2
none            /proc          proc    defaults       0 0
none            /dev/shm       tmpfs   defaults       0 0
/dev/hda8       swap           swap    defaults       0 0
/dev/cdrom      /mnt/cdrom     iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0        /mnt/floppy    auto    noauto,owner,kudzu 0 0

Red Hat 选择将 CD-ROM 设备挂装在 /mnt/cdrom 上而不是 /media/cdrom 上。如果在 root 目录上输入 ls / 命令,您不会看到 cdrom 项。Red Hat 安装没有象 SuSE 安装那样创建符号链接。要创建指向 /mnt/cdrom 的名为 /cdrom 的符号链接,输入这条命令: ln -s /mnt/cdrom /cdrom
ln -s /mnt/cdrom /cdrom

要除去这个链接,输入 rm 命令:
rm /cdrom

如果 Red Hat automount 没有自动地为您挂装 CD-ROM,那么可以使用 mount 命令:
mount /mnt/cdrom

或者,如果您创建了诸如 /cdrom 之类的符号链接的话,则可以用符号链接来替代它。

卸装并弹出 CD-ROM

在挂装了 CD-ROM 之后,Linux 会锁定 CD,因此无法用“弹出(Eject)”按钮弹出它。但是,当您不再需要该光盘时,如果您有 /cdrom 符号链接的话,可以使用 umount /cdrom 卸装它。(请注意 umount 的拼写,在 u 后面没有 n!)仅当没有用户使用该光盘时,该命令才会成功,使用光盘的情形包括某个终端窗口以光盘上的目录作为其当前工作目录。

您也可以使用 eject /cdrom 来卸装文件系统并弹出光盘。

如果您没有创建符号链接 /cdrom,那么可以改为使用 umount /media/cdrom (SuSE)或 umount /mnt/cdrom (Red Hat)。

注销

要从 SuSE Linux 7.3 注销,单击 Start Application,然后注销,或只需单击图 10 中所示的面板上的注销图标。

图 10. KDE 注销图标
图 10. KDE 注销图标

要从 Red Hat Linux 7.2 注销,单击 Main Menu,然后单击 Logout。如果您愿意在面板上添加注销图标,那是很容易的事情。在面板上某个位置单击鼠标右键,然后选择 Panel -> Add to panel -> Log out button,如图 11 所示。

图 11. 添加 GNOME 注销图标
图 11. 添加 GNOME 注销图标
图 11. 添加 GNOME 注销图标

注销图标将被添加到您的面板,如图 12 所示。

图 12. GNOME 注销图标
图 12. GNOME 注销图标
图 12. GNOME 注销图标

想要确保终端不被注销,单击挂锁(padlock)图标锁定屏幕。您将需要登录口令来解除屏幕锁定。

:在某些运行 KDE 的 SuSE 系统上,您可以锁定屏幕,但却不能用您的口令解除锁定。第一次发生此类情况时,您可能必须关机然后重新启动。要防止以后再出现此类情况,使 /etc/pam.d 中的 kscreensaver 与 xscreensaver 相同。例如,如果您希望将现有的 kscreensaver 保存为 kscreensaver.original,并希望确保新的 kscreensaver 与 xscreensaver(kscreensaver 从其复制而来)具有相同的时间戳记,那么请以 root 用户身份登录并使用下列命令:

cd /etc/pam.d
mv kscreensaver kscreensaver.original
cp -p xscreensaver kscreensaver

切换到另一个用户标识

您总是可以通过注销当前用户标识,然后以新的用户标识登录来切换到另一个用户标识。但是如果您只需要以另一个用户身份运行几个快捷的命令,那要怎么办呢?Linux 以 su (替代用户,substitute user)命令的形式向您提供了解决方案,该命令允许您暂时以另一个用户身份运行命令。这经常用于需要 root 访问权的任务。实际上,如果您使用终端程序(如 telnet)远程连接一个系统,那么许多 Linux 分发版会阻止您以 root 用户身份登录。这是良好的安全性做法,我们建议您不要尝试绕开这种限制。相反,您应该以非特权用户身份登录,然后使用 su 命令成为 root。

那么,让我们假定您已经登录并正在使用终端窗口,而且您不是 root 用户,但需要以 root 用户身份运行一条命令。用于这种情形的两种最常见的 su 形式是:

su
su -

第一种形式(不带 - 符号)只是将您切换成 root,但没有更改包括路径在内的环境变量。第二种形式使用了 - 符号,如果您确实喜欢输入额外的字母,也可以输入为 -l 或者 -login 。这允许读取替代用户的登录启动文件,从而设置诸如路径、环境和提示符之类的东西。清单 4 显示了这两种形式在 SuSE 7.3 系统上的示例。在两个示例中,我们都使用了 pwd (打印工作目录,print working directory)命令来显示当前工作目录。请注意提示符是如何变化的。如果您希望理解关于如何定制您自己的提示符,或想了解是什么使提示符以现在的形式显示的更多信息,请查阅“ Prompt magic”技巧文章( developerWorks,2000 年 9 月)。

清单 4. 切换到 root 用户
ian3@echidna:~> su
Password:
echidna:/home/ian3 #pwd
/home/ian3
        
ian3@echidna:~> su - Password: echidna:~ # pwd /root

您会注意到必须提供口令以切换到 root 用户,这一点都不足为奇。您还可以使用 su 命令切换到其他非 root 用户。例如:

su - db2inst1

如果您已经是 root 用户,则无需提供口令,但如果您不是 root 用户,那么必须提供正确的口令。

如果您正在使用 bash shell(它是大多数 Linux 系统上的缺省 shell),要返回前一个标识,只要按下 Ctrl-d 或输入 exit 并按回车键。

以另一个用户身份使用 GUI 应用程序

您可能注意到了,我们在 前一节 中讨论 su 命令时,只运行了在终端窗口中显示输出的命令。要能够运行 GUI 应用程序,您可能必须采取一些额外的步骤,具体步骤因 Linux 分发版而异。Linux 上的 GUI 应用程序使用 X Window 系统(X Window System),它旨在允许多个用户使用窗口化的应用程序通过网络访问计算机。下列步骤适用于具有单个用户的 Linux 系统,但请记住 X Window 系统的网络“本性”,这样就不会无意中开放系统,从而允许任意网络用户在您的系统上打开窗口。

X 显示器是通过 hostname:displaynumber.screennumber这种形式的名称知晓的。运行在工作站(如 PC)上的 Linux 通常只有一个带有单个屏幕的显示器。在这种情况下, displayname 可以(并且通常会)被省略,所以显示器称为 :0.0。我们假设您在阅读本文时是使用图形方式登录的,因此您的启动已经为您设置了 DISPLAY 环境变量。但是,当您使用 su 切换到不同用户时,不会设置这个变量。清单 5 展示了如何使用 echo 命令来显示 DISPLAY 环境变量,然后切换到另一个用户并尝试启动 xclock 应用程序,最初 DISPLAY 环境变量是空的,然后将其值设置为 :0.0。

清单 5. 尝试启动 xclock
ian3@echidna:~> whoami
ian3
ian3@echidna:~> echo $DISPLAY
:0.0
ian3@echidna:~> su - db2inst1
Password:
db2inst1@echidna:~> echo $DISPLAY
db2inst1@echidna:~> xclock
Error: Can't open display:
db2inst1@echidna:~> DISPLAY=:0.0
db2inst1@echidna:~> export DISPLAY
db2inst1@echidna:~> echo $DISPLAY
:0.0
db2inst1@echidna:~> xclock
Xlib: connection to ":0.0" refused by server
Xlib: Client is not authorized to connect to Server
Error: Can't open display: :0.0
db2inst1@echidna:~>

让我们研究一下这里发生的情况。在本例中,用户 ian3 登录到系统,并且正如我们所期望的那样,其 DISPLAY 环境变量被设置为 :0.0。当 ian3 切换成用户 db2inst1 时,不会设置 DISPLAY 环境变量,并且因为 xclock 应用程序不能打开显示器,所以启动 xclock 的尝试失败了。

因此,替代用户 db2inst1 设置了 DISPLAY 环境变量,并将它导出,以便它可用于可能从该终端窗口启动的其他 shell。请注意,设置和导出环境变量时不使用 $ 前缀符号,但显示和用其他方法使用该值时则使用 $ 作为前缀。可是,即使设置了环境变量,但 xclock 启动还是失败了。

第二次失败的原因在于 X 的客户机/服务器本质。尽管 db2inst1 运行在该系统唯一一个显示器上的窗口中,但该显示器实际上由最初登录的用户(在本例中是 ian3)所拥有。对于 ian3,该问题最简单的解决方案是使用 xhost 命令来允许系统上的其他用户可以使用该显示器。在您的桌面上打开另一个终端窗口并输入这条命令:

xhost +local:

请注意末尾的冒号(:)。这样将允许同一系统上的其他用户连接到 X 服务器并打开窗口。在当前示例中,运行 db2inst1 的窗口现在可以启动 xclock 或其他 X 应用程序了。

有关使用 xhost 的更多详细信息,可以使用命令 info xhostman xhost 来查看联机手册页。如果您对 X 连接的安全性感兴趣,可以从 Xsecure 的手册页入手。

将用户和组添加到您的系统

有时您需要在您的系统上定义新用户和用于这些用户的新组。在 WebSphere Application Server 中安装嵌入式消息传递组件时,您可能需要定义一个名为 mqm的用户,以及一个同样名为 mqm的组和另一个名为 mqbrkrs的组。通常您会首先定义组,然后定义将使用该组的用户,此处,我们也将这么做。您可以使用用于用户管理的图形工具,或者在终端窗口中输入命令。在此,我们将概述一个图形化过程,使用 SuSE 的 YaST2工具来创建名为 mqm的用户和名为 mqm的组。然后我们将告诉您到哪里找到相应的 Red Hat Linux 系统上的 工具。最后,如果您确实想从命令行完成任务,我们将向您介绍 命令

用 YaST2 将用户和组添加到您的系统

您可以从 KDE Control Center 启动 YaST2,这取决于您所安装的软件包。如果不行,您应该 打开一个终端窗口,然后使用 yast2 命令。使用后一种方法,您会看到类似于图 13 所示的窗口。如果您正在使用控制中心(Control Center),那么单击 YaST2 modules,然后单击 Security and Users。

图 13. YaST2 Control Center
YaST2 Control Center
YaST2 Control Center

单击 Edit and create groups项,然后(这取决于您是如何完成操作的)按 Launch按钮。在下一屏上,您将看到所有已存在的组。请注意,在您安装系统时,创建了许多系统组。如果您希望看到它们,请单击靠近屏幕底部的 Also view system groups复选框。

图 14. YaST2 用户和组管理
YaST2 用户和组管理
YaST2 用户和组管理

单击 Add按钮以添加新组。在本示例中,我们将在 Group name 字段中输入组名 mqm并使其他所有字段保持不变。然后单击 Create以创建该组。您将返回到图 14 所示的屏幕,现在它将向您显示新的组。用同样的方法,添加名为 mqbrkrs的组。

图 15. 添加组
图 15. 添加组
图 15. 添加组

这一次,当您返回到图 14 的屏幕时,您会看到两个新项。现在您已准备好添加 mqm 用户了。单击靠近屏幕顶部的 User administration单选按钮,然后您会从组管理切换到用户管理。再次请注意,这里有一个允许您查看系统用户的复选框。单击 Add按钮添加 mqm 用户。您可以指定该用户的姓名。将 User login>Detailsmqm 并指定口令。然后再次输入口令以确保没有犯打字错误。检查您的项,然后单击 Details 按钮,因为我们还要对这个用户进行更多操作。

图 16. 添加用户 — 第 1 部分
图 16. 添加用户 — 第 1 部分
图 16. 添加用户 — 第 1 部分

缺省情况下,会在 /home 中为新用户创建主目录,因此 mqm 的缺省主目录是 /home/mqm。但是,MQ Series 软件通常使用 /var/mqm 作为 mqm 用户的主目录,因此我们将主目录更改为 /var/mqm。我们还将使用下拉列表使 mqm 成为新用户的缺省组。最后,我们将向下滚动附加组列表,并使 mqm成为 mqbrkrs 组的成员。单击 Next返回到图 16 的屏幕,然后单击 Create以创建新用户。

图 17. 添加用户 — 第 2 部分
图 17. 添加用户 — 第 2 部分
图 17. 添加用户 — 第 2 部分

现在,我们要将 mqm 和 mqbrkrs 组添加到 root 用户标识。为了做到这一点,我们首先需要单击 Also view system users,然后单击 root用户这一行,然后单击 Edit按钮。和上面对 mqm 用户所做的一样,单击 Details,然后向下滚动 Additional groups列表,单击 mqm 和 mqbrkrs 组的复选框来将 root 添加到这些组。

图 18. 将组添加到用户
图 18. 将组添加到用户
图 18. 将组添加到用户

单击 Next返回到第一个编辑屏幕,然后单击 Next返回到用户管理屏幕。最后,单击 finish提交所有更改。

将用户和组添加到您的 Red Hat Linux 系统

出于本练习的目的,我们假定使用一个运行 GNOME 桌面的 Red Hat Linux 8.1 系统。如果您用的是 KDE 桌面或 Red Hat Linux 的不同版本,那么您会发现一些差异。复习本节和前一节,您就应该清楚会出现哪些步骤,并会得到完成任务所需的足够信息。

首先您需要启动 Red Hat User Manager。单击任务栏左边的 GNOME Menu图标(带有“红帽子”徽标),然后选择 System Settings,再选择 Users and Groups

图 19. 任务栏中的 Users and Groups
 图 19. 任务栏中的 Users and Groups

也可以从桌面上的 Start Here图标,先选择 System Settings,再选择 Users and Groups

图 20. Red Hat Start Here 图标
图 20. Red Hat Start Here 图标

如果您不是以 root 用户身份登录的,则在提示时需要提供 root 口令。然后您就会看到 Red Hat User Manager 屏幕。要查看系统用户和组,单击 preferences菜单下的过滤器设置,如 图 21所示。

图 21. Red Hat User Manager
Red Hat User Manager
Red Hat User Manager

我们可以象先前使用 SuSE 系统时所做的一样,首先定义我们的组。但是,Red Hat User Manager 有一个对我们来说很便利的功能,它会为用户创建一个私有组,它的组名和用户名相同。因此我们将单击 Add User 按钮并填入 mqm 用户的详细信息。记住请将主目录设置为 /var/mqm。

图 22. 在 Red Hat Linux 中添加用户
在 Red Hat Linux 中添加用户

单击 OK之后,您将返回到 Red Hat User Manager。单击 Add Group以添加 mqbrkrs 组。一旦定义了组,您就需要将 root 添加到 mqbrkrs 和 mqm 组。您可以选择组并使用其特性来添加用户,或者选择用户并使用其特性来添加组。我们将单击列表上方的 Users选项卡,然后单击 root 用户,再单击 Properties按钮以打开用户特性。当特性窗口打开时,单击 Groups选项卡,然后向下滚动到 mqm 和 mqbrkrs 项。分别单击这两项左边的复选框以添加选中标记,这表明现在 root 用户已经是这些组的成员了。完成后,单击 OK返回。

图 23. 将组添加到用户
图 23. 将组添加到用户

重复上述过程,使 mqm 用户成为 mqbrkrs 组的成员。如果您愿意,可以切换到组列表视图并尝试将 mqm 添加到组,而不是将 mqbrkrs 添加到用户。完成之后,可以关闭 Red Hat User Manager。

使用命令行添加用户和组

关于组的信息作为平面文件存储在 /etc/group 中。您可以使用 groupadd 命令添加新组。这非常简单。添加新用户要复杂一些,因为参数更多,并且在添加 mqm 用户时,您需要 mqm 组的数字号码。让我们使用 groupadd 命令添加两个组(mqm 和 mqbrkrs),然后使用 grep 命令搜索 /etc/group,这会告诉我们所分配的组号是什么。

[root@echidna root]# groupadd mqm
[root@echidna root]# groupadd mqbrkrs
[root@echidna root]# grep mq /etc/group
mqm:x:501:
mqbrkrs:x:502:

在本例中,mqm 组的组号是 501,而 mqbrkrs 的组号是 502。现在让我们使用 useradd 命令添加 mqm 用户。 -c 选项允许我们指定注释,它通常是用户的实名。 -d 选项允许我们为该用户指定主目录。 -g 选项指定用户的主组。这里我们使用 501,从前面可知,它就是 mqm 组。您系统上的号码可能与此不同。我们所使用的最后一个选项是 -G 选项,用来为该用户指定其他组。此处可以使用组名。一旦添加了用户,可以再次使用 grep 命令,您会看到已经将用户 mqm 添加到了 mqbrkrs 组。此时,您已经创建了新用户,但该用户没有口令,因此不能登录到系统。有些用户不需要登录,对于这些用户这样就可以了。root 用户拥有设置(或重新设置)其他用户口令的权限。要做到这一点,使用 passwd 命令并提供用户名作为参数。将会提示您输入新口令,然后会提示您再次输入以进行验证。

[root@echidna root]# useradd -c"MQ Messaging" -d/var/mqm -g 501 -G mqbrkrs mqm
[root@echidna root]# grep mq /etc/group
mqm:x:501:
mqbrkrs:x:502:mqm
[root@echidna root]# passwd mqm
Changing password for user mqm.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

最后,您可能需要将用户添加到现有的组。可以使用 usermod 命令来做到这一点,但您需要该用户的现有组的列表,因为您将用它替代其他组的列表。因此,只编辑 /etc/group 要容易些。首先制作一个备份副本,万一您犯了错误可以用备份来恢复。要将 root 用户添加到我们刚才创建的 mqm 组和 mqbrkrs 组,编辑 /etc/group,并更新 mqm 和 mqbrkrs 行,使它们如下所示。

mqm:x:501:mqm,root
mqbrkrs:x:502:mqm,root

您会在 /etc/passwd 中找到大量用户信息。但是,如果您不是专职系统管理员,您可能会发现通过图形界面执行偶尔的用户和组操作更容易些。


相关主题


评论

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Linux
ArticleID=21442
ArticleTitle=为您的 Linux 应用开发加油提速 2004: 针对 Linux 开发新手的基本任务
publish-date=01012003