Alan Formy-duval 发布的文章

无论是在安装过程中还是在桌面中,通过图形界面管理用户都非常容易。

添加用户是你在一个新系统上要做的第一件事。而且,你通常需要在计算机的整个生命周期中管理用户。

我的关于 useradd 命令文章提供了更深入的对 Linux 的用户管理的了解。useradd 是一个命令行工具,但是你也可以在 Linux 上以图形方式管理用户。这就是本文的主题。

在 Linux 安装过程中添加用户

大多数 Linux 发行版都提供了在安装过程中创建用户的步骤。例如,Fedora 30 安装程序 Anaconda 创建标准的 root 用户和另一个本地用户帐户。在安装过程中进入“配置”页面时,单击“用户设置”下的“用户创建”。

 title=

在用户创建页面上,输入用户的详细信息:全名、用户名和密码。你还可以选择是否使用户成为管理员。

 title=

点击“高级”按钮打开“高级用户配置”页面。如果需要除默认设置以外的其他设置,那么可以在此处指定主目录的路径以及用户和组 ID。你也可以输入用户所属的其他组。

 title=

在 Linux 桌面上添加用户

GNOME

许多 Linux 发行版都使用 GNOME 桌面。以下截图来自 Red Hat Enterprise Linux 8.0,但是在其他发行版(如 Fedora、Ubuntu 或 Debian)中,该过程相似。

首先打开“设置”。然后打开“详细”,选择“用户”,单击“解锁”,然后输入密码(除非你已经以 root 用户登录)。这样将用“添加用户”按钮代替“解锁”按钮。

 title=

现在,你可以通过单击“添加用户”,然后选择“帐户类型”然后输入“用户名”和“密码”来添加用户。

在下面的截图中,已经输入了用户名,设置保留为默认设置。我不必输入“用户名”,因为它是在我在“全名”字段中输入时自动创建的。如果你不喜欢自动补全,你仍然可以对其进行修改。

 title=

这将为名为 Sonny 的用户创建一个标准帐户。Sonny 首次登录时需要提供密码。

接下来,将显示用户。在此页面可以选择每个用户进行自定义或者删除。例如,你可能想选择一个头像或设置默认语言。

 title=

KDE

KDE 是另一个流行的 Linux 桌面环境。下面是 Fedora 30 上 KDE Plasma 的截图。你可以看到,在 KDE 中添加用户与在 GNOME 中添加用户非常相似。

 title=

总结

除 GNOME 和 KDE 外,其他桌面环境和窗口管理器也有图形用户管理工具。无论是在安装时还是安装后,在 Linux 中以图形方式添加用户都是快速简便的。


via: https://opensource.com/article/19/11/add-user-gui-linux

作者:Alan Formy-Duval 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

学习如何使用 chown 命令更改文件或目录的所有权。

Linux 系统上的每个文件和目录均由某个人拥有,拥有者可以完全控制更改或删除他们拥有的文件。除了有一个拥有用户外,文件还有一个拥有组

你可以使用 ls -l 命令查看文件的所有权:

[pablo@workstation Downloads]$ ls -l
total 2454732
-rw-r--r--. 1 pablo pablo 1934753792 Jul 25 18:49 Fedora-Workstation-Live-x86_64-30-1.2.iso

该输出的第三和第四列是拥有用户和组,它们一起称为所有权。上面的那个 ISO 文件这两者都是 pablo

所有权设置由 chmod 命令进行设置,控制允许谁可以执行读取、写入或运行的操作。你可以使用 chown 命令更改所有权(一个或两者)。

所有权经常需要更改。文件和目录一直存在在系统中,但用户不断变来变去。当文件和目录在系统中移动时,或从一个系统移动到另一个系统时,所有权也可能需要更改。

