Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
現場で役に立たない
sudo の使い方
#ssmjp 2013/06/28 @togakushi
1 / 30
sudo とは
● sudo “( su do” )は UNIX および Unix 系オペ
レーティングシステムのプログラムの 1 つで、
ユーザーが別のユーザー(通常、スーパーユー
ザーすなわち root )の特権レベルでプログラ
ムを実行す...
結論
こんなに真面目に
フザけたコマンドは
見たことない!!
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...
エイリアスの種類
● User_Alias
● Runas_Alias
● Host_Alias
● Cmnd_Alias
9 / 30
エイリアスの書式
● NAME に使える文字
– 大英字、数字、アンダースコア
– 先頭は英字
● ’ ’同じタイプのエイリアスは : で区切って続け
てかける
Alias_Type NAME = item1, item2, … : NAME ...
デフォルト値 ( 真偽値 )
● authenticate
– 実行する度に本人確認のためのパスワードを求める
● ignore_local_sudoers
– ローカルの sudoers を無視する (LDAP 側で指定 )
● log_in...
デフォルト値 ( 真偽値)
● noexec
– sudo を経由して実行されたコマンドから別のコマンドを実行でき
ないようにする
● requiretty
– sudo を実行するために tty を要求する
● rootpw
– ユーザのパス...
デフォルト値 ( 数値 )
● passwd_tries
– ユーザがパスワード入力できる回数
● passwd_timeout
– パスワードプロンプトがタイムアウトするまでの時
間 ( 分 )
● timestamp_timeout
– 再...
デフォルト値 ( 文字列 )
● iolog_dir
– log_output や log_input が保存するディレクトリの
指定
● iolog_file
– log_output や log_input が保存するログファイル名
● p...
デフォルト値 ( 文字列 )
● lecture
– パスワードプロンプトに添えるレクチャーの表示
● always :いつでも必ず表示
● never :一切表示しない
● once :初めて実行するときだけ
● lecture_file
–...
別ファイルのインクルード
● #include
– 別のファイルをインクルード
– 絶対パス以外で指定した場合は sudoers と同じ位置から探す
● #includedir
– 指定したディレクトリのファイル全部をインクルードする
– 〜で...
コマンドラインオプション
● -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/sud...
sudoreplay
● log_output で保存しているログを再生するコマ
ンド
– -l で保存されているログのリストを表示
– -l user hogehoge のように検索も可能
21 / 30
LDAP と連携
● サーバの設定
– スキーマを拡張 (sudo.schema)
– sudoers の内容を追加
● 既存の sudoers から移行するツールが付属してるよ
● クライアントの設定
– nsswitch.conf で su...
フザケタツカイカタ
23 / 30
謝られる
● msgid "sorry, you are not allowed to set the following
environment variables: %s"
●
msgstr " すみませんが、あなたは次の環境変数を設定する...
罵られる
● "Wrong! You cheating scum!"
– 何やってんだ!お前はカスだ!
●
"What, what, what, what, what, what, what, what, what, what?"
– なんで?...
罵られる方法
● ” ”コンパイルオプション 侮辱 を有効にしてコンパイル
– --with-classic-insults
● include the insults from the "classic" sudo
– --with-csop...
侮辱を有効にする
● /etc/sudoers に追記
– Defaults insults
● あとはパスワードを間違えるだけ!
27 / 30
残念ながら RHEL では。。。
● 侮辱オプションは指定されていない
%configure 
--prefix=%{_prefix} --sbindir=%{_sbindir} --libdir=%{_libdir} 
--docdir=%{...
結論
こんなに真面目に
フザけたコマンドは
見たことない!!
29 / 30
参考文献
● http://ja.wikipedia.org/wiki/Sudo
● http://www.sudo.ws/
● man sudo
● man sudoers
30 / 30
Upcoming SlideShare
Loading in …5
×

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

29,309 views

Published on

Published in: Technology
  • これは新鮮なプログラムですね
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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

  1. 1. 現場で役に立たない sudo の使い方 #ssmjp 2013/06/28 @togakushi 1 / 30
  2. 2. sudo とは ● sudo “( su do” )は UNIX および Unix 系オペ レーティングシステムのプログラムの 1 つで、 ユーザーが別のユーザー(通常、スーパーユー ザーすなわち root )の特権レベルでプログラ ムを実行するためのコマンドである。 出典: http://ja.wikipedia.org/wiki/Sudo 2 / 30
  3. 3. 結論 こんなに真面目に フザけたコマンドは 見たことない!! 3 / 30
  4. 4. マジメナツカイカタ 4 / 30
  5. 5. 特権を制約 ● 無差別に root 権限を渡さずに限定的に使わせる – 特定ユーザ / グループのみ – 特定コマンドのみ – 特定ホストのみ – root 以外のユーザ / グループも指定可能 5 / 30
  6. 6. 設定ファイルの構造 ● エイリアスの設定 ● デフォルト値の指定 ● ユーザ設定 ● 他のファイルのインクルード 順番はどうでもいいみたいだけど 最後に設定されたものが有効になる 6 / 30
  7. 7. ユーザ設定 ● 誰が何をしていいか決めるところ %admin ALL=(ALL) ALL who where = (as_whom) what [ 誰が どのホストで = ( 誰に変身して ) 何を ] 7 / 30
  8. 8. タグ ● ユーザ設定のコマンドリスト (what の部分 ) に はタグが指定できる ( 全 10 種 ) – NOPASSWD, PASSWD, NOEXEC, EXEC, SETENV, NOSETENV, LOG_INPUT, NOLOG_INPUT, LOG_OUTPUT, NOLOG_OUTPUT – 指定されたタグは反対の意味を持つタグが指定され るまでコマンドリストの中で継承される 8 / 30
  9. 9. エイリアスの種類 ● User_Alias ● Runas_Alias ● Host_Alias ● Cmnd_Alias 9 / 30
  10. 10. エイリアスの書式 ● NAME に使える文字 – 大英字、数字、アンダースコア – 先頭は英字 ● ’ ’同じタイプのエイリアスは : で区切って続け てかける Alias_Type NAME = item1, item2, … : NAME = ... 10 / 30
  11. 11. デフォルト値 ( 真偽値 ) ● authenticate – 実行する度に本人確認のためのパスワードを求める ● ignore_local_sudoers – ローカルの sudoers を無視する (LDAP 側で指定 ) ● log_input – キー入力すべてをログに取る ● log_output – スクリーンに出力されるものすべてをログに取る 11 / 30
  12. 12. デフォルト値 ( 真偽値) ● noexec – sudo を経由して実行されたコマンドから別のコマンドを実行でき ないようにする ● requiretty – sudo を実行するために tty を要求する ● rootpw – ユーザのパスワードではなく、 root のパスワードを求める ● runaspw – runas_default オプションで指定したユーザのパスワードを求め る 12 / 30
  13. 13. デフォルト値 ( 数値 ) ● passwd_tries – ユーザがパスワード入力できる回数 ● passwd_timeout – パスワードプロンプトがタイムアウトするまでの時 間 ( 分 ) ● timestamp_timeout – 再びパスワードを要求するまでの時間 ( 分 ) 13 / 30
  14. 14. デフォルト値 ( 文字列 ) ● iolog_dir – log_output や log_input が保存するディレクトリの 指定 ● iolog_file – log_output や log_input が保存するログファイル名 ● passprompt – パスワードを要求するときのプロンプト 14 / 30
  15. 15. デフォルト値 ( 文字列 ) ● lecture – パスワードプロンプトに添えるレクチャーの表示 ● always :いつでも必ず表示 ● never :一切表示しない ● once :初めて実行するときだけ ● lecture_file – 表示するレクチャーをファイルで指定する 15 / 30
  16. 16. 別ファイルのインクルード ● #include – 別のファイルをインクルード – 絶対パス以外で指定した場合は sudoers と同じ位置から探す ● #includedir – 指定したディレクトリのファイル全部をインクルードする – 〜で終わる場合や . が含まれるファイル名は読み飛ばされる ● この # はコメントじゃないよ! 16 / 30
  17. 17. コマンドラインオプション ● -l,-ll – 何ができるか確認する ● -u,-g – 指定したユーザ / グループで実行 ● -p – パスワードプロンプトの変更 17 / 30
  18. 18. コマンドラインオプション ● -k,-K – キャッシュしたパスワードを破棄 ● -v – キャッシュの延長 ● -i,-s – シェルの実行 ( 何も指定してなければ root 権限 ) 18 / 30
  19. 19. sudoedit ● sudo -e と等価 19 / 30
  20. 20. 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
  21. 21. sudoreplay ● log_output で保存しているログを再生するコマ ンド – -l で保存されているログのリストを表示 – -l user hogehoge のように検索も可能 21 / 30
  22. 22. 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. 23. フザケタツカイカタ 23 / 30
  24. 24. 謝られる ● 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
  25. 25. 罵られる ● "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
  26. 26. 罵られる方法 ● ” ”コンパイルオプション 侮辱 を有効にしてコンパイル – --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
  27. 27. 侮辱を有効にする ● /etc/sudoers に追記 – Defaults insults ● あとはパスワードを間違えるだけ! 27 / 30
  28. 28. 残念ながら 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. 29. 結論 こんなに真面目に フザけたコマンドは 見たことない!! 29 / 30
  30. 30. 参考文献 ● http://ja.wikipedia.org/wiki/Sudo ● http://www.sudo.ws/ ● man sudo ● man sudoers 30 / 30

×