标签 sudo 下的文章

在 Linux 和其他的类 Unix 操作系统中,只有 root 用户可以运行所有的命令,才能在系统中执行那些需要鉴权的操作,比如安装、升级和移除软件包、创建用户和用户组、修改系统重要的配置文件等等。

然而,系统管理员,比如说 root 用户,可以通过 sudo 命令 和一些配置选项来给普通用户进行授权,从而让该普通用户可以运行某些命令已经上述的那些相当重要的系统级操作。

另外,系统管理员还可以分享 root 用户密码 (这个做法是不值得提倡的),这样普通用户就可以通过 su 命令来转化为 root 用户角色。.

sudo 允许已授权用户按照指定的安全策略、以 root 用户 (或者是其他的用户角色) 权限来执行某个命令。

  1. sudo 会读取和解析 /etc/sudoers 文件,查找调用命令的用户及其权限。
  2. 然后提示调用该命令的用户输入密码 (通常是用户密码,但也可能是目标用户的密码,或者也可以通过 NOPASSWD 标志来跳过密码验证)。
  3. 这之后, sudo 会创建一个子进程,调用 setuid() 来切换到目标用户。
  4. 接着,它会在上述子进程中执行参数给定的 shell 或命令。

以下列出十个 /etc/sudoers 文件配置,使用 Defaults 项修改 sudo 命令的行为。

$ sudo cat /etc/sudoers

/etc/sudoers 文件:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults    logfile="/var/log/sudo.log"
Defaults    lecture="always"
Defaults    badpass_message="Password is wrong, please try again"
Defaults    passwd_tries=5
Defaults    insults
Defaults    log_input,log_output

Defaults 项的类型

Defaults                parameter,   parameter_list     ### 对任意主机登录的所有用户起作用
Defaults@Host_List      parameter,   parameter_list     ### 对指定主机登录的所有用户起作用
Defaults:User_List      parameter,   parameter_list     ### 对指定用户起作用
Defaults!Cmnd_List      parameter,   parameter_list     ### 对指定命令起作用
Defaults>Runas_List     parameter,   parameter_list     ### 对以指定目标用户运行命令起作用

在本文讨论范围内,我们下面的将以第一个 Defaults 作为基准来参考。parameter 参数可以是标记 (flags)、整数值或者是列表 (list)。

值得注意的是,标记 (flag) 是指布尔类型值,可以使用 ! 操作符来进行取反,列表 (list) 有两个赋值运算符:+= (添加到列表) 和 -= (从列表中移除)。

Defaults     parameter
或
Defaults     parameter=值
或
Defaults     parameter -=值
Defaults     parameter +=值
或
Defaults     !parameter

1、 安置一个安全的 PATH 环境变量

PATH 环境变量应用于每个通过 sudo 执行的命令,需要注意两点:

  1. 当系统管理员不信任 sudo 用户,便可以设置一个安全的 PATH 环境变量。
  2. 该设置将 root 的 PATH 和用户的 PATH 分开,只有在 exempt_group 组的用户不受该设置的影响。

可以添加以下内容来设置:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

2、 允许 tty 用户会话使用 sudo

该设置允许在一个真实的 tty 中进行调用 sudo,但不允许通过 cron 或者 cgi-bin 脚本等方法来调用。添加以下内容来设置:

Defaults  requiretty   

3、 使用 pty 运行 sudo 命令

少数情况下,攻击者可以通过 sudo 来运行一个恶意程序 (比如病毒或者恶意代码),这种恶意程序可能会分叉出一个后台运行的进程,即使主程序完成执行,它仍能够运行在用户的终端设备上。

为了防止出现这样的情况,你可以通过 use_pty 参数来设置 sudo 使用伪终端来运行其他命令,而不必管 I/O 日志的开启状态。如下:

Defaults  use_pty

4、 创建 sudo 日志文件

默认下,sudo 通过 syslog(3) 来记录到日志。但是我们可以通过 logfile 参数来指定一个自定义的日志文件。如下:

Defaults  logfile="/var/log/sudo.log"

使用 log_hostlog_year 参数可以对应记录日志主机名和 4 位数年份到自定义日志文件。如下:

Defaults  log_host, log_year, logfile="/var/log/sudo.log"

下面是自定义 sudo 日志文件的例示:

Create Custom Sudo Log File

创建 sudo 日志文件

5、 记录 sudo 命令的输入/输出

log_inputlog_output 参数可以让 sudo 命令运行在伪终端,并可以对应地记录所有的用户输入和输出到屏幕上。

默认的 I/O 日志目录为 /var/log/sudo-io,如果存在会话序列号,它将被存储到该目录。你可以通过 iolog_dir 参数来指定一个目录。

Defaults   log_input, log_output

这其中支持转义字符,像 %{seq} —— 以 36 为基数的单调递增序列,比如 000001,这里每两个数字都分别用来形成一个新目录。请看下边例示 00/00/01:

$ cd /var/log/sudo-io/
$ ls
$ cd  00/00/01
$ ls
$ cat log

Log sudo Input Output

记录 sudo 命令的输入/输出

cat 命令 来查看该目录的其余部分。

6、 为 sudo 用户提示命令用法

如下,使用 lecture 参数可以在系统中为 sudo 用户提示命令的用法:

参数属性值有三个选择:

  1. always – 一直提示
  2. once – 用户首次运行 sudo 时提示 (未指定参数属性值时的默认值)
  3. never – 从不提示
Defaults  lecture="always"

此外,你还可以使用 lecture_file 参数类自定义提示内容,在指定的文件中输入适当的提示内容即可:

Defaults  lecture_file="/path/to/file"

Lecture Sudo Users

为 sudo 用户提示命令用法

7、 输入错误的 sudo 密码是显示自定义信息

当某个用户输错密码时,会有一个对应的信息显示在屏幕上。默认是“抱歉,请重新尝试。(sorry, try again)”,你可以通过 badpass_message 参数来修改该信息:

Defaults  badpass_message="Password is wrong, please try again"

8、 增加 sudo 密码尝试限制次数

passwd_tries 参数用于指定用户尝试输入密码的次数。

默认为 3。

Defaults   passwd_tries=5

Increase Sudo Password Attempts

增加 sudo 密码尝试限制次数

使用 passwd_timeout 参数设置密码超时 (默认为 5 分钟),如下:

Defaults   passwd_timeout=2

9、 在输错密码时让 sudo 羞辱用户

使用了 insults 参数之后,一旦你输出了密码,sudo 便会在命令窗口中显示羞辱你的信息。这个参数会自动关闭 badpass_message 参数。

Defaults  insults

Let's Sudo Insult You When Enter Wrong Password

在输错密码时让 sudo 羞辱用户

10、 更多关于 sudo 的配置

此外,欲了解更多 sudo 命令的配置,请自行阅读:su 与 sudo 的差异以及如何配置 sudo

文毕。你也可以在评论区分享其他有用的 sudo 配置或者 Linux 技巧


作者简介:Aaron Kili 是一名 Linux 和 F.O.S.S 忠实拥护者、高级 Linux 系统管理员、Web 开发者,目前在 TecMint 是一名活跃的博主,热衷于计算机并有着强烈的只是分享意愿。

译者简介:GHLandy —— 欲得之,则为之奋斗。 If you want it, work for it.


via: http://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/

作者:Aaron Kili 译者:GHLandy 校对:wxy

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

sudoers 是 Linux 中的默认 sudo 安全策略插件,但是经验丰富的系统管理员可以自定义安全策略以及输入输出日志记录的插件。它由 /etc/sudoers 这个文件驱动,或者也可在 LDAP 中。

你可以在上面的文件中定义 sudoers 嘲讽 insults 或其他选项。它在 defaults 部分下设置。请阅读我们的上一篇文章在 Linux 中设置 sudo 时 10 个有用的 sudoers 配置

在本文中,我们将解释一个 sudoers 配置参数,以允许个人或系统管理员设置 sudo 命令,当系统用户输入错误密码时“嘲讽”他们。

首先打开文件 /etc/sudoers,如下所示:

$ sudo visudo

进入 defaults 部分,并添加下面的行:

Defaults   insults

下面是我系统中 /etc/sudoers 默认展示的 defaults 部分。

Set sudo Insults Parameter

设置 sudo insults 参数

从上面的截图中,你可以看到 defaults 中还有许多其他默认值定义,例如,每次用户输入错误的密码时发送邮件到 root、设置安全路径、配置自定义 sudo 日志文件等。

保存并关闭文件。

运行 sudo 命令并输入错误的密码,然后观察 insults 选项是如何工作的:

$ sudo visudo

sudo Insult in Action

实践 sudo insult

注意:当配置 insults 参数时,它会禁用 badpass_message 参数,该参数在用户输入错误的密码时,会在命令行中输出特定的消息(默认消息为 “sorry, try again”)。

要修改该消息,请将 badpass_message 参数添加到 /etc/sudoers 文件中,如下所示。

Defaults  badpass_message="Password is wrong, please try again"  #try to set a message of your own

Set sudo badpassword Message

设置 sudo 错误密码消息

保存并关闭文件,然后调用 sudo 查看它是如何工作的,你设置的 badpass_message 消息会在每次你或任何系统用户输入错误的密码的时候打印出来。

$ sudo visudo

Sudo badpassword Message

sudo 密码错误消息

就是这样了,在本文中,我们回顾了如何在用户输入错误的密码时将 sudo 设置为显示嘲讽。请通过下面的评论栏分享你的想法。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin、web 开发人员,目前是 TecMint 的内容创建者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/sudo-insult-when-enter-wrong-password/

作者:Aaron Kili 译者:geekpi 校对:jasminepeng

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

你在 Linux 终端中会有很多的乐趣。我今天要讲的不是在终端中跑火车

我今天要讲的技巧可以放松你的心情。前面一篇文章中,你学习了如何在命令行中增加 sudo 命令的超时。今天的文章中,我会向你展示如何让 sudo 在输错密码的时候“嘲讽”你(或者其他人)。

对我讲的感到疑惑?这里,让我们看下这张 gif 来了解下 sudo 是如何在你输错密码之后“嘲讽”你的。

那么,为什么要这么做?毕竟,“嘲讽”不会让你的一天变得开心,不是么?

对我来说,一点小技巧都是有趣的,并且要比以前的“密码错误”的错误提示更有趣。另外,我可以向我的朋友展示来逗弄他们(这个例子中是通过自由开源软件)。我很肯定你有你自己的理由来使用这个技巧的。

在 sudo 中启用“嘲讽”

你可以在sudo配置中增加下面的行来启用“嘲讽”功能:

Defaults    insults

让我们看看该如何做。打开终端并使用下面的命令:

sudo visudo

这会在 nano中打开配置文件。

是的,我知道传统的 ‘visudo’ 应该在 vi 中打开 /etc/sudoers 文件,但是 Ubuntu 及基于它的发行版会使用 nano 打开。由于我们在讨论vi,这里有一份 vi 速查表可以在你决定使用 vi 的时候使用。

回到编辑 sudeors 文件界面,你需要找出 Defaults 所在的行。简单的很,只需要在文件的开头加上Defaults insults,就像这样:

如果你正在使用 nano,使用Ctrl+X来退出编辑器。在退出的时候,它会询问你是否保存更改。要保存更改,按下“Y”。

一旦你保存了 sudoers 文件之后,打开终端并使用 sudo 运行各种命令。故意输错密码并享受嘲讽吧:)

sudo 可能会生气的。看见没,他甚至在我再次输错之后威胁我。哈哈。

如果你喜欢这个终端技巧,你也可以查看其他终端技巧的文章。如果你有其他有趣的技巧,在评论中分享。


via: http://itsfoss.com/sudo-insult-linux/

作者:ABHISHEK 译者:geekpi 校对:wxy

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

Calife会在登录为另外一个用户前输入自己的密码(如果没有提供登录名,默认是登录为root),在验证具有正确的权限后,就会切换到该用户及其组身份,并就会执行一个shell。如果 calife 是由 root 执行的,不需要密码,会执行一个所需的用户ID的shell。

所用的shell是用户自身所用的,除非在calife.auth配置文件中指定了某个shell。如果在命令行指定了“-”选项,就会读取该用户的环境文件,该shell就像是一个登录shell。这和su的惯常用法不同。

只有在calife.auth中指定的用户才能使用此方法通过calife成为另外一个用户。calife.auth安装位置处于/etc/calife.auth。

Calife特性

这里给出了一个关于calife特性的扩展列表:

  • 你可以完整保留你的环境变量和shell别名
  • 它可以全程记录会话的开始到结束
  • 你可以列出每个许可使用calife的用户,那样,你就可以用户赋予主管权限而不必提供root密码
  • 你可以在配置文件中指定哪个组可以使用:只要使用@staff或者%staff,那么所有staff组中的成员都将具有访问calife的权限
  • 通过calife也可以登录成为那些没有家目录或甚至没有shell的用户。如果你想要成为uucp或者甚至是bin,那会很方便
  • 你可以让calife在会话结束时运行一个指定的系统级的脚本(例如,发送一封邮件告知以root身份做了哪些事)

ubuntu中安装calife

打开终端,然后运行以下命令

sudo apt-get install calife

使用Calife

语法

calife [-] [login]

详情请参与calife手册页


via: http://www.ubuntugeek.com/calife-a-lightweight-alternative-to-sudo.html

作者:ruchi 译者:GOLinux 校对:wxy

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

对 Ubuntu 默认的 Ambiance 主题不太满意?何不试试其它的主题,用换主题的方式来改变你的桌面外观?如果你不知道哪些主题对你有用的话,我已经列出了 Ubuntu 13.10 最好的主题。在我们看这些主题前,用简单的句子说明下该怎么样使用这些主题。

在 Ubuntu 13.10 中安装主题

在 Ubuntu 中要使用主题有两种方式,既可以添加 PPA 来下载也可以直接下载主题文件。如果你是直接下载的文件,要把它解压到 ~/.themes 或者 /user/share/themes 目录中。如果你是通过添加 PPA 来下载的,并不需要做什么特殊的操作。

下一步就是正式使用已经安装的主题。你可以使用 Unity Tweak 工具软件来切换到已经安装的主题。请参考这篇文章如何在 Ubuntu 13.10 上安装主题上的截图教程.

Ubuntu 13.10 最好的 Unity 主题:

大多数主题都是由主题本身和图标集组成的。我的建议是主题本身及图标集都要从同一个主题集中安装,以使它们更漂亮。事不宜迟,让我们看些 Ubuntu13.10 中最好的主题:

Numix

Numix 确实是一款漂亮的主题。它有着扁平和弧形图标,并且完美的集成进 Unity 桌面环境中。在终端下可以使用下面的命令来安装 Numix 主题和图表集:

sudo add-apt-repository ppa:numix/ppa
sudo apt-get update
sudo apt-get install numix-gtk-theme numix-icon-theme numix-icon-theme-circle numix-wallpaper-saucy

Moka

漂亮,不是吗?使用如下命令来安装 Moka GTK 主题和图标集:

sudo add-apt-repository ppa:snwh/moka-gtk-theme-daily
sudo add-apt-repository ppa:snwh/moka-icon-theme-daily
sudo apt-get update
sudo apt-get install moka-gtk-theme moka-icon-theme moka-icon-theme-symbolic moka-icon-theme-extras

zonColor

zonColor 是从亮到暗及颜色相异的几个主题组成的一个包。它也由自己的图标集。使用如下的命令来安装 zonColor 主题和图标集。

sudo add-apt-repository ppa:noobslab/themes
sudo add-apt-repository ppa:noobslab/icons
sudo apt-get update
sudo apt-get install zoncolor-themes zoncolor-icons

Nokto

Nokto 没有自己的图标集,但它是一个很漂亮的黑色主题。要安装 Natko, 可以使用如下的命令:

sudo add-apt-repository ppa:noobslab/themes
sudo apt-get update
sudo apt-get install nokto-theme

Flattastic

很像 Nokto, Flattastic 也没有自己的图标集,但你可以使用任何的平面图标,它们会与主题融合的很好。虽然它不能以 PPA 的方式来安装,但是你可以从这儿下载到文件然后来安装。一旦下载完成,把 zip 压缩文件解压到 /usr/share/themes 目录下,然后你就可以使用 Unity Tweak 工具来选择使用这个主题。

这就是 Ubuntu 13.10 下5个最棒主题。你也许会想看看类似的文章,这列出了 Ubuntu 下5个最棒的图标集.您觉得这些主题怎么样?除了这些提到的,您有一个您最钟爱的吗?请跟我们分享。


via: http://itsfoss.com/best-themes-ubuntu-1310/

译者:runningwater 校对:wxy

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

  很多时候,您的 USB 设备会出现一些错误。大多数时候这些错误可以通过重新格式化设备来消除。出现这种问题的时候,我会使用一个叫 GParted 的软件来重新格式化我的 USB 设备。如果您用 Ubuntu 的 Unity 管理界面,您需要安装一下 Gparted 工具。

安装命令如下:

sudo apt-get install gparted

  在得到询问您是否继续的时候,键入 “Y” 来让安装继续。

  然后等待它下载安装完成。

  安装完成后,您可以通过如下命令来使用它:

sudo gparted

  工具启动后,您可以在菜单中找到您的 USB 设备,点击您需要格式化的设备。

  您可以用鼠标右键来点击您的设备,并选择 unmount 来卸载设备。然后再去格式化它。您可以选择以 “FAT32” 格式来格式化它。

  当然了,格式化设备会导致您的数据丢失,所以在您备份好您的数据的情况下,确认这个操作。

已同步至 linux的微博