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
root
身份执行命令。
-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 命令允许允许的用户根据 /etc/sudoers
文件中的说明,以另一个用户的身份执行命令。然后将发布用户的真实和有效 uid
和 gid
设置为与 passwd
文件中指定的目标用户帐户的匹配。
默认情况下,sudo 要求用户使用密码进行身份验证。默认情况下,这是用户密码,而不是 root 密码本身。
用户通过身份验证后,将记录时间戳,并且用户可以在短时间内(5分钟,除非在 sudoers 中进行了不同配置)使用不带密码的 sudo。如果用户使用 -v 标志发出 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
-b:在后台执行指令; -h:显示帮助; -H:将HOME环境变量设为新身份的HOME环境变量; -k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。 -l:列出目前用户可执行与无法执行的指令; -p:改变询问密码的提示符号; -s<shell>:执行指定的shell; -u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份; -v:延长密码有效期限5分钟; -V :显示版本信息。
指令:需要运行的指令和对应的参数。
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 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命令将需要密码。