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

sudo 命令语法

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

sudo [-klv]
参数
  -b  在后台执行指令。
  -h  显示帮助。
  -H  将HOME环境变量设为新身份的HOME环境变量。
  -k  结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。
  -l  列出目前用户可执行与无法执行的指令。
  -p  改变询问密码的提示符号。
  -s  执行指定的shell。
  -u  <用户>  以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。
  -v  延长密码有效期限5分钟。
  -V  显示版本信息。
  -S  从标准输入流替代终端来获取密码

sudo 程序相关文件

/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 权限的用户来干这件事:

$ sudo vim /etc/group

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

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

$ 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 权限执行命令的能力!

再看个例子:

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

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

设置 sudo 时不需要输入密码

执行 sudo 命令时总是需要输入密码事件很不爽的事情(抛开安全性)。有些应用场景也需要在执行 sudo 时避开输入密码的交互过程。
那么需要如何设置呢?其实很简单,只需要在配置行中添加 NOPASSWD: 就可以了:

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

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

sudo 的日志

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

from: https://www.cnblogs.com/sparkdev/p/6189196.html

linux sudo 命令相关推荐

  1. linux sudo命令

    Linux sudo命令 正在上传-重新上传取消​ Linux 命令大全 Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行. 使用 ...

  2. Linux sudo 命令提权

    Linux sudo 命令提权 当我们需要用root用户来进行一些操作的时候,每次又不想切换到root用户下,可以给普通用户提权达来达目的. 1,修改配置文件 vim /etc/sudoers,在ro ...

  3. 【Linux】一步一步学Linux——sudo命令(105)

    00. 目录 文章目录 00. 目录 01. 命令概述 02. 命令格式 03. 常用选项 04. 参考示例 05. 附录 01. 命令概述 sudo - 以其他用户身份执行一条命令 sudo命令用来 ...

  4. qt执行linux sudo命令语句,linux命令_sudo

    linux命令_sudo 作者:admin sudo === 以其他身份来执行命令 ## 补充说明 **sudo命令** 用来以其他身份来执行命令,预设的身份为root.在`/etc/sudoers` ...

  5. Linux:sudo命令实例讲解

    Linux下sudo命令实例讲解 转载自:点击打开链接 一.sudo简介 1.概念: sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root ...

  6. linux sudo命令全称,你知道Linux系统中的sudo 命令吗?

    今天小编要跟大家分享的文章是关于Linux系统中sudo命令介绍.熟悉Linux操作系统的小伙伴们你们是否了解sudo命令.sudo 表示 "superuser do". 它允许已 ...

  7. Linux ❉ sudo 命令

    sudo,意为super user do,以超级用户身份执行命令. 目的是解决部分普通用户权限不够的问题. [test2@localhost ~]$ tail -n 3 /etc/shadow tai ...

  8. “因一条 Linux sudo 命令,我的 Twitter 账号被封了!”

    整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 一个月前,马斯克想要用 440 亿美元收购国外的社交平台巨头 Twitter,旨在改变 Twitter 的审核政策,实现真正的言论自由. ...

  9. linux sudo 命令无法使用,Linux运维知识之解决Linux下无法使用sudo命令问题

    本文主要向大家介绍了Linux运维知识之解决Linux下无法使用sudo命令问题,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 问题描述 使用普通用户登录后在终端中执行sudo ...

  10. Linux sudo命令和sudoers文件

    一.sudo命令的作用 sudo命令的作用是临时提升当前用户的权限,以使用只有目标用户才能使用的命令,并在命令使用结束后恢复到当前用户权限.最常见的是用来临时使用root才能执行的命令. su的作用是 ...

最新文章

  1. 如何完全卸载VS2010
  2. default argument given of parameter 的问题
  3. 利用Docker/Ansible实现轻量集群服务部署(视频演示+彩蛋)
  4. java 8 删选集合 和取集合中的字段重组成集合的使用
  5. java 文件压缩_java实现文件压缩
  6. SQL SERVER 和ACCESS/excel的数据导入导出
  7. ES6-----学习系列十(set-map数据结构)
  8. 浅谈Empty、Nothing
  9. shine your way
  10. 【搞一点AUTOSAR】基于TC397的MACL_ADC配置(Davinci工具链)
  11. 一些常用的MacBook快捷键
  12. 对面装修,办公室放置绿萝,袋装活性炭,空气净化器,有用吗?
  13. K8S查看服务器日志
  14. 操作系统实验读者写者程序源码_我的操作系统梦破灭了
  15. UTF8与GBK字符编码转换
  16. C语言中sqrt怎么声明标识符,sqrt在c语言中怎么用?
  17. BAT清理IE缓存和系统垃圾
  18. 西门子PLC远程控制WinCC远程组态
  19. Java Socket/HttpURLConnection读取HTTP网页
  20. [android]android自动化测试十四之dumpsys性能测试

热门文章

  1. Linux使echo命令输出结果带颜色
  2. JavaScript设计模式与实践--工厂模式
  3. TFS源代码管理的8大注意事项
  4. DS实验题 Searchname
  5. 转科普CPU Cache line
  6. Process.RedirectStandardInput
  7. SSH2框架多数据源配置原理和方式
  8. 网络安全系列之四十 在Linux中设置SET位权限
  9. js 设置焦点 判断控件是否获得焦点 判断哪个控件获得焦点
  10. Linux设备驱动模型-Ktype