From fda6fa348ffa41f79047a9cbc74e7a3b78f611ef Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Tue, 19 Nov 2019 23:18:03 +0800 Subject: [PATCH 1/3] PRF --- ...hat you probably didn-t know about sudo.md | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/translated/tech/20191029 What you probably didn-t know about sudo.md b/translated/tech/20191029 What you probably didn-t know about sudo.md index 7843c56405..0e6db4b6ad 100644 --- a/translated/tech/20191029 What you probably didn-t know about sudo.md +++ b/translated/tech/20191029 What you probably didn-t know about sudo.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (What you probably didn’t know about sudo) @@ -10,7 +10,7 @@ 关于 sudo 你可能不知道的 ====== -> 认为你已经了解了 sudo 的所有知识吗?再想想。 +> 觉得你已经了解了 sudo 的所有知识了吗?再想想。 ![Command line prompt][1] @@ -18,11 +18,11 @@ 有 root 用户和 `su` 命令,那么为什么还要使用另一个工具呢?对于许多人来说,`sudo` 只是管理命令的前缀。只有极少数人提到,当你在同一个系统上有多个管理员时,可以使用 `sudo` 日志查看谁做了什么。 -那么,`sudo` 是什么? 根据 [sudo 网站] [2]: +那么,`sudo` 是什么? 根据 [sudo 网站][2]: > “sudo 允许系统管理员通过授予某些用户以 root 用户或其他用户身份运行某些命令的能力,同时提供命令及其参数的审核记录,从而委派权限。” -默认情况下,`sudo` 带有简单的配置,一条规则允许一个用户或一组用户执行几乎所有操作(在本文后面的配置文件中有更多信息): +默认情况下,`sudo` 只有简单的配置,一条规则允许一个用户或一组用户执行几乎所有操作(在本文后面的配置文件中有更多信息): ``` %wheel ALL=(ALL) ALL @@ -35,37 +35,37 @@ * 第三个参数(`(ALL)`)定义了可以执行命令的用户名。 * 最后一个参数(`ALL`)定义可以运行的应用程序。 -因此,在此示例中,`wheel` 组的成员可以以所有主机上的所有用户身份运行所有应用程序。即使这个一切允许的规则也很有用,因为它会记录谁在的计算机上做了什么。 +因此,在此示例中,`wheel` 组的成员可以以所有主机上的所有用户身份运行所有应用程序。但即使是这个一切允许的规则也很有用,因为它会记录谁在计算机上做了什么。 ### 别名 -当然,它不仅可以让你和你最好的朋友管理一个共享机器,你还可以微调权限。你可以将以上配置中的项目替换为列表:用户列表、命令列表等。 多数情况下,你可能会复制并粘贴配置中的一些列表。 +当然,它不仅可以让你和你最好的朋友管理一个共享机器,你还可以微调权限。你可以将以上配置中的项目替换为列表:用户列表、命令列表等。多数情况下,你可能会复制并粘贴配置中的一些列表。 -在这种情况下,别名可以派上用场。在多个位置维护相同的列表容易出错。你可以定义一次别名,然后可以多次使用。因此,当你对一位管理员失去信任时,可以将其从别名中删除就行了。使用多个列表而不是别名,很容易忘记从具有较高特权的列表之一中删除用户。 +在这种情况下,别名可以派上用场。在多个位置维护相同的列表容易出错。你可以定义一次别名,然后可以多次使用。因此,当你对一位管理员不再信任时,将其从别名中删除就行了。使用多个列表而不是别名,很容易忘记从具有较高特权的列表之一中删除用户。 ### 为特定组的用户启用功能 -`sudo` 命令带有大量默认设置。不过,在某些情况下,你想覆盖其中的一些情况,这时你可以在配置中使用 `Defaults` 语句。通常,对每个用户都强制使用这些默认值,但是你可以根据主机、用户名等将设置缩小到一部分用户。这有个我那一代的系统管理员喜欢玩的一个示例:“羞辱”。这些只是一些有人输入错误密码时的有趣信息: +`sudo` 命令带有大量默认设置。不过,在某些情况下,你想覆盖其中的一些情况,这时你可以在配置中使用 `Defaults` 语句。通常,对每个用户都强制使用这些默认值,但是你可以根据主机、用户名等将设置缩小到一部分用户。这里有个我那一代的系统管理员都喜欢玩的一个示例:“羞辱”。这些只不过是一些有人输入错误密码时的有趣信息: ``` czanik@linux-mewy:~> sudo ls [sudo] password for root: -Hold it up to the light --- not a brain in sight! +Hold it up to the light --- not a brain in sight! # 把灯举高点,脑仁太小看不到 [sudo] password for root: -My pet ferret can type better than you! +My pet ferret can type better than you! # 我的宠物貂也比你输入的好 [sudo] password for root: sudo: 3 incorrect password attempts czanik@linux-mewy:~> ``` -由于并非所有人都喜欢系统管理员的这种幽默,因此默认情况下将禁用这些羞辱信息。以下示例说明了如何仅对经验丰富的系统管理员(即 `wheel` 组的成员)启用此设置: +由于并非所有人都喜欢系统管理员的这种幽默,因此默认情况下会禁用这些羞辱信息。以下示例说明了如何仅对经验丰富的系统管理员(即 `wheel` 组的成员)启用此设置: ``` Defaults !insults Defaults:%wheel insults ``` -我想感谢我将这些消息带回来的人用两只手也数不过来吧。 +我想,感谢我将这些消息带回来的人用两只手也数不过来吧。 ### 摘要验证 @@ -79,15 +79,15 @@ peter ALL = sha244:11925141bb22866afdf257ce7790bd6275feda80b3b241c108b79c88 /usr ### 会话记录 -会话记录也是 `sudo` 鲜为人知的功能。在演示之后,许多人离开我的演讲后就在计划在其基础设施上实施它。为什么?因为使用会话记录,你不仅可以看到命令名称,还可以看到终端中发生的所有事情。你可以看到你的管理员在做什么,即使他们具有 shell 访问权限,而日志仅显示启动了 `bash`。 +会话记录也是 `sudo` 鲜为人知的功能。在演示之后,许多人离开我的演讲后就计划在其基础设施上实施它。为什么?因为使用会话记录,你不仅可以看到命令名称,还可以看到终端中发生的所有事情。你可以看到你的管理员在做什么,要不他们用 shell 访问了机器而日志仅会显示启动了 `bash`。 -当前有一个限制。记录存储在本地,因此具有足够的权限的话,用户可以删除他们的痕迹。请继续关注即将推出的功能。 +当前有一个限制。记录存储在本地,因此具有足够的权限的话,用户可以删除他们的痕迹。所以请继续关注即将推出的功能。 ### 插件 -从 1.8 版开始,`sudo` 更改为基于插件的模块化体系结构。通过将大多数功能实现为插件,你可以编写自己的功能轻松地替换或扩展 `sudo` 的功能。已有 `sudo` 可用的开源和商业插件。 +从 1.8 版开始,`sudo` 更改为基于插件的模块化体系结构。通过将大多数功能实现为插件,你可以编写自己的功能轻松地替换或扩展 `sudo` 的功能。已经有了 `sudo` 上的开源和商业插件。 -在我的演讲中,我演示了 `sudo_pair` 插件,该插件可在 [GitHub][3] 上获得。这个插件是用 Rust 开发的,这意味着它不是那么容易编译,甚至更难以分发编译结果。另一方面,该插件提供了有趣的功能,需要第二个管理员通过 `sudo` 批准(或拒绝)运行命令。不仅如此,如果有可疑活动,可以在屏幕上跟踪会话并终止会话。 +在我的演讲中,我演示了 `sudo_pair` 插件,该插件可在 [GitHub][3] 上获得。这个插件是用 Rust 开发的,这意味着它不是那么容易编译,甚至更难以分发其编译结果。另一方面,该插件提供了有趣的功能,需要第二个管理员通过 `sudo` 批准(或拒绝)运行命令。不仅如此,如果有可疑活动,可以在屏幕上跟踪会话并终止会话。 在最近的 All Things Open 会议上的一次演示中,我做了一个臭名昭著的演示: @@ -95,11 +95,11 @@ peter ALL = sha244:11925141bb22866afdf257ce7790bd6275feda80b3b241c108b79c88 /usr czanik@linux-mewy:~> sudo  rm -fr / ``` -看着屏幕上显示的命令。每个人都屏住呼吸,想看看我的笔记本电脑是否被毁了,但它仍然幸免了。 +看着屏幕上显示的命令。每个人都屏住呼吸,想看看我的笔记本电脑是否被毁了,然而它逃过一劫。 ### 日志 -正如我在开始时已经提到的,日志记录和警报是 `sudo` 的重要组成部分。如果你不会定期检查 `sudo` 日志,那么日志在使用 `sudo` 中并没有太多价值。该工具通过电子邮件提醒配置中指定的事件,并将所有事件记录到 syslog 中。可以打开调试日志用于调试规则或报告错误。 +正如我在开始时提到的,日志记录和警报是 `sudo` 的重要组成部分。如果你不会定期检查 `sudo` 日志,那么日志在使用 `sudo` 中并没有太多价值。该工具通过电子邮件提醒配置中指定的事件,并将所有事件记录到 syslog 中。可以打开调试日志用于调试规则或报告错误。 ### 警报 @@ -107,11 +107,11 @@ czanik@linux-mewy:~> sudo  rm -fr / ### 配置 -我们谈论了很多 `sudo` 功能,甚至看到了几行配置。现在,让我们仔细看看 `sudo` 的配置方式。配置本身可以在 `/etc/sudoers` 中获得,这是一个简单的文本文件。不过,不建议直接编辑此文件。相反,请使用 `visudo`,因为此工具还会执行语法检查。如果你不喜欢 `vi`,则可以通过将 `EDITOR` 环境变量指向你的首选编辑器来更改要使用的编辑器。 +我们谈论了很多 `sudo` 功能,甚至还看到了几行配置。现在,让我们仔细看看 `sudo` 的配置方式。配置本身可以在 `/etc/sudoers` 中获得,这是一个简单的文本文件。不过,不建议直接编辑此文件。相反,请使用 `visudo`,因为此工具还会执行语法检查。如果你不喜欢 `vi`,则可以通过将 `EDITOR` 环境变量指向你的首选编辑器来更改要使用的编辑器。 -在开始编辑 `sudo` 配置之前,请确保你知道 root 密码。(是的,即使在默认情况下 root 用户没有密码的 Ubuntu 上也是如此。)虽然 `visudo` 会检查语法,但创建语法正确而将你锁定在系统之外的配置很容易。 +在开始编辑 `sudo` 配置之前,请确保你知道 root 密码。(是的,即使在默认情况下 root 用户没有密码的 Ubuntu 上也是如此。)虽然 `visudo` 会检查语法,但创建语法正确而将你锁定在系统之外的配置也很容易。 -如果在紧急情况下,而你手头有 root 密码,你也可以编辑配置。当涉及到 `sudoers` 文件时,有一件重要的事情要记住:从上到下读取该文件,以最后的设置为准。这个事实对你来说意味着你应该从通用设置开始,并在末尾放置例外情况,否则,通用设置会覆盖例外情况。 +如果在紧急情况下,而你手头有 root 密码,你也可以直接编辑配置。当涉及到 `sudoers` 文件时,有一件重要的事情要记住:从上到下读取该文件,以最后的设置为准。这个事实对你来说意味着你应该从通用设置开始,并在末尾放置例外情况,否则,通用设置会覆盖例外情况。 你可以在下面看到一个基于 CentOS 的简单 `sudoers` 文件,并添加我们之前讨论的几行: @@ -133,13 +133,13 @@ Defaults log_output 该文件从更改多个默认值开始。然后是通常的默认规则:`root` 用户和 `wheel` 组的成员对计算机具有完全权限。接下来,我们对 `wheel` 组启用“羞辱”,但对其他所有人禁用它们。最后一行启用会话记录。 -上面的配置在语法上是正确的,但是你可以发现逻辑错误吗?是的,有一个:上一个通用设置覆盖了先前的更具体设置,所有人均禁用了“羞辱”。一旦交换了这两行的位置,设置就会按预期进行:`wheel` 组的成员会收到有趣的消息,但其他用户则不会收到。 +上面的配置在语法上是正确的,但是你可以发现逻辑错误吗?是的,有一个:后一个通用设置覆盖了先前的更具体设置,让所有人均禁用了“羞辱”。一旦交换了这两行的位置,设置就会按预期进行:`wheel` 组的成员会收到有趣的消息,但其他用户则不会收到。 ### 配置管理 一旦必须在多台机器上维护 `sudoers` 文件,你很可能希望集中管理配置。这里主要有两种可能的开源方法。两者都有其优点和缺点。 -你可以使用也可以用来配置其余基础设施的配置管理应用程序之一:Red Hat Ansible、Puppet 和 Chef 都具有用于配置 `sudo` 的模块。这种方法的问题在于更新配置远非实时。同样,用户仍然可以在本地编辑 `sudoers` 文件并更改设置。 +你可以使用也用来配置其余基础设施的配置管理应用程序之一:Red Hat Ansible、Puppet 和 Chef 都具有用于配置 `sudo` 的模块。这种方法的问题在于更新配置远非实时。同样,用户仍然可以在本地编辑 `sudoers` 文件并更改设置。 `sudo` 工具也可以将其配置存储在 LDAP 中。在这种情况下,配置更改是实时的,用户不能弄乱`sudoers` 文件。另一方面,该方法也有局限性。例如,当 LDAP 服务器不可用时,你不能使用别名或使用 `sudo`。 @@ -157,7 +157,7 @@ Defaults log_output    ### 总结 -希望本文能向你证明 `sudo` 不仅仅是一个简单的命令前缀。有无数种可能性可以微调系统上的权限。你不仅可以微调权限,还可以通过检查摘要来提高安全性。会话记录使你能够检查系统上正在发生的事情。你也可以使用插件扩展 `sudo` 的功能,或者使用已有的插件或编写自己的插件。最后,从即将发布的功能列表中,你可以看到,即使 `sudo` 已有数十年的历史,它也是一个不断发展的有生命的项目。 +希望本文能向你证明 `sudo` 不仅仅是一个简单的命令前缀。有无数种可能性可以微调系统上的权限。你不仅可以微调权限,还可以通过检查摘要来提高安全性。会话记录使你能够检查系统上正在发生的事情。你也可以使用插件扩展 `sudo` 的功能,或者使用已有的插件或编写自己的插件。最后,从即将发布的功能列表中你可以看到,即使 `sudo` 已有数十年的历史,它也是一个不断发展的有生命力的项目。 如果你想了解有关 `sudo` 的更多信息,请参考以下资源: @@ -172,7 +172,7 @@ via: https://opensource.com/article/19/10/know-about-sudo 作者:[Peter Czanik][a] 选题:[lujun9972][b] 译者:[wxy](https://github.com/wxy) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From 8bde4ced910744d2edbd17a114c932c5a36419e2 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 20 Nov 2019 09:19:03 +0800 Subject: [PATCH 2/3] PUB @wxy https://linux.cn/article-11595-1.html --- .../20191029 What you probably didn-t know about sudo.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename {translated/tech => published}/20191029 What you probably didn-t know about sudo.md (98%) diff --git a/translated/tech/20191029 What you probably didn-t know about sudo.md b/published/20191029 What you probably didn-t know about sudo.md similarity index 98% rename from translated/tech/20191029 What you probably didn-t know about sudo.md rename to published/20191029 What you probably didn-t know about sudo.md index 0e6db4b6ad..ce4502ba8a 100644 --- a/translated/tech/20191029 What you probably didn-t know about sudo.md +++ b/published/20191029 What you probably didn-t know about sudo.md @@ -1,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11595-1.html) [#]: subject: (What you probably didn’t know about sudo) [#]: via: (https://opensource.com/article/19/10/know-about-sudo) [#]: author: (Peter Czanik https://opensource.com/users/czanik) @@ -12,7 +12,7 @@ > 觉得你已经了解了 sudo 的所有知识了吗?再想想。 -![Command line prompt][1] +![](https://img.linux.net.cn/data/attachment/album/201911/20/091740ape5b74jppjj4q36.jpg) 大家都知道 `sudo`,对吗?默认情况下,该工具已安装在大多数 Linux 系统上,并且可用于大多数 BSD 和商业 Unix 变体。不过,在与数百名 `sudo` 用户交谈之后,我得到的最常见的答案是 `sudo` 是一个使生活复杂化的工具。 @@ -161,7 +161,7 @@ Defaults log_output 如果你想了解有关 `sudo` 的更多信息,请参考以下资源: -* [sudo `网站][5] +* [sudo 网站][5] * [sudo 博客][6] * [在 Twitter 上关注我们][7] From 4ba202c41b2583e63856a22d1181a205b5929001 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Wed, 20 Nov 2019 09:55:39 +0800 Subject: [PATCH 3/3] PRF --- ... Schedule and Automate tasks in Linux using Cron Jobs.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/published/20191106 How to Schedule and Automate tasks in Linux using Cron Jobs.md b/published/20191106 How to Schedule and Automate tasks in Linux using Cron Jobs.md index 6d380030f0..93727092b0 100644 --- a/published/20191106 How to Schedule and Automate tasks in Linux using Cron Jobs.md +++ b/published/20191106 How to Schedule and Automate tasks in Linux using Cron Jobs.md @@ -60,7 +60,7 @@ m h d moy dow /path/to/script * `h`:表示小时,范围是 0 到 23 * `d`:代表一个月中的某天,范围是 1 到 31 * `moy`:这是一年中的月份。范围是 1 到 12 -* `doy`:这是星期几。范围是 0 到 6,其中 0 代表星期日 +* `dow`:这是星期几。范围是 0 到 6,其中 0 代表星期日 * `command`:这是要执行的命令,例如备份命令、重新启动和复制命令等 ### 管理 cron 任务 @@ -197,9 +197,9 @@ m h d moy dow /path/to/script @daily /path/to/script ``` -3)`@weekly` 时间戳等效于 `0 0 1 * mon` +3)`@weekly` 时间戳等效于 `0 0 * * 0` -它在每周的第一分钟执行 cron 任务,一周第一天是从星期一开始的。 +它在每周的第一分钟执行 cron 任务,一周第一天是从星期日开始的。 ``` @weekly /path/to/script