SlideShare a Scribd company logo
1 of 30
現場で役に立たない
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

More Related Content

What's hot

Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜Yoshiki Nakagawa
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツpospome
 
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Satoshi Kubo
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所Ryo Sasaki
 
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現するゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現するKeioOyama
 
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)NTT DATA Technology & Innovation
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話Kazuho Oku
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with KarateTakanori Suzuki
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 

What's hot (20)

Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
さくらのクラウド基礎知識
さくらのクラウド基礎知識さくらのクラウド基礎知識
さくらのクラウド基礎知識
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
Docker Tokyo
Docker TokyoDocker Tokyo
Docker Tokyo
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所
 
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現するゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
 
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)
今から始めるWebClient(JSUG勉強会 2020年その6 LT大会)
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
自宅k8s/vSphere入門
自宅k8s/vSphere入門自宅k8s/vSphere入門
自宅k8s/vSphere入門
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 

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

Unix 基礎
Unix 基礎Unix 基礎
Unix 基礎Sho A
 
Ubuntuで始めるコンテナ技術入門
Ubuntuで始めるコンテナ技術入門Ubuntuで始めるコンテナ技術入門
Ubuntuで始めるコンテナ技術入門Takenori Matsumoto
 
9.3で進化した外部テーブル
9.3で進化した外部テーブル9.3で進化した外部テーブル
9.3で進化した外部テーブルShigeru Hanada
 
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Nobuto Murata
 
Programming under capability mode
Programming under capability modeProgramming under capability mode
Programming under capability modeYuichiro Naito
 
Hatochan's Resume 20130216@Koedolug
Hatochan's Resume 20130216@KoedolugHatochan's Resume 20130216@Koedolug
Hatochan's Resume 20130216@KoedolugKentaro Hatori
 
誰得コマンド&オプション35連発
誰得コマンド&オプション35連発誰得コマンド&オプション35連発
誰得コマンド&オプション35連発Yozo SATO
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作アシアル株式会社
 

Similar to 現場で役に立たないsudoの使い方 (12)

Unix 基礎
Unix 基礎Unix 基礎
Unix 基礎
 
systemd 再入門
systemd 再入門systemd 再入門
systemd 再入門
 
Ubuntuで始めるコンテナ技術入門
Ubuntuで始めるコンテナ技術入門Ubuntuで始めるコンテナ技術入門
Ubuntuで始めるコンテナ技術入門
 
9.3で進化した外部テーブル
9.3で進化した外部テーブル9.3で進化した外部テーブル
9.3で進化した外部テーブル
 
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
 
Programming under capability mode
Programming under capability modeProgramming under capability mode
Programming under capability mode
 
sshdのお話
sshdのお話sshdのお話
sshdのお話
 
Hatochan's Resume 20130216@Koedolug
Hatochan's Resume 20130216@KoedolugHatochan's Resume 20130216@Koedolug
Hatochan's Resume 20130216@Koedolug
 
誰得コマンド&オプション35連発
誰得コマンド&オプション35連発誰得コマンド&オプション35連発
誰得コマンド&オプション35連発
 
systemdを始めよう
systemdを始めようsystemdを始めよう
systemdを始めよう
 
20170124 linux basic_1
20170124 linux basic_120170124 linux basic_1
20170124 linux basic_1
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
 

More from (^-^) togakushi

ささみ麻雀部の紹介
ささみ麻雀部の紹介ささみ麻雀部の紹介
ささみ麻雀部の紹介(^-^) togakushi
 
ファイナル・ファンタジー2のデータを解析してみる
ファイナル・ファンタジー2のデータを解析してみるファイナル・ファンタジー2のデータを解析してみる
ファイナル・ファンタジー2のデータを解析してみる(^-^) togakushi
 
手順書の話 Ver.0.3.0
手順書の話 Ver.0.3.0手順書の話 Ver.0.3.0
手順書の話 Ver.0.3.0(^-^) togakushi
 
仕事の捉え方の話 #ssmjp
仕事の捉え方の話 #ssmjp仕事の捉え方の話 #ssmjp
仕事の捉え方の話 #ssmjp(^-^) togakushi
 
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramikoOpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramiko(^-^) togakushi
 
tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。(^-^) togakushi
 

More from (^-^) togakushi (14)

ささみ麻雀部の紹介
ささみ麻雀部の紹介ささみ麻雀部の紹介
ささみ麻雀部の紹介
 
ファイナル・ファンタジー2のデータを解析してみる
ファイナル・ファンタジー2のデータを解析してみるファイナル・ファンタジー2のデータを解析してみる
ファイナル・ファンタジー2のデータを解析してみる
 
手順書の話 Ver.0.3.0
手順書の話 Ver.0.3.0手順書の話 Ver.0.3.0
手順書の話 Ver.0.3.0
 
仕事の捉え方の話 #ssmjp
仕事の捉え方の話 #ssmjp仕事の捉え方の話 #ssmjp
仕事の捉え方の話 #ssmjp
 
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramikoOpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
 
Janog33.5
Janog33.5Janog33.5
Janog33.5
 
tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。
 
KVM+cgroup
KVM+cgroupKVM+cgroup
KVM+cgroup
 
SSH力をつかおう
SSH力をつかおうSSH力をつかおう
SSH力をつかおう
 
jenkinsで遊ぶ
jenkinsで遊ぶjenkinsで遊ぶ
jenkinsで遊ぶ
 
Pakena #9
Pakena #9Pakena #9
Pakena #9
 
SSH力をつけよう
SSH力をつけようSSH力をつけよう
SSH力をつけよう
 
Sfstudy #2
Sfstudy #2Sfstudy #2
Sfstudy #2
 
ひとりsphinx
ひとりsphinxひとりsphinx
ひとりsphinx
 

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