我的主目录中的文件和目录的所有权是我的用户和我的主要组,以 user:group 的形式表示。假设 Susan 正在管理 Delta 组,该组需要编辑一个名为 mynotes 的文件。你可以使用 chown 命令将该文件的用户更改为 susan,组更改为 delta

$ chown susan:delta mynotes
ls -l
-rw-rw-r--. 1 susan delta 0 Aug  1 12:04 mynotes

当给该文件设置好了 Delta 组时,它可以分配回给我:

$ chown alan mynotes
$ ls -l mynotes
-rw-rw-r--. 1 alan delta 0 Aug  1 12:04 mynotes

给用户后添加冒号(:),可以将用户和组都分配回给我:

$ chown alan: mynotes
$ ls -l mynotes
-rw-rw-r--. 1 alan alan 0 Aug  1 12:04 mynotes

通过在组前面加一个冒号,可以只更改组。现在,gamma 组的成员可以编辑该文件:

$ chown :gamma mynotes
$ ls -l
-rw-rw-r--. 1 alan gamma 0 Aug  1 12:04 mynotes

chown 的一些附加参数都能用在命令行和脚本中。就像许多其他 Linux 命令一样,chown 有一个递归参数(-R),它告诉该命令进入目录以对其中的所有文件进行操作。没有 -R 标志,你就只能更改文件夹的权限,而不会更改其中的文件。在此示例中,假定目的是更改目录及其所有内容的权限。这里我添加了 -v(详细)参数,以便 chown 报告其工作情况:

$ ls -l . conf
.:
drwxrwxr-x 2 alan alan 4096 Aug  5 15:33 conf

conf:
-rw-rw-r-- 1 alan alan 0 Aug  5 15:33 conf.xml

$ chown -vR susan:delta conf
changed ownership of 'conf/conf.xml' from alan:alan to  susan:delta
changed ownership of 'conf' from alan:alan to  susan:delta

根据你的角色,你可能需要使用 sudo 来更改文件的所有权。

在更改文件的所有权以匹配特定配置时,或者在你不知道所有权时(例如运行脚本时),可以使用参考文件(--reference=RFILE)。例如,你可以复制另一个文件(RFILE,称为参考文件)的用户和组,以撤消上面所做的更改。回想一下,点(.)表示当前的工作目录。

$ chown -vR --reference=. conf

报告更改

大多数命令都有用于控制其输出的参数。最常见的是 -v--verbose)以启用详细信息,但是 chown 还具有 -c--changes)参数来指示 chown 仅在进行更改时报告。chown 还会报告其他情况,例如不允许进行的操作。

参数 -f--silent--quiet)用于禁止显示大多数错误消息。在下一节中,我将使用 -f-c,以便仅显示实际更改。

保持根目录

Linux 文件系统的根目录(/)应该受到高度重视。如果命令在此层级上犯了一个错误,则后果可能会使系统完全无用。尤其是在运行一个会递归修改甚至删除的命令时。chown 命令具有一个可用于保护和保持根目录的参数,它是 --preserve-root。如果在根目录中将此参数和递归一起使用,那么什么也不会发生,而是会出现一条消息:

$ chown -cfR --preserve-root alan /
chown: it is dangerous to operate recursively on '/'
chown: use --no-preserve-root to override this failsafe

如果不与 --recursive 结合使用,则该选项无效。但是,如果该命令由 root 用户运行,则 / 本身的权限将被更改,但其下的其他文件或目录的权限则不会更改:

$ chown -c --preserve-root alan /
chown: changing ownership of '/': Operation not permitted
[root@localhost /]# chown -c --preserve-root alan /
changed ownership of '/' from root to alan

所有权即安全

文件和目录所有权是良好的信息安全性的一部分,因此,偶尔检查和维护文件所有权以防止不必要的访问非常重要。chown 命令是 Linux 安全命令集中最常见和最重要的命令之一。


via: https://opensource.com/article/19/8/linux-chown-command

作者:Alan Formy-Duval 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

