学习啦>学习电脑>操作系统>Linux教程>

linux sudo命令详解

时间: 志艺942 分享

  简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码。接下来是小编为大家收集的linux sudo命令详解,希望能帮到大家。

  linux sudo命令详解

  sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。当然,能做什么不能做什么都是通过安全策略来指定的。sudo 支持插件架构的安全策略,并能把输入输出写入日志。第三方可以开发并发布自己的安全策略和输入输出日志插件,并让它们无缝的和 sudo 一起工作。默认的安全策略记录在 /etc/sudoers 文件中。而安全策略可能需要用户通过密码来验证他们自己。也就是在用户执行 sudo 命令时要求用户输入自己账号的密码。如果验证失败,sudo 命令将会退出。(注意,本文介绍的 sudo 命令运行在 ubuntu 14.04中。)

  sudo 命令语法

1
sudo [-bhHpV][-s ][-u <用户>][指令]

  或

1
sudo [-klv]

  参数

  -b 在后台执行指令。

  -h 显示帮助。

  -H 将HOME环境变量设为新身份的HOME环境变量。

  -k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。

  -l 列出目前用户可执行与无法执行的指令。

  -p 改变询问密码的提示符号。

  -s 执行指定的shell。

  -u <用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。

  -v 延长密码有效期限5分钟。

  -V 显示版本信息。

  -S 从标准输入流替代终端来获取密码

  sudo 程序相关文件

1
2
3
4
5
6
7
8
9
/etc/sudoers
/etc/init.d/sudo
/etc/pam.d/sudo
/var/lib/sudo
/usr/share/doc/sudo
/usr/share/lintian/overrides/sudo
/usr/share/bash-completion/completions/sudo
/usr/bin/sudo
/usr/lib/sudo

  基本配置

  系统默认创建了一个名为 sudo 的组。只要把用户加入这个组,用户就具有了 sudo 的权限。

  至于如何把用户加入 sudo 组,您可以直接编辑 /etc/group 文件,当然您得使用一个有 sudo 权限的用户来干这件事:

1
$ sudo vim /etc/group

  在 sudo 组中加入新的用户,要使用逗号分隔多个用户。

  或者您可以使用 usermod 命令把用户添加到一个组中:

1
$ sudo usermod -a -G sudo jack

  上面的设置中我们把用户 jack 添加到了 sudo 组中,所以当用户 jack 登录后就可以通过 sudo 命令以 root 权限执行命令了!

  详细配置

  在前面的配置中我们只是把用户 jack 加入了 sudo 组,他就具有了通过 root 权限执行命令的能力。

  现在我们想问一下,这是怎么发生的?是时候介绍如何配置 sudo 命令了!

  sudo 命令的配置文件为 /etc/sudoers。(注意,/etc/sudoers 的配置内容十分丰富,我们仅做简单的介绍。要了解更多信息,请参考 man sudoers。)

  编辑这个文件是有单独的命令的 visudo(这个文件我们最好不要使用 vim 命令来打开),是因为一旦你的语法写错会造成严重的后果,这个工具会替你检查你写的语法,这个文件的语法遵循以下格式:

  who where whom command

  说白了就是哪个用户在哪个主机以谁的身份执行那些命令,那么这个 where, 是指允许在那台主机 ssh 连接进来才能执行后面的命令,文件里面默认给 root 用户定义了一条规则:

  root ALL=(ALL:ALL) ALL

  root    表示 root 用户。

  ALL     表示从任何的主机上都可以执行,也可以这样 192.168.100.0/24。

  (ALL:ALL)   是以谁的身份来执行,ALL:ALL 就代表 root 可以任何人的身份来执行命令。

  ALL     表示任何命令。

  那么整条规则就是 root 用户可以在任何主机以任何人的身份来执行所有的命令。

  现在我们可以回答 jack 为什么具有通过 root 权限执行命令的能力了。打开 /etc/sudoers 文件:

  sudo 组中的所有用户都具有通过 root 权限执行命令的能力!

  再看个例子:

1
nick 192.168.10.0/24=(root) /usr/sbin/useradd

  上面的配置只允许 nick 在 192.168.10.0/24 网段上连接主机并且以 root 权限执行 useradd 命令。

  设置 sudo 时不需要输入密码

  执行 sudo 命令时总是需要输入密码事件很不爽的事情(抛开安全性)。有些应用场景也需要在执行 sudo 时避开输入密码的交互过程。

  那么需要如何设置呢?其实很简单,只需要在配置行中添加 NOPASSWD: 就可以了:

1
****** ALL=(ALL) NOPASSWD: ALL

  再试试看,是不是已经不需要输入密码了?

  sudo 的日志

  在 ubuntu 中,sudo 的日志默认被记录在 /var/log/auth.log 文件中。当我们执行 sudo 命令时,相关日志都是会被记录下来的。比如下图中显示的就是一次执行 sudo 命令的日志:

  
看了“linux sudo命令详解”还想看:

1.linux su和sudo命令的区别

2.Linux下chmod命令怎么用

3.Linux下最常用的Shell命令的介绍

4.Linux命令和命令行详解

linux sudo命令详解

简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码。接下来是小编为大家收集的linux sudo命令详解,希望能帮到大家。 linux sudo命令详解 sudo 允许一个已授权用
推荐度:
点击下载文档文档为doc格式

精选文章

  • matlab命令行环境的常用操作
    matlab命令行环境的常用操作

    ATLAB[1] 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和

  • linux命令行运行matlab
    linux命令行运行matlab

    MATLAB中有专门的函数来计算这个数值,butter函数的阶次估计函数为buttord。接下来是小编为大家收集的linux命令行运行matlab,希望能帮到大家。 linux命令行运

  • linux nohup命令使程序在后台运行的方法
    linux nohup命令使程序在后台运行的方法

    你知道linux下使得nohup命令让程序在后台运行的方法么,在linux上从后台一直运行某个程序的方法,就是使用nohup命令了,接下来是小编为大家收集的linux n

  • linuxPowerShell小技巧
    linuxPowerShell小技巧

    由于Linux登录大多是通过SSH的模式进行登录的,渗透测试时扫描到22端口监听有SSH,如果能有脚本可以基于字典对Linux进行用户名和密码的

2893222