sudo 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

sudo 命令安装:


-bash: sudo: command not found

#Debian
apt-get install sudo

#Ubuntu
apt-get install sudo

#Alpine
apk add sudo

#Arch Linux
pacman -S sudo

#Kali Linux
apt-get install sudo

#CentOS
yum install sudo

#Fedora
dnf install sudo

#OS X
brew install sudo

#Raspbian
apt-get install sudo

#Docker
docker run cmd.cat/sudo sudo

sudo 命令补充说明:


sudo 命令允许允许的用户根据 /etc/sudoers 文件中的说明,以另一个用户的身份执行命令。然后将发布用户的真实和有效 uidgid 设置为与 passwd 文件中指定的目标用户帐户的匹配。

默认情况下,sudo 要求用户使用密码进行身份验证。默认情况下,这是用户密码,而不是 root 密码本身。

用户通过身份验证后,将记录时间戳,并且用户可以在短时间内(5分钟,除非在 sudoers 中进行了不同配置)使用不带密码的 sudo。如果用户使用 -v 标志发出 sudo,则可以更新此时间戳。

sudo 命令语法:


sudo -V | -h | -l | -L | -v | -k | -K | -s | [ -H ] [-P ] [-S ] [ -b ] | 
     [ -p prompt ] [ -c class|- ] [ -a auth_type ] [-r role ] [-t type ] 
     [ -u username|#uid ] command

sudo 命令选项:


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

sudo 命令参数:


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

sudo 命令安全须知:


sudo 试图在执行命令时保持安全。控制动态加载和绑定完成方式的变量可用于破坏 sudo 运行的程序。为了解决这个问题,从传递给执行命令的环境中删除了一些特定于系统的环境变量。sudo 从环境中删除的其他变量包括:

  • IFS
  • ENV
  • BASH_ENV
  • KRB_CONF
  • KRBCONFDIR
  • KRBTKFILE
  • KRB5_CONFIG
  • LOCALDOMAIN
  • RES_OPTIONS
  • HOSTALIASES
  • NLSPATH
  • PATH_LOCALE
  • TERMINFO
  • TERMINFO_DIRS
  • TERMPATH

sudo 命令实例


$ sudo su -
# env | grep -E '(HOME|SHELL|USER|LOGNAME|^PATH|PWD|TEST_ETC|TEST_ZSH|TEST_PRO|TEST_BASH|TEST_HOME|SUDO)'

这个命令相当于使用 root 超级用户重新登录一次 shell,只不过密码是使用的当前用户的密码。而且重要是,该命令会重新加载 /etc/profile 文件以及 /etc/bashrc 文件等系统配置文件,并且还会重新加载 root 用户的 $SHELL 环境变量所对应的配置文件 ,比如:root 超级用户的 $SHELL/bin/bash,则会加载 /root/.bashrc 等配置。如果是 /bin/zsh,则会加载 /root/.zshrc 等配置,执行后是完全的 root 环境。

$ sudo -i
# env | grep -E '(HOME|SHELL|USER|LOGNAME|^PATH|PWD|TEST_ETC|TEST_ZSH|TEST_PRO|TEST_BASH|TEST_HOME|SUDO)'

这个命令基本与 sudo su - 相同,执行后也是 root 超级用户的环境,只不过是多了一些当前用户的信息。

sudo 命令其他实例:

sudo shutdown -r now #重新启动系统;以超级用户身份运行shutdown命令。

sudo -u hope ls /home/otheruser/Documents #列出用户希望的 /home/otheruser/Documents 目录的内容。

sudo -v #扩展/重置sudo的自动身份验证超时,使您无需输入密码即可继续发出sudo命令。
sudo -k #当前用户的“杀死” sudo身份验证。下一个sudo命令将需要密码。

sudo 命令实例


$ sudo su -
# env | grep -E '(HOME|SHELL|USER|LOGNAME|^PATH|PWD|TEST_ETC|TEST_ZSH|TEST_PRO|TEST_BASH|TEST_HOME|SUDO)'

这个命令相当于使用 root 超级用户重新登录一次 shell,只不过密码是使用的当前用户的密码。而且重要是,该命令会重新加载 /etc/profile 文件以及 /etc/bashrc 文件等系统配置文件,并且还会重新加载 root 用户的 $SHELL 环境变量所对应的配置文件 ,比如:root 超级用户的 $SHELL/bin/bash,则会加载 /root/.bashrc 等配置。如果是 /bin/zsh,则会加载 /root/.zshrc 等配置,执行后是完全的 root 环境。

$ sudo -i
# env | grep -E '(HOME|SHELL|USER|LOGNAME|^PATH|PWD|TEST_ETC|TEST_ZSH|TEST_PRO|TEST_BASH|TEST_HOME|SUDO)'

这个命令基本与 sudo su - 相同,执行后也是 root 超级用户的环境,只不过是多了一些当前用户的信息。

sudo 命令其他实例:

sudo shutdown -r now #重新启动系统;以超级用户身份运行shutdown命令。

sudo -u hope ls /home/otheruser/Documents #列出用户希望的 /home/otheruser/Documents 目录的内容。

sudo -v #扩展/重置sudo的自动身份验证超时,使您无需输入密码即可继续发出sudo命令。
sudo -k #当前用户的“杀死” sudo身份验证。下一个sudo命令将需要密码。

sudo 命令扩展阅读:




sudo 命令评论

共收录到 500Linux 命令