Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
現場で役に立たないsudoの使い方 | ODP
[go: Go Back, main page]

現場で役に立たない
sudo の使い方
#ssmjp 2013/06/28 @togakushi
1 / 30
sudo とは
● sudo “( su do” )は UNIX および Unix 系オペ
レーティングシステムのプログラムの 1 つで、
ユーザーが別のユーザー(通常、スーパーユー
ザーすなわち root )の特権レベルでプログラ
ムを実行するためのコマンドである。
出典: http://ja.wikipedia.org/wiki/Sudo
2 / 30
結論
こんなに真面目に
フザけたコマンドは
見たことない!!
3 / 30
マジメナツカイカタ
4 / 30
特権を制約
● 無差別に root 権限を渡さずに限定的に使わせる
– 特定ユーザ / グループのみ
– 特定コマンドのみ
– 特定ホストのみ
– root 以外のユーザ / グループも指定可能
5 / 30
設定ファイルの構造
● エイリアスの設定
● デフォルト値の指定
● ユーザ設定
● 他のファイルのインクルード
順番はどうでもいいみたいだけど
最後に設定されたものが有効になる
6 / 30
ユーザ設定
● 誰が何をしていいか決めるところ
%admin ALL=(ALL) ALL
who where = (as_whom) what
[ 誰が どのホストで = ( 誰に変身して ) 何を ]
7 / 30
タグ
● ユーザ設定のコマンドリスト (what の部分 ) に
はタグが指定できる ( 全 10 種 )
– NOPASSWD, PASSWD, NOEXEC, EXEC,
SETENV, NOSETENV, LOG_INPUT,
NOLOG_INPUT, LOG_OUTPUT, NOLOG_OUTPUT
– 指定されたタグは反対の意味を持つタグが指定され
るまでコマンドリストの中で継承される
8 / 30
エイリアスの種類
● User_Alias
● Runas_Alias
● Host_Alias
● Cmnd_Alias
9 / 30
エイリアスの書式
● NAME に使える文字
– 大英字、数字、アンダースコア
– 先頭は英字
● ’ ’同じタイプのエイリアスは : で区切って続け
てかける
Alias_Type NAME = item1, item2, … : NAME = ...
10 / 30
デフォルト値 ( 真偽値 )
● authenticate
– 実行する度に本人確認のためのパスワードを求める
● ignore_local_sudoers
– ローカルの sudoers を無視する (LDAP 側で指定 )
● log_input
– キー入力すべてをログに取る
● log_output
– スクリーンに出力されるものすべてをログに取る
11 / 30
デフォルト値 ( 真偽値)
● noexec
– sudo を経由して実行されたコマンドから別のコマンドを実行でき
ないようにする
● requiretty
– sudo を実行するために tty を要求する
● rootpw
– ユーザのパスワードではなく、 root のパスワードを求める
● runaspw
– runas_default オプションで指定したユーザのパスワードを求め
る
12 / 30
デフォルト値 ( 数値 )
● passwd_tries
– ユーザがパスワード入力できる回数
● passwd_timeout
– パスワードプロンプトがタイムアウトするまでの時
間 ( 分 )
● timestamp_timeout
– 再びパスワードを要求するまでの時間 ( 分 )
13 / 30
デフォルト値 ( 文字列 )
● iolog_dir
– log_output や log_input が保存するディレクトリの
指定
● iolog_file
– log_output や log_input が保存するログファイル名
● passprompt
– パスワードを要求するときのプロンプト
14 / 30
デフォルト値 ( 文字列 )
● lecture
– パスワードプロンプトに添えるレクチャーの表示
● always :いつでも必ず表示
● never :一切表示しない
● once :初めて実行するときだけ
● lecture_file
– 表示するレクチャーをファイルで指定する
15 / 30
別ファイルのインクルード
● #include
– 別のファイルをインクルード
– 絶対パス以外で指定した場合は sudoers と同じ位置から探す
● #includedir
– 指定したディレクトリのファイル全部をインクルードする
– 〜で終わる場合や . が含まれるファイル名は読み飛ばされる
● この # はコメントじゃないよ!
16 / 30
コマンドラインオプション
● -l,-ll
– 何ができるか確認する
● -u,-g
– 指定したユーザ / グループで実行
● -p
– パスワードプロンプトの変更
17 / 30
コマンドラインオプション
● -k,-K
– キャッシュしたパスワードを破棄
● -v
– キャッシュの延長
● -i,-s
– シェルの実行 ( 何も指定してなければ root 権限 )
18 / 30
sudoedit
● sudo -e と等価
19 / 30
visudo
● sudoers を編集するコマンド
● 保存時に構文チェックを行なってくれる
● sudoers に構文エラーがあると sudo が実行で
きなくなるので注意!
% sudo -s
sudoedit: >>> /etc/sudoers: syntax error near line 35 <<<
sudoedit: parse error in /etc/sudoers near line 35
sudoedit: no valid sudoers sources found, quitting
sudoedit: unable to initialize policy plugin
20 / 30
sudoreplay
● log_output で保存しているログを再生するコマ
ンド
– -l で保存されているログのリストを表示
– -l user hogehoge のように検索も可能
21 / 30
LDAP と連携
● サーバの設定
– スキーマを拡張 (sudo.schema)
– sudoers の内容を追加
● 既存の sudoers から移行するツールが付属してるよ
● クライアントの設定
– nsswitch.conf で sudoers が LDAP にあることを教える
– LDAP の場所を教える ( コンパイル時に --with-ldap-conf-file
で指定したファイル )
→詳しくは公式サイトで! http://www.sudo.ws/sudo/readme_ldap.html
22 / 30
フザケタツカイカタ
23 / 30
謝られる
● msgid "sorry, you are not allowed to set the following
environment variables: %s"
●
msgstr " すみませんが、あなたは次の環境変数を設定すること
を許可されていません : %s"
● msgid "Sorry, user %s may not run sudo on %s.n"
●
msgstr " ユーザー %s は %s 上で sudo を実行できません。
すみません。 n"
● msgid "sorry, you must have a tty to run sudo"
●
msgstr "sudo を実行するには tty がなければいけません。す
みません "
24 / 30
罵られる
● "Wrong! You cheating scum!"
– 何やってんだ!お前はカスだ!
●
"What, what, what, what, what, what, what, what, what, what?"
– なんで?なんで?なんで?なんで?ねぇ?なんで?
●
"You gotta go owwwww!"
– 行っけぇぇぇーーー!!
● "I think ... err ... I think ... I think I'll go home"
– え ... 間違い ... … …え え もう帰りたい ...
●
"stty: unknown mode: doofus"
– 不明なモード:あほ
● "Maybe if you used more than just two fingers..."
– ねぇ、あなた、ひょっとして 2 本の指で打ったの ...
25 / 30
罵られる方法
● ” ”コンパイルオプション 侮辱 を有効にしてコンパイル
– --with-classic-insults
● include the insults from the "classic" sudo
– --with-csops-insults
● include CSOps insults
– --with-hal-insults
● include 2001-like insults
– --with-goons-insults
● include the insults from the "Goon Show"
– --with-all-insults
● include all the sudo insult sets
26 / 30
侮辱を有効にする
● /etc/sudoers に追記
– Defaults insults
● あとはパスワードを間違えるだけ!
27 / 30
残念ながら RHEL では。。。
● 侮辱オプションは指定されていない
%configure 
--prefix=%{_prefix} --sbindir=%{_sbindir} --libdir=%{_libdir} 
--docdir=%{_datadir}/doc/%{name}-%{version} 
--with-logging=syslog --with-logfac=authpriv --with-pam 
--with-pam-login --with-editor=/bin/vi --with-env-editor 
--with-ignore-dot --with-tty-tickets --with-ldap 
--with-ldap-conf-file="%{_sysconfdir}/sudo-ldap.conf" 
--with-selinux --with-passprompt="[sudo] password for %p: " 
--with-linux-audit --with-sssd
28 / 30
結論
こんなに真面目に
フザけたコマンドは
見たことない!!
29 / 30
参考文献
● http://ja.wikipedia.org/wiki/Sudo
● http://www.sudo.ws/
● man sudo
● man sudoers
30 / 30

現場で役に立たないsudoの使い方