sudo命令用来以其他身份来执行命令,预设的身份为root。

1.命令格式:

  sudo  [参数]  [命令]

2.命令功能:

功能:  sudo可以针对单个命令授予临时权限。用户也可以通过su切换到root用户运行命令,su启动一个root shell允许用户运行之后的所有的命令。

1)sudo与su的不同之处:sudo仅在需要时授予用户权限,减少了用户因为错误执行命令损坏系统的可能性;sudo也可以用来以其他用户身份执行命令。此外,sudo可以记录用户执行的命令,以及失败的特权获取。

2)提醒:在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

3)[root@localhost etc]# cat sudoers  查看/etc下的只有root才能打开的文件配置文件sudoers

[xiong@localhost ~]$ yum update mysql                      //yum的执行需要root权限
已加载插件:fastestmirror, langpacks
您需要 root 权限执行此命令。
[xiong@localhost~]$ sudo yum update mysql                   //默认情况下sudo获得root用户的权限
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:#1) Respect the privacy of others.#2) Think before you type.#3) With great power comes great responsibility.[sudo] password forxiong:
xiong 不在 sudoers 文件中。此事将被报告。                     //此时sunmeng还没有使用sudo的权限

View Code

 4)给普通用使用sudo命令的授权:

## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
## 该文件允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码
##
## Examples are provided at the bottom of thefile forcollections
## of related commands,which can thenbe delegated out to particular
## users orgroups.
## 在文件的底部提供了很多相关命令的示例以供选择,这些示例都可以被特定用户或
## 用户组所使用
##
## Thisfile must be edited with the 'visudo'command.
## 该文件必须使用"visudo"命令编辑## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using
## wildcardsforentire domains) or IP addresses instead.
## 对于一组服务器,你可能会更喜欢使用主机名(可能是全域名的通配符)
## 、或IP地址,这时可以配置主机别名
# Host_Alias     FILESERVERS=fs1, fs2
# Host_Alias     MAILSERVERS=smtp, smtp2## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
## 这并不很常用,因为你可以通过使用组来代替一组用户的别名
# User_Alias ADMINS=jsmith, mikem## Command Aliases
## These aregroupsof related commands...
## 指定一系列相互关联的命令(当然可以是一个)的别名,通过赋予该别名sudo权限,
## 可以通过sudo调用所有别名包含的命令,下面是一些示例## Networking 网络操作相关命令别名
# Cmnd_Alias NETWORKING= /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient
,/usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig
,/sbin/mii-tool## Installation and management of software 软件安装管理相关命令别名
# Cmnd_Alias SOFTWARE= /bin/rpm, /usr/bin/up2date, /usr/bin/yum## Services 服务相关命令别名
# Cmnd_Alias SERVICES= /sbin/service, /sbin/chkconfig## Updating thelocatedatabase 本地数据库升级命令别名
# Cmnd_Alias LOCATE= /usr/bin/updatedb## Storage 磁盘操作相关命令别名
# Cmnd_Alias STORAGE= /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe
,/bin/mount, /bin/umount## Delegating permissions 代理权限相关命令别名
# Cmnd_Alias DELEGATING= /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp## Processes 进程相关命令别名
# Cmnd_Alias PROCESSES= /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall## Drivers 驱动命令别名
# Cmnd_Alias DRIVERS= /sbin/modprobe# Defaults specification#
# Disable"ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run"ssh -t hostname sudo <cmd>".
# 一些环境变量的相关配置,具体情况可见man soduers
Defaults    requiretty//设为默认的目标用户,69行是系统自带的,是对所有用户的默认,如果设sunmeng为默认目标用户,则语法为:Defaults:foobar runas_default=rene (冒号必不可少)
Defaults    env_reset
Defaults    env_keep=  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"Defaults    env_keep+= "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"Defaults    env_keep+= "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"Defaults    env_keep+= "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"Defaults    env_keep+= "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"Defaults    secure_path= /sbin:/bin:/usr/sbin:/usr/bin## Next comes the main part:whichusers can run what software on
##which machines (the sudoers filecan be shared between multiple
## systems).
## 下面是规则配置:什么用户在哪台服务器上可以执行哪些命令(sudoers文件可以在多个系统上共享)
## Syntax(语法):
##
##     user    MACHINE=COMMANDS 用户 登录的主机=(可以变换的身份) 可以执行的命令
##
## The COMMANDS section may have other options added to it.
## 命令部分可以附带一些其它的选项
##
## Allow root to run any commands anywhere
## 允许root用户执行任意路径下的任意命令
root    ALL=(ALL)     ALL//第一个ALL是指网络中的主机,我们后面把它改成了主机名。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL当然就是指命令名了。
## Allows members of the 'sys'group to run networking, software,
## service management apps andmore.
## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令
#%sys ALL =NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE
, DRIVERS## Allows peopleingroup wheel to run all commands
## 允许wheel用户组中的用户执行所有命令%wheel    ALL=(ALL)    ALL## Same thing without a password
## 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
#%wheel    ALL=(ALL)    NOPASSWD: ALL## Allows members of the users group tomountand unmount the
## cdrom as root
## 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令
#%users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom## Allows members of the users group to shutdown this system
## 允许users用户组中的用户关闭localhost这台服务器
#%users  localhost=/sbin/shutdown -h now## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
## 读取放置在/etc/sudoers.d/文件夹中的文件(此处的#不意味着这是一个声明)
#includedir/etc/sudoers.d

View Code

5)简单的测试:

visudo后得到的格式为:账户名                 主机名称=(可切换的身份)              可用的指令//比如root账户root                   ALL=(ALL)                                  ALL对于新增的账户就在下面加上test                   ALL=(root)                                 ALL//允许test用sudo命令执行root的所有命令
同理对于组使用者也是一个,但是要加上%%testgroup         ALL=(root)                     ALL需要注意的是:每次切换,你都需要密码才可以,使用如下命令可以避免输入密码:test                   ALL=(root) NOPASSWD: ALL-------------------------------[root@localhost xiong]# visudo              //这里的visudo不需要任何参数,因为它是打开sudoers的专属命令//改过的地方
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
xiong ALL=(ALL)     ALL

View Code

[xiong@localhost ~]$ ls                                   //当前身份执行命令
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[xiong@localhost~]$ sudo ls                                 //利用root身份执行命令
Desktop  Documents  Downloads  Music  Pictures    Public    Templates  Videos
[xiong@localhost~]$ yum update mysql                           //当前身份执行命令,提醒需要root身份
已加载插件:fastestmirror, langpacks
您需要 root 权限执行此命令。
[xiong@localhost~]$ sudo yum update mysql                        //以root身份执行命令(在终端中第一次用这个命令时会提醒输入密码)
已加载插件:fastestmirror, langpacks
base| 3.6 kB     00:00extras| 3.4 kB     00:00updates| 3.4 kB     00:00Loading mirror speeds from cached hostfile*base: mirrors.cqu.edu.cn*extras: mirrors.cqu.edu.cn*updates: mirrors.cqu.edu.cn
No packages markedfor update

View Code

3.命令参数:

1) -b       在后台运行命令

    2) -u user     以指定用户身份运行命令(或编辑文件)

3) -l        查看当前用户可以执行的命令

4) -v       更新用户的时间戳而不执行命令(注意:在输入密码之后,5分钟内执行sudo不需要再次输入密码。)

5) -V       显示sudo的版本信息

6) -i        以目标用户登录一个shell

4.使用实例:

示例1:指定用户名

命令: sudo -u root yum install mysql-devel

[xiong@localhost Desktop]$ sudo -u root yum install mysql-devel  -u参数比较有用的地方是在多用户时,可以临时获得权限打开用户独占的文件
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile*base: mirrors.cqu.edu.cn*extras: mirrors.cqu.edu.cn*updates: mirrors.cqu.edu.cn
正在解决依赖关系-->正在检查事务
......-->解决依赖关系完成
依赖关系解决=============================================================================================================Package                        架构              版本                              源                  大小=============================================================================================================正在安装:mariadb-devel                  x86_64            1:5.5.47-1.el7_2
......
作为依赖被升级:krb5-libs.x86_64 0:1.13.2-12.el7_2                krb5-workstation.x86_64 0:1.13.2-12.el7_2               openssl.x86_641:1.0.1e-51.el7_2.5                openssl-libs.x86_64 1:1.0.1e-51.el7_2.5pcre.x86_640:8.32-15.el7_2.1                     zlib.x86_64 0:1.2.7-15.el7                              完毕!

示例2:sudo命令与rpm命令结合使用的几个例子

[xiong@localhost Desktop]$ sudo rpm -q MySQL-embedded-5.5.28-1.linux2.6.i386.rpm
[sudo] password forxiong:
未安装软件包 MySQL-embedded-5.5.28-1.linux2.6.i386.rpm
[xiong@localhost Desktop]$sudo rpm -qpR MySQL-embedded-5.5.28-1.linux2.6.i386.rpm
MySQL-devel
libaio.so.1libaio.so.1(LIBAIO_0.1)
libaio.so.1(LIBAIO_0.4)
libc.so.6libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.3.3)
libcrypt.so.1libcrypt.so.1(GLIBC_2.0)
libdl.so.2libdl.so.2(GLIBC_2.0)
libdl.so.2(GLIBC_2.1)
libm.so.6libm.so.6(GLIBC_2.0)
libm.so.6(GLIBC_2.1)
libncurses.so.5libpthread.so.0libpthread.so.0(GLIBC_2.0)
libpthread.so.0(GLIBC_2.1)
libpthread.so.0(GLIBC_2.2)
libpthread.so.0(GLIBC_2.3.2)
librt.so.1librt.so.1(GLIBC_2.2)
rpmlib(CompressedFileNames)<= 3.0.4-1rpmlib(PayloadFilesHavePrefix)<= 4.0-1

示例3:列出用户可以执行的命令

命令:sudo -l

[xiong@localhost Desktop]$ sudo -l
匹配此主机上 xiong 的默认条目:requiretty,!visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRCKDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAMELC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin用户 xiong 可以在该主机上运行以下命令:(ALL) ALL

示例4:以目标身份登录一个shell

命令:sudo -i   

[root@localhost Desktop]# sudo -i
[root@localhost ~]# sudo -i

示例5:显示详细的sudo的版本信息

命令: sudo -V

1 [root@localhost ~]# sudo -V2 Sudo 版本 1.8.6p73 当前选项:--build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --prefix=/usr --sbindir=/usr/sbin --libdir=/usr/lib64 --docdir=/usr/share/doc/sudo-1.8.6p7 --with-logging=syslog --with-logfac=authpriv --with-pam --with-pam-login --with-editor=/bin/vi --with-env-editor --with-ignore-dot --with-tty-tickets --with-ldap --with-ldap-conf-file=/etc/sudo-ldap.conf --with-selinux --with-passprompt=[sudo] password for %p:  --with-linux-audit --with-sssd4 Sudoers 策略插件版本 1.8.6p75 Sudoers 文件语法版本 42
6
7 Sudoers 路径:/etc/sudoers8 nsswitch 路径:/etc/nsswitch.conf9 ldap.conf 路径:/etc/sudo-ldap.conf10 ldap.secret 路径:/etc/ldap.secret11 认证方法: 'pam'
12 若使用了 syslog,用于记录日志的 syslog 设施:authpriv13 用户认证成功时使用的 syslog 优先级:notice14 用户认证不成功时使用的 syslog 优先级:alert15 忽略 $PATH 中的“.”16 在用户不在 sudoers 列表中时发送邮件17 对每个用户/终端组合使用独立的时间戳18 在用户第一次运行 sudo时向他致辞19 默认要求用户认证20 root 可以运行 sudo
21 总是将 $HOME 设为目标用户的主目录22 允许收集一些信息,以提供有用的错误消息23 只允许拥有终端的用户执行 sudo
24 Visudo 将优先考虑 EDITOR 环境变量25 设置 LOGNAME 和 USER 环境变量26 日志文件折行的长度(0 则不折行):80
27 认证时间戳延时:5.0分钟28 密码提示延时:5.0分钟29 输入密码的尝试次数:3
30 要使用的 umask,或 0777 使用用户的:022
31 邮件程序路径:/usr/sbin/sendmail32 邮件程序标志:-t33 发送邮件的地址:root34 邮件消息的主题行:*** SECURITY information for %h ***
35 密码错误消息:Sorry, try again.36 认证时间戳文件夹的路径:/var/db/sudo
37 默认密码提示:[sudo] password for %p:38 运行命令的默认用户:root39 覆盖用户的 $PATH 变量的值:/sbin:/bin:/usr/sbin:/usr/bin40 visudo 所使用的编辑器的路径:/bin/vi
41 何时为“list”伪命令请求密码:any42 何时为“verify”伪命令请求密码:all43 >= 3的文件描述符将会在执行命令前关闭44 将环境重设为默认的变量集45 要检查完整性的环境变量:46 TERM47 LINGUAS48     LC_*
49 LANGUAGE50 LANG51 COLORTERM52 要移除的环境变量:53 RUBYOPT54 RUBYLIB55 PYTHONUSERBASE56 PYTHONINSPECT57 PYTHONPATH58 PYTHONHOME59 TMPPREFIX60 ZDOTDIR61 READNULLCMD62 NULLCMD63 FPATH64 PERL5DB65 PERL5OPT66 PERL5LIB67 PERLLIB68 PERLIO_DEBUG69 JAVA_TOOL_OPTIONS70 SHELLOPTS71 GLOBIGNORE72 PS473 BASH_ENV74 ENV75 TERMCAP76 TERMPATH77 TERMINFO_DIRS78 TERMINFO79     _RLD*
80     LD_*
81 PATH_LOCALE82 NLSPATH83 HOSTALIASES84 RES_OPTIONS85 LOCALDOMAIN86 CDPATH87 IFS88 要保留的环境变量:89 XAUTHORITY90 _XKB_CHARSET91 LINGUAS92 LANGUAGE93 LC_ALL94 LC_TIME95 LC_TELEPHONE96 LC_PAPER97 LC_NUMERIC98 LC_NAME99 LC_MONETARY100 LC_MESSAGES101 LC_MEASUREMENT102 LC_IDENTIFICATION103 LC_COLLATE104 LC_CTYPE105 LC_ADDRESS106 LANG107 USERNAME108 QTDIR109 PS2110 PS1111 MAIL112 LS_COLORS113 KDEDIR114 INPUTRC115 HISTSIZE116 HOSTNAME117 DISPLAY118 COLORS119 解析 sudoers 时使用的区域设置:C120 使用 zlib 压缩 I/O 日志121 用于保存输入/输出日志的目录:/var/log/sudo-io122 用于保存输入/输出日志的文件:%{seq}123 在分配伪终端时向 utmp/utmpx 文件中添加一条记录124
125 本地 IP 地址和网络掩码对:126     192.168.0.15/255.255.255.0
127     fe80::20c:29ff:fe9f:bf8b/ffff:ffff:ffff:ffff::128
129 Sudoers I/O plugin version 1.8.6p7

View Code

转载于:https://www.cnblogs.com/shujuxiong/p/9013130.html

linux常用命令:sudo 命令相关推荐

  1. Linux命令 - sudo命令

    Linux命令 - sudo命令   Linux中 sudo 命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行. 1.语法: whoami [参数] ...

  2. Linux常用的关机命令详解

    Linux常用的关机命令详解 Linux是一款开源的操作系统,为了保护系统的稳定性和数据的完整性,用户需要使用正确的关机命令来关闭系统.本文将详细介绍Linux下常用的关机命令,以及各种关机命令的具体 ...

  3. Linux常用20条命令

    Linux常用20条命令 假装这里有个标题 1.cd 2.ls 3.grep 4.find 5.cp 6.mv 7.rm 8.ps 9.kill 10.kill all 11.file 12.tar ...

  4. 【转】linux su和sudo命令的区别——百度知道

    linux su和sudo命令的区别 su表示切换用户命令命令,如: 输入:su命令后回车表示切换当前的用户到root用户,或者: 输入:su - root(或者其他用户名)这里加了"-&q ...

  5. Linux 常用的帮助命令

    linux 常用的帮助命令 1.help -à相当于man的简化版 例如:vim –help 2.man: 详细介绍vim的用法 例如:man vim 3.info:偏重介绍文档 例如: info v ...

  6. Linux常用指令(命令)超级无敌全合集加图文说明

    Linux常用指令(命令) 指令与选项 基础指令 1.ls指令 2.pwd指令 3.cd指令 4.mkdir指令 5.touch指令 6.cp指令 7.mv指令 8.rm指令 9.vim指令 配置域名 ...

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

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

  8. 关于linux中的sudo命令

    关于linux中的sudo命令 sudo -i,加载用户变量,并跳转到目标用户home目录: sudo -s,不加载用户变量,不跳转目录: sudo : 暂时切换到超级用户模式以执行超级用户权限,提示 ...

  9. linux su和sudo命令的区别 -【linux学习笔记】

    linux su和sudo命令的区别 首先,两个缩写,  su : switch user                                 sudo : super user do ! ...

  10. su命令 sudo命令 限制root远程登录

    su命令 sudo命令 限制root远程登录 su命令 日常操作中为了避免一些误操作,更加安全的管理系统,通常使用的用户身份都为普通用户,而非root.当需要执行一些管理员命令操作时,再切换成root ...

最新文章

  1. 总结笔记-Activity的启动流程
  2. cjson调用的实例 c++
  3. 无法启动此程序因为计算机中丢失msvcr110,无法启动此程序因为计算机中丢失msvcr110,教您无法运行程序提示计算机中丢失...
  4. 2019清北学堂学习笔记
  5. ORACLE 10G以后的ORDER BY操作优化
  6. php pdo参数化,php – 如何正确地使用PDO对象的参数化SELECT查询
  7. 多个服务间多个自定义的ExceptionHandler类的执行顺序
  8. vue实例方法之set方法的实现原理
  9. 关闭不必要动画,提升 Win 7 运行速度
  10. Android内存优化11 内存泄漏常见情况2 线程持久化
  11. fasta文件中序列的排序
  12. oracle 九阴真精,《九阴真经》真的很强吗?其实它杂而不精,顶级高手都不愿意用...
  13. 小组学习电子教室等同屏工具调研
  14. Mac OS X使用技巧汇总页面
  15. Windows10系统变成英文如何切换回中文,Ctrl+Shift无法切换输入法
  16. 信息安全体系三种不同的系统架构:MIS+S、S-MIS S2-MIS
  17. 2020年南京大学计算机系九推面试
  18. 如何阻止某款软件访问网络
  19. javascript毫秒计时器_如何在倒数计时器javascript中显示毫秒
  20. ds18b20温度转换指令_DS18B20温度传感器使用方法以及代码

热门文章

  1. 基础网络和关键基础设施
  2. Skype for Business Server 2015-09-测试-基本功能(建议:看PDF!)
  3. WebApplicationContext初始化
  4. 巧妙解决:access denied (javax.management.MBeanTrust...
  5. Spread for Windows Forms快速入门(2)---设置Spread表单
  6. Centos 5.5下面架设NTP服务器
  7. career opportuties
  8. 第一年的要求 工程系的研究生
  9. south eastern china at a scope of 100km
  10. 开源数学软件zzllrr Mather小乐数学简介Summary