chgrp 和 newgrp 命令可帮助你管理需要维护组所有权的文件。

在最近的一篇文章中,我介绍了 chown 命令,它用于修改系统上的文件所有权。回想一下,所有权是分配给一个对象的用户和组的组合。chgrpnewgrp 命令为管理需要维护组所有权的文件提供了帮助。

使用 chgrp

chgrp 只是更改文件的组所有权。这与 chown :<group> 命令相同。你可以使用:

$chown :alan mynotes

或者:

$chgrp alan mynotes

递归

chgrp 和它的一些参数可以用在命令行和脚本中。就像许多其他 Linux 命令一样,chgrp 有一个递归参数 -R。如下所示,你需要它来对文件夹及其内容进行递归操作。我加了 -v(详细)参数,因此 chgrp 会告诉我它在做什么:

$ ls -l . conf
.:
drwxrwxr-x 2 alan alan 4096 Aug  5 15:33 conf

conf:
-rw-rw-r-- 1 alan alan 0 Aug  5 15:33 conf.xml
# chgrp -vR delta conf
changed group of 'conf/conf.xml' from alan to delta
changed group of 'conf' from alan to delta

参考

当你要更改文件的组以匹配特定的配置,或者当你不知道具体的组时(比如你运行一个脚本时),可使用参考文件 (--reference=RFILE)。你可以复制另外一个作为参考的文件(RFILE)的组。比如,为了撤销上面的更改 (请注意,点 . 代表当前工作目录):

$ chgrp -vR --reference=. conf

报告更改

大多数命令都有用于控制其输出的参数。最常见的是 -v 来启用详细信息,而且 chgrp 命令也拥有详细模式。它还具有 -c--changes)参数,指示 chgrp 仅在进行了更改时报告。chgrp 还会报告其他内容,例如是操作不被允许时。

参数 -f--silent--quiet)用于禁止显示大部分错误消息。我将在下一节中使用此参数和 -c 来显示实际更改。

保持根目录

Linux 文件系统的根目录(/)应该受到高度重视。如果命令在此层级犯了一个错误,那么后果可能是可怕的,并会让系统无法使用。尤其是在运行一个会递归修改甚至删除的命令时。chgrp 命令有一个可用于保护和保持根目录的参数。它是 --preserve-root。如果在根目录中将此参数和递归一起使用,那么什么也不会发生,而是会出现一条消息:

[root@localhost /]# chgrp -cfR --preserve-root a+w /
chgrp: it is dangerous to operate recursively on '/'
chgrp: use --no-preserve-root to override this failsafe

不与递归(-R)结合使用时,该选项无效。但是,如果该命令由 root 用户运行,那么 / 的权限将会更改,但其下的其他文件或目录的权限则不会被更改:

[alan@localhost /]$ chgrp -c --preserve-root alan /
chgrp: changing group of '/': Operation not permitted
[root@localhost /]# chgrp -c --preserve-root alan /
changed group of '/' from root to alan

令人惊讶的是,它似乎不是默认参数。而选项 --no-preserve-root 是默认的。如果你在不带“保持”选项的情况下运行上述命令,那么它将默认为“无保持”模式,并可能会更改不应更改的文件的权限:

[alan@localhost /]$ chgrp -cfR alan /
changed group of '/dev/pts/0' from tty to alan
changed group of '/dev/tty2' from tty to alan
changed group of '/var/spool/mail/alan' from mail to alan

关于 newgrp

newgrp 命令允许用户覆盖当前的主要组。当你在所有文件必须有相同的组所有权的目录中操作时,newgrp 会很方便。假设你的内网服务器上有一个名为 share 的目录,不同的团队在其中存储市场活动照片。组名为 share。当不同的用户将文件放入目录时,文件的主要组可能会变得混乱。每当添加新文件时,你都可以运行 chgrp 将错乱的组纠正为 share

