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