CentOS中sudo的总结

设定

设置文件

设置文件位于/etc/sudoers。要更改设置,应使用visudo命令。它可以检查语法错误等。在/etc/sudoers.d中放置文件也会被包含进来。

基本的写作方法是什么?

ユーザー名  ホスト名=なれるユーザー  許可するコマンド

实际上,有相当复杂的语法,详细内容可参考man sudoers,其中有许多示例。

另外,可以通过以”Defaults”开头的行来设置选项,这也在sudoers手册中有说明。

常用选项:

requiretty   端末が必要
timestamp_timeout   パスワードのキャッシュ時間(分単位)

允许属于wheel组的用户使用sudo

%wheel        ALL=(ALL)       ALL

在现在的状态下,当执行sudo命令时会要求输入密码(不是root密码,而是执行sudo命令的用户的密码)。
输入的密码会被缓存5分钟,在这段时间内再次执行sudo命令时不需要再次输入密码。
这个缓存(或称为凭据)保存在/var/db/sudo目录中。

如果要在没有密码的情况下执行,请做出以下更改

%wheel ALL=(ALL)       NOPASSWD: ALL

通过ssh执行sudo命令

在CentOS默认情况下,禁止未拥有控制终端的进程使用sudo命令。换句话说,没有控制终端的进程无法使用sudo命令。

$ ssh ホスト名 "sudo whoami"
sudo: sorry, you must have a tty to run sudo

进行以下方式的措施,如ssh -t连接到终端,或者

$ ssh -t ホスト名 "sudo whoami"
root

又或者在服务器的/etc/sudoers文件中

Defaults    !requiretty

写在这里。

sudo命令

基本用法

$ sudo -u ユーザー名 コマンド

$ sudo -u yamada ls /var/www/html

将命令使用引号包裹作为一个参数传递

$ sudo sh -c "ls /"

### -Eをつけると現在の環境変数を引続
$ sudo -E sh -c 'echo $HOME'

执行多个命令

$ sudo sh -c 'whoami; whoami'

要以登录shell状态执行,需要使用-i选项。

$ sudo -i pwd

加上「-i」参数时,系统会从”/etc/passwd”获取登录Shell,并模拟其执行操作,同时也会加载”~/.bash_profile”等文件。

在进行批量处理时,建议使用sudo -n(非交互式)操作。

如果需要密码,将立即出错,无需等待输入。

关于环境变量的问题

CentOS的默认配置中

    • 環境変数はリセットされる(実効ユーザーのHOMEになる)

 

    • ただしHOSTNAMEなど一部の環境変数は変わらない

 

    • その辺は/etc/sudoersのalways_set_home、env_reset、env_keepで設定されている

 

    環境変数の扱いはFreeBSDでは違ったような気がする(少なくとも10年位前のでは)

请解答以下问题。

Sudo – ArchWiki 的内容可以用中文表达为:《Sudo – ArchWiki》

bannerAds