$ cd share
ls -l
-rw-r--r--. 1 alan share 0 Aug  7 15:35 pic13
-rw-r--r--. 1 alan alan 0 Aug  7 15:35 pic1
-rw-r--r--. 1 susan delta 0 Aug  7 15:35 pic2
-rw-r--r--. 1 james gamma 0 Aug  7 15:35 pic3
-rw-rw-r--. 1 bill contract  0 Aug  7 15:36 pic4

我在 chmod 命令的文章中介绍了 setgid 模式。它是解决此问题的一种方法。但是,假设由于某种原因未设置 setgid 位。newgrp 命令在此时很有用。在任何用户将文件放入 share 目录之前,他们可以运行命令 newgrp share。这会将其主要组切换为 share,因此他们放入目录中的所有文件都将有 share 组,而不是用户自己的主要组。完成后,用户可以使用以下命令切换回常规主要组(举例):

newgrp alan

总结

了解如何管理用户、组和权限非常重要。最好知道一些替代方法来解决可能遇到的问题,因为并非所有环境都以相同的方式设置。


via: https://opensource.com/article/19/9/linux-chgrp-and-newgrp-commands

作者:Alan Formy-Duval 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

virt-manager 为 Linux 虚拟化提供了全方位的选择。

在我关于 GNOME Boxes系列文章中,我已经解释了 Linux 用户如何能够在他们的桌面上快速启动虚拟机。当你只需要简单的配置时,Box 可以轻而易举地创建虚拟机。

但是,如果你需要在虚拟机中配置更多详细信息,那么你就需要一个工具,为磁盘、网卡(NIC)和其他硬件提供全面的选项。这时就需要 虚拟机管理器(Virtual Machine Manager)(virt-manager)了。如果在应用菜单中没有看到它,你可以从包管理器或命令行安装它:

  • 在 Fedora 上:sudo dnf install virt-manager
  • 在 Ubuntu 上:sudo apt install virt-manager

安装完成后,你可以从应用菜单或在命令行中输入 virt-manager 启动。

 title=

为了演示如何使用 virt-manager 创建虚拟机,我将设置一个 Red Hat Enterprise Linux 8 虚拟机。

首先,单击 “ 文件 File ” 然后点击 “ 新建虚拟机 New Virtual Machine ”。Virt-manager 的开发者已经标记好了每一步(例如,“ 第 1 步,共 5 步 Step 1 of 5 ”)来使其变得简单。单击 “ 本地安装介质 Local install media ” 和 “ 下一步 Forward ”。

 title=

在下个页面中,选择要安装的操作系统的 ISO 文件。(RHEL 8 镜像位于我的下载目录中。)Virt-manager 自动检测操作系统。

 title=

在步骤 3 中,你可以指定虚拟机的内存和 CPU。默认值为内存 1,024MB 和一个 CPU。

 title=

我想给 RHEL 充足的配置来运行,我使用的硬件配置也充足,所以我将它们(分别)增加到 4,096MB 和两个 CPU。

下一步为虚拟机配置存储。默认设置是 10GB 硬盘。(我保留此设置,但你可以根据需要进行调整。)你还可以选择现有磁盘镜像或在自定义位置创建一个磁盘镜像。

 title=

步骤 5 是命名虚拟机并单击“ 完成 Finish ”。这相当于创建了一台虚拟机,也就是 GNOME Boxes 中的一个 Box。虽然技术上讲是最后一步,但你有几个选择(如下面的截图所示)。由于 virt-manager 的优点是能够自定义虚拟机,因此在单击“ 完成 Finish ”之前,我将选中“ 在安装前定制配置 Customize configuration before install ”的复选框。

因为我选择了自定义配置,virt-manager 打开了一个有一组设备和设置的页面。这里是重点!

这里你也可以命名该虚拟机。在左侧列表中,你可以查看各个方面的详细信息,例如 CPU、内存、磁盘、控制器和许多其他项目。例如,我可以单击 “CPU” 来验证我在步骤 3 中所做的更改。

 title=

我也可以确认我设置的内存量。

当虚拟机作为服务器运行时,我通常会禁用或删除声卡。为此,请选择 “ 声卡 Sound ” 并单击 “ 移除 Remove ” 或右键单击 “ 声卡 Sound ” 并选择 “ 移除硬件 Remove Hardware ”。

你还可以使用底部的 “ 添加硬件 Add Hardware ” 按钮添加硬件。这会打开 “ 添加新的虚拟硬件 Add New Virtual Hardware ” 页面,你可以在其中添加其他存储设备、内存、声卡等。这就像可以访问一个库存充足的(虚拟)计算机硬件仓库。

 title=

对 VM 配置感到满意后,单击 “ 开始安装 Begin Installation ”,系统将启动并开始从 ISO 安装指定的操作系统。

Begin installing the OS

完成后,它会重新启动,你的新虚拟机就可以使用了。

 title=

Virtual Machine Manager 是桌面 Linux 用户的强大工具。它是开源的,是专有和封闭虚拟化产品的绝佳替代品。


via: https://opensource.com/article/19/9/introduction-virtual-machine-manager

作者:Alan Formy-Duval 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果你正在寻找一个简单、直观的界面,让你可以播放流媒体,可以尝试一下 GNOME 的 Internet Radio 插件。

网络广播是收听世界各地电台节目的好方法。和许多开发人员一样,我喜欢在编写代码时打开电台。你可以使用 MPlayermpv 等终端媒体播放器收听网络广播,我就是这样通过 Linux 命令行收听广播的。但是,如果你喜欢使用图形用户界面 (GUI),你可以尝试一下 GNOME Internet Radio,这是一个用于 GNOME 桌面的漂亮插件。你可以在包管理器中找到它。

 title=

使用图形桌面操作系统收听网络广播通常需要启动一个应用程序,比如 AudaciousRhythmbox。它们有很好的界面,很多选项,以及很酷的音频可视化工具。但如果你只想要一个简单、直观的界面播放你的流媒体,GNOME Internet Radio 就是你的选择。

安装之后,工具栏中会出现一个小图标,你可以在其中进行所有配置和管理。

 title=

我做的第一件事是进入设置菜单。我启用了以下两个选项:显示标题通知和显示音量调整。

 title=

GNOME Internet Radio 包含一些预置的电台,并且很容易添加其他电台。只需点击(“+”)符号即可。你需要输入一个频道名称,它可以是你喜欢的任何内容(包括电台名称)和电台地址。例如,我喜欢听 Synthetic FM。我输入名称(Synthetic FM),以及流地址(https://mediaserv38.live-streams.nl:2199/tunein/syntheticfm.pls)。

然后单击流旁边的星号将其添加到菜单中。

不管你听什么音乐,不管你选择什么类型,很明显,程序员需要他们的音乐!GNOME Internet Radio 插件使你可以轻松地让你排好喜爱的网络电台。


via: https://opensource.com/article/19/6/gnome-internet-radio

作者:Alan Formy-Duval 选题:lujun9972 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

和绝地武士的原力一样,-f 参数是很强大的,并伴随着潜在的毁灭性,在你能用好的时候又很便利。

近些年来,科幻发烧友开始在每年的 5 月 4 日庆祝星战节,其口号是绝地武士的祝福语”愿 原力 Force 和你同在“。虽然大多数 Linux 用户可能不是绝地武士,但我们依然可以使用 原力 Force 。自然,如果尤达大师只是叫天行者卢克输入什么 “man X-Wing 战机“、“man 原力”,或者 RTFM(去读原力手册,肯定是这个意思对不对),那这电影肯定没啥意思。(LCTT 译注:RTFM 是 “Read The Fucking Manual” 的缩写 —— 读读该死的手册吧)。

很多 Linux 命令都有 -f 选项,意思你现在肯定也知道了,原力(LCTT 译注:force 选项原意是“强制”)!很多时候你先尝试执行命令然后失败了,或者提示你需要补充输入更多选项。通常这都是为了保护你试着改变的文件,或者告诉用户该设备正忙或文件已经存在之类的。

如果你不想被这些提醒打扰或者压根就不在乎,就使用原力吧!

不过要小心,通常使用原力选项是摧毁性的。所以用户一定要格外注意!并且确保你知道自己在做什么!用原力就要承担后果!

以下是一些常见 Linux 命令的原力选项和它们的效果,以及常见使用场景。

cp

cp 是 “copy” 的缩写,这是个被用来复制文件或者目录的命令。其 man 页面 说:

-f, –force

如果已经存在的目标文件无法被打开,删除它并重试

你可能会用它来处理只读状态的文件:

[alan@workstation ~]$ ls -l
total 8
-rw-rw---- 1 alan alan 13 May 1 12:24 Hoth
-r--r----- 1 alan alan 14 May 1 12:23 Naboo
[alan@workstation ~]$ cat Hoth Naboo
Icy Planet

Green Planet

如果你想要复制一个叫做 Hoth 的文件到 Naboo,但因为 Naboo 目前是只读状态,cp 命令不会执行:

[alan@workstation ~]$ cp Hoth Naboo
cp: cannot create regular file 'Naboo': Permission denied

但通过使用原力,cp 会强制执行。Hoth 的内容和文件权限会直接被复制到 Naboo

[alan@workstation ~]$ cp -f Hoth Naboo
[alan@workstation ~]$ cat Hoth Naboo
Icy Planet

Icy Planet

[alan@workstation ~]$ ls -l
total 8
-rw-rw---- 1 alan alan 12 May 1 12:32 Hoth
-rw-rw---- 1 alan alan 12 May 1 12:38 Naboo

ln

ln 命令是用来在文件之间建立链接的,其 man 页面 描述的原力选项如下:

-f, –force

移除当前存在的文件

假设莱娅公主在维护一个 Java 应用服务器,并且她又一个存放这所有 Java 版本的目录,比如:

leia@workstation:/usr/lib/java$ ls -lt
total 28
lrwxrwxrwx 1 leia leia   12 Mar  5  2018 jdk -> jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Mar  5  2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28  2017 jdk1.8.0_144

正如你所看到的,这里有很多个版本的 JDK,并有一个符号链接指向最新版的 JDK。她接着用一个脚本来安装最新版本的 JDK。但是如果没有原力选项的话以下命令是不会成功的:

tar xvzmf jdk1.8.0_181.tar.gz -C jdk1.8.0_181/
ln -vs jdk1.8.0_181 jdk

tar 命令会解压 .gz 文件到一个特定的目标目录,但 ln 命令会失败,因为这个链接已经存在了。这样的结果是该符号链接不会指向最新版本的 JDK:

leia@workstation:/usr/lib/java$ ln -vs jdk1.8.0_181 jdk
ln: failed to create symbolic link 'jdk/jdk1.8.0_181': File exists
leia@workstation:/usr/lib/java$ ls -lt
total 28
drwxr-x--- 2 leia leia 4096 May  1 15:44 jdk1.8.0_181
lrwxrwxrwx 1 leia leia   12 Mar  5  2018 jdk -> jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Mar  5  2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28  2017 jdk1.8.0_144

她可以通过使用原力选项强制 ln 更新链接,但这里她还需要使用 -n-n 是因为这个情况下链接其实指向一个目录而非文件。这样的话,链接就会正确指向最新版本的JDK了。

leia@workstation:/usr/lib/java$ ln -vsnf jdk1.8.0_181 jdk
'jdk' -> 'jdk1.8.0_181'
leia@workstation:/usr/lib/java$ ls -lt
total 28
lrwxrwxrwx 1 leia leia 12 May 1 16:13 jdk -> jdk1.8.0_181
drwxr-x--- 2 leia leia 4096 May 1 15:44 jdk1.8.0_181
drwxr-xr-x 8 leia leia 4096 Mar 5 2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28 2017 jdk1.8.0_144

你可以配置 Java 应用使其一直使用在 /usr/lib/java/jdk 处的 JDK,而不用每次升级都更新。

rm

rm 命令是 “remove” 的缩写(也叫做删除,因为某些系统 del 命令也干这事)。其 man 页面 对原力选项的描述如下:

-f, –force

无视不存在的文件或者参数,不向用户确认

如果你尝试删除一个只读的文件,rm 会寻求用户的确认:

[alan@workstation ~]$ ls -l
total 4
-r--r----- 1 alan alan 16 May  1 11:38 B-wing
[alan@workstation ~]$ rm B-wing 
rm: remove write-protected regular file 'B-wing'?

你一定要输入 y 或者 n 来回答确认才能让 rm 命令继续。如果你使用原力选项,rm 就不会寻求你的确认而直接删除文件:

[alan@workstation ~]$ rm -f B-wing
[alan@workstation ~]$ ls -l
total 0
[alan@workstation ~]$

最常见的 rm 原力选项用法是用来删除目录。 -r(递归)选项会让 rm 删除目录,当和原力选项结合起来,它会删除这个文件夹及其内容而无需用户确认。

rm 命令和一些选项结合起来是致命的,一直以来互联网上都有关于误用 rm 删除整个系统之类的玩笑和鬼故事。比如最出名的一不当心执行 rm -rf . 会直接删除目录和文件(没有用户确认)。(LCTT 译注:真的这么干过的校对飘过~~请按下回车前再三确认:我是谁,我在哪里,我在干什么)

userdel

userdel 命令使用来删除用户的。其 man 页面 是这样描述它的原力选项的:

-f, –force

这个选项会强制移除用户,即便用户当前处于登入状态。它同时还会强制 删除用户的目录和邮件存储,即便这个用户目录被别人共享或者邮件存储并不 属于这个用户。如果 USERGROUPS_ENAB/etc/login.defs 里是 yes 并且有一个组和此用户同名的话,这个组也会被移除,即便这个组还是别 的用户的主要用户组也一样。

注意:这个选项有风险并可能让系统处于不稳定状态。

当欧比旺抵达穆斯塔法星的时候,他知道自己的使命。他需要删掉达斯·维达的用户账户——而达斯还在里面呢。

[root@workstation ~]# ps -fu darth
UID        PID  PPID  C STIME TTY          TIME CMD
darth     7663  7655  0 13:28 pts/3    00:00:00 -bash
[root@workstation ~]# userdel darth
userdel: user darth is currently used by process 7663

因为达斯还登在系统里,欧比旺需要使用原力选项操作 userdel。这能强制删除当前登入的用户。

[root@workstation ~]# userdel -f darth
userdel: user darth is currently used by process 7663
[root@workstation ~]# finger darth
finger: darth: no such user.
[root@workstation ~]# ps -fu darth
error: user name does not exist

正如我们所见到的一样,fingerps 命令让我们确认了达斯已经被删除了。

在 Shell 脚本里使用原力

很多命令都有原力选项,而在 shell 脚本里他们特别有用。因为我们经常使用脚本完成定期或者自动化的任务,避免用户输入至关重要,不然的话自动任务就无法完成了

我希望上面的几个例子能帮你理解一些需要使用原力的情况。你在命令行使用原力或把它们写入脚本之前应当完全理解它们的作用。误用原力会有毁灭性的后果——时常是对整个系统,甚至不仅限于一台设备。


via: https://opensource.com/article/19/5/may-the-force-linux

作者:Alan Formy-Duval 选题:lujun9972 译者:Jerry Ling 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出