大いなる力には大いなる責任が伴う〜sudoの設定を求めて〜

あなたは以下のような文言を見たことがありますか？

```
あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:
    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。
```

これは**sudoコマンドを打った時にたまに出てくる警告文**です。

この記事を書こうと思ったきっかけはこのツイートを見たことです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">とあるシステムで特権ユーザーにスイッチする時に「大いなる力には大いなる責任が伴う」ってメッセージが出てくるんやけど、めっちゃすこ。<br>彡(^)(^)</p>&mdash; gonsuke777 (@ora_gonsuke777) <a href="https://twitter.com/ora_gonsuke777/status/1386643246902771719?ref_src=twsrc%5Etfw">April 26, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

**わかる。**

自分は初めてみた時はドキッとしました。
「sudo使おうとしてごめんなさい・・・。**でも仕方ないよね？**」
と改めて確認したので効果ありました。笑

**「大いなる力には大いなる責任が伴う」**
この元ネタはスパイダーマンのセリフらしいです。
本質をついた良い言葉ですよね。
[sudoの「大いなる力」の元ネタを探して - Qiita](https://qiita.com/smile_kme/items/a124a029422d2245833c)

でもシステムによって見かける時と見かけない時があるよな〜。
そういう設定があるのかも？
**・・・自分のPCでも表示させてみたい！**

そう思って**sudoの設定を探す旅に出かけました**。


## 編集

調べてみると、sudoの設定は `/etc/sudoers` に格納されている模様。
しかもそのフォルダを安全に編集するために **visudo** というコマンドがあるらしいです。
使い方はviとほぼ同じですが、sudo設定のエラーチェックをしてくれます。

[sudoの権限を設定するvisudoコマンド【Linuxコマンド集】](https://eng-entrance.com/linux-command-visudo)

```
$ sudo visudo
```

これだけで編集画面へいけます。

## 設定

[Man page of SUDOERS](https://linuxjm.osdn.jp/html/sudo/man5/sudoers.5.html)

sudoersの設定方法です。
関係ある部分を引用させてもらいます。

**lecture**
> sudo はパスワードプロンプトに添えて簡単な訓戒を表示することができる。 
> このオプションはその訓戒をいつ表示するかを決定する。以下の値が可能である。

> always いつでも必ず訓戒を表示する。
> never 訓戒をまったく表示しない。
> once ユーザがはじめて sudo を実行したときだけ表示する。

>値を指定しないと、once を指定したことになる。頭に '!' を付けて、 このオプションを否定すると、値に never が使用される。 デフォルトの値は once である。

**lecture_file**
> 標準の訓戒とは別の sudo の訓戒を書き込んだファイルのパス。 
> 指名したファイルが存在すれば、sudo は標準の訓戒の代わりに、それを使用する。 
> デフォルトでは、プログラムに埋め込まれた訓戒が使用される。

なるほど。

## 実践


### 表示させてみる

とりあえず設定に `lecture = "always"` を追加してみよう！
それからデフォルトのものを表示させたいので、`lecture_file`の行をコメントアウト。

```bash:/etc/sudoers
##
# Override built-in defaults
##

...

Defaults       lecture = "always"  #追加
#Defaults       lecture_file = "/etc/sudo_lecture"  #コメントアウト
```

ちなみに設定がalwaysといってもターミナル開いてる間は警告表示が無効な様子。
警告の表示を再度出したい場合は一旦ターミナルを終了するといいみたいです。


ターミナルを再起動して、sudoを実行。

```
$ sudo ls

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password:
```

**これだ！**

・・・**日本語訳**にしたいな。

### 日本語で表示させる

言語環境設定のlanguagesetupとか設定してもなにも変化なし。
localeコマンドで環境言語を見てみても日本語設定になってるので問題なさそう。

となると別にプログラムに組み込まれてるわけではないのかな。
じゃあもう表示する文言を自分で用意しちゃおう。

警告文表示ファイル作成する。

```
$ sudo vim /etc/sudo_lecture_japanese
```

```txt:/etc/sudo_lecture_japanese

あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:
    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。

```

保存。
作成したファイルを指定する。

```
$ sudo visudo
```


```bash:/etc/sudoers
Defaults       lecture = "always"
Defaults       lecture_file = "/etc/sudo_lecture_japanese"
```

そして今度こそ！！！

```
$ sudo ls

あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:
    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。

```

**できた！！！**

これでsudoするたび警告が表示されます。
やったね！

おしまい。

## その他参考

[sudoで覚えておくと便利な設定・使い方 | 俺的備忘録 〜なんかいろいろ〜](https://orebibou.com/ja/home/201706/20170619_001/)