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

每天一个Linux命令之sudo命令详解

佳洲分享

  Linux系统的sudo命令是切换用户身份的命令。下面由学习啦小编为大家整理了每天一个Linux命令之sudo命令详解,希望对大家有帮助!

  每天一个Linux命令之sudo命令详解

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

  语法

  sudo(选项)(参数)

  选项

  -b:在后台执行指令;

  -h:显示帮助;

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

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

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

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

  -s:执行指定的shell;

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

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

  -V :显示版本信息。

  参数

  指令:需要运行的指令和对应的参数。

  每天一个Linux命令之sudo命令特点

  sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会导致非法用户攫取root权限。同时,它还要兼顾易用性,让系统管理员能够更有效,更方便地使用它。sudo设计者的宗旨是:给用户尽可能少的权限但仍允许完成他们的工作。所以,sudo

  有以下特点:

  # 1. sudo能够限制指定用户在指定主机上运行某些命令。

  # 2. sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。

  # 3. sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。

  # 4.sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。

  每天一个Linux命令之sudo命令实例

  1)[sunmeng@localhost Desktop]$ sudo -u root yum install mysql-devel        指定用户名

  [sunmeng@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_64 1:1.0.1e-51.el7_2.5 openssl-libs.x86_64 1:1.0.1e-51.el7_2.5

  pcre.x86_64 0:8.32-15.el7_2.1 zlib.x86_64 0:1.2.7-15.el7

  完毕!

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

  [sunmeng@localhost Desktop]$ sudo rpm -q MySQL-embedded-5.5.28-1.linux2.6.i386.rpm

  [sudo] password for sunmeng:

  未安装软件包 MySQL-embedded-5.5.28-1.linux2.6.i386.rpm

  [sunmeng@localhost Desktop]$ sudo rpm -qpR MySQL-embedded-5.5.28-1.linux2.6.i386.rpm

  MySQL-devel

  libaio.so.1

  libaio.so.1(LIBAIO_0.1)

  libaio.so.1(LIBAIO_0.4)

  libc.so.6

  libc.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.1

  libcrypt.so.1(GLIBC_2.0)

  libdl.so.2

  libdl.so.2(GLIBC_2.0)

  libdl.so.2(GLIBC_2.1)

  libm.so.6

  libm.so.6(GLIBC_2.0)

  libm.so.6(GLIBC_2.1)

  libncurses.so.5

  libpthread.so.0

  libpthread.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.1

  librt.so.1(GLIBC_2.2)

  rpmlib(CompressedFileNames) <= 3.0.4-1

  rpmlib(PayloadFilesHavePrefix) <= 4.0-1

  3)[sunmeng@localhost Desktop]$ sudo -l        列出用户可以执行的命令

  [sunmeng@localhost Desktop]$ sudo -l

  匹配此主机上 sunmeng 的默认条目:

  requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC

  KDEDIR 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_NAME

  LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",

  secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

  用户 sunmeng 可以在该主机上运行以下命令:

  (ALL) ALL

  4[root@localhost Desktop]# sudo -i           以目标身份登录一个shell

  [root@localhost Desktop]# sudo -i

  [root@localhost ~]# sudo -i

    3645080