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》