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

FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
ken_kitahara
 

What's hot (20)

FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
 
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説MongoDB Configパラメータ解説
MongoDB Configパラメータ解説
 
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
 
Windowsコンテナ入門
Windowsコンテナ入門Windowsコンテナ入門
Windowsコンテナ入門
 
SPAのルーティングの話
SPAのルーティングの話SPAのルーティングの話
SPAのルーティングの話
 
rsyncやシェルでバックアップするよりも簡単にOSSのBaculaでバックアップしてみよう
rsyncやシェルでバックアップするよりも簡単にOSSのBaculaでバックアップしてみようrsyncやシェルでバックアップするよりも簡単にOSSのBaculaでバックアップしてみよう
rsyncやシェルでバックアップするよりも簡単にOSSのBaculaでバックアップしてみよう
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
30分で分かる!OSの作り方
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
 
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
 
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
[Cloud OnAir] GCP 上でストリーミングデータ処理基盤を構築してみよう! 2018年9月13日 放送
 
Keycloak入門
Keycloak入門Keycloak入門
Keycloak入門
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについてeBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
 
【JEUG】 オープンSIEMの世界へ
【JEUG】 オープンSIEMの世界へ【JEUG】 オープンSIEMの世界へ
【JEUG】 オープンSIEMの世界へ
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
SAP on Azure インフラ設計解説:HA/DR、Backupからパフォーマンス最適化まで
SAP on Azure インフラ設計解説:HA/DR、Backupからパフォーマンス最適化までSAP on Azure インフラ設計解説:HA/DR、Backupからパフォーマンス最適化まで
SAP on Azure インフラ設計解説:HA/DR、Backupからパフォーマンス最適化まで
 

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

Unix 基礎
Unix 基礎Unix 基礎
Unix 基礎
Sho A
 
Hatochan's Resume 20130216@Koedolug
Hatochan's Resume 20130216@KoedolugHatochan's Resume 20130216@Koedolug
Hatochan's Resume 20130216@Koedolug
Kentaro Hatori
 

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 (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
 

Recently uploaded

Recently uploaded (12)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

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