当前位置: 首页 > 工具软件 > SUDO > 使用案例 >

sudo命令

欧阳鸿哲
2023-12-01

名字

sudo, sudoedit - 作为另外一个用户来执行命令


概要

sudo -h | -K | -k | -L | -V

sudo -v [-AknS] [-g group name|#gid] [-p prompt] [-u username|#uid]

sudo -l[l] [-AknS] [-g group name|#gid] [-p prompt] [-U user name] [-u user name|#uid] [command]

sudo [-AbEHnPS] [-C fd] [-g group name|#gid] [-p prompt] [-u user name|#uid] [VAR=value] [-i | -s] [command]

sudoedit [-AnS] [-C fd] [-g group name|#gid] [-p prompt] [-u user name|#uid] file ...


描述

sudo允许一个通过sudoers文件指定的授权用户作为超级用户或者另外一个用户来执行命令。真实的和有效的uid、gid将会被设置成与passwd文件里面所指定的目标用户相匹配,组向量也会基于组文件来初始化(除非-P参数被指定了)。如果调用命令的用户是root或者调用命令的用户和目标用户相同的话,将不需要输入密码。否则,sudo默认会要求用户使用密码来认证他们自己(注意:默认配置是使用用户的密码而不是root密码)。一旦用户认证通过,时间戳将被更新,用户在短时间内使用sudo勿需再次输入密码(默认是15分钟,或者可以通过sudoers来改写此时间)。


当调用sudoedit的时候,-e选项(下面会描述)将被默认使用。


sudo通过/etc/sudoers文件来决定是否是授权用户。通过运行sudo -v,用户可以直接更新时间戳而不需执行任何命令。如果要求输入密码而在一个可配置的时间里用户没有输入密码的话,sudo将会退出。默认的密码提示超时间隔是无限长即不会超时。


如果一个未在sudoers文件中的用户尝试通过sudo执行命令,系统将会发送邮件给合适的用户,此用户在配置时定义好或者通过sudoers文件来指定(默认是root)。注意如果未授权的用户尝试添加-l或者-v选项来运行sudo,将不会发送邮件。这使得用户可以自行了解他们是否允许使用sudo。


如果root执行sudo并且SUDO_USER环境变量被设置了的话,sudo将使用这个环境变量的值来决定实际用户名。这使得即使是在root shell里面,用户也可以通过sudo来作为另外一个用户来执行命令。即使通过sudo-run脚本或者程序,-e选项仍保持有用。注意,sudoers的查找仍然是为root完成,而不是SUDO_USER所指定的用户。


sudo能够把成功和失败的尝试(包括错误)记录到syslog、日志文件或者两者同时记录。 默认的sudo将通过syslog来记录,不过这个可以在配置时改变或者通过sudoers文件来改变。

选项

sudo接受以下命令行选项。

-A        通常,如果sudo要求输入密码的话,它将会从当前的终端读取。如果-A (askpass) 选项被指定了的话,一个(可能是图形化的)帮助程序将被用来读取用户密码               并且把密码回显到标准输出。如果SUDO_ASKPASS环境变量设置了的话,它将指定帮助程序的路径。否则,将使用askpass选项来指定。

-b        -b (background)告诉sudo通过后台方式来运行命令。注意如果使用-b的话,将无法通过shell的作业控制来操作过程。

-C fd   通常,sudo将会关闭除标准输入、标准输出和标准错误输出之外的所有打开的文件描述符。-C (close from)选项允许用户指定一个标准错误输出(文件描述符是                 3)以上的起始点。不允许小于3的值。这个选项仅在管理员使能了sudoers中的closefrom_override选项后有效。

-E        -E(preserve environment)选项将会覆盖sudoers中的env_reset选项。它仅在匹配的命令有SETENV标记或者sudoers中setenv选项被设置后有效。

-e        -e (edit)选项说明用户并非想直接运行某个命令,而是希望编辑一个或多个文件。

-g group 通常,sudo将通过passwd数据库来设置primary group。-g选项将指定sudo使用其指定的primary group。要使用gid而不是组名时,使用#gid。

-H       -H (HOME)选项将会设置目标用户的HOME环境变量。

-h       打印sudo的帮助信息。

-i [command] 将在执行命令前模拟用户登录,这使得用户的如.profile或者.login之类的资源文件被读取。它同时初始化环境,保持DISPLAY和TERM不变,设置HOME,                          MAIL, SHELL,USER,LOGNAME和PATH,所有其他的环境变量将被删除。

-k       当单独使用时,sudo将会使得时间戳失效,这样下一次执行sudo的时候将会要求输入密码。当和命令或者其他要求输入密码的选项同时使用时,sudo将忽略时间             戳而要求用户输入密码。

-K      和-k类似,-K完全删除时间戳。

-l[l] [command]

          如果没有指定command的话,-l将会列出当前用户在当前主机上所允许(和禁止)执行的命令。如果command被指定而且被sudoers允许的话,命令的绝对路径和命令行参数将会显示。

-n      此选项将会阻止sudo提示输入密码。如果待执行的命令需要密码的话,sudo将显示一个错误信息并退出。

-P     此选项将使得sudo保持用户的组向量不变。

-p      此选项允许你覆盖默认的密码提示方式而使用定制的。

-S      此选项使得sudo从标准输入而不是终端设备读取密码。密码必须以换行结束。

-V      打印sudo的版本信息并退出。

-v      更新时间戳,如果必要的话提示输入密码。

--       此选项指示sudo应该停止处理命令行参数。


 类似资料: