49072


1,「sudo」コマンドはrootのパスワードを入力せずともroot権限でコマンドが実行できるものですが、よくよく考えたらそれだとrootでログインせずとも色々なことができてしまうのであまり意味がないのでは？

2,
ちょっと調べたところ、実行できるコマンドをvisudoで割り当てる、と書いてありましたが、大抵は/usr/のようなフォルダ名のフォルダを指定しているのですか？システムを破壊してしまう可能性のあるコマンドってどこにあるんでしょう？

1,2の認識で間違いないでしょうか？システム管理者がどういう風にユーザーを管理しているのかよくわかっていないため、なんとなくそうなんじゃないかと思っていても自分の中ではっきりしません。なので解説がほしいのですが、どうぞよろしくお願いいたします。


CC BY-SA 4.0
2018-10-08T23:50:04.340
49070
2018-10-09T11:31:22.273
2018-10-09T05:34:16.933
3054
28320
question
linux sudo
sudoにはrootのパスワードが必要ないので意味がないのでは？


`sudo` は  
\- `root` のパスワードでなくてユーザーのパスワードを必要とする  
\- `sudo` を許す許さないは管理者 `root` が決める  
\- `sudo` でやったこと/やろうとして失敗したことは、すべてログに残る

`su` は substitute user ユーザーの置換ですので上記と状況が違い  
\- `root` のパスワードを知っている必要がある  
\- `root` のパスワードを知っている人が `su` することを禁じることができない  
\- `su` 後はやりたいほうだい（ログが残らない）

UNIX において「システムデバイスは単にファイル」なので、任意のコマンドでシステムを破壊することができます。それこそ `rm` なら当然ですし `dd`
でも、いや `cat` でもシステムを破壊することは可能です。知識がある人が権限を得てしまえば内側からはやりたい放題、破壊工作をしたくなったら `su`
でも `sudo` でも止められません。そういう意味で  
\- 攻撃者であれ、善意のユーザであれ `root` のパスワードを教えるってのは論外  
\- 攻撃者になりそうな人には `sudo` 権限を与えない  
\- 悪意の攻撃者でなく無能な味方が不注意でシステムを壊すことは防げない  
\- が、そもそもそういう無能な味方には `sudo` 権限を渡さなきゃいい  
\- `sudo` ならば、ログが残る  
あたりの差は大きくて `sudo` のほうが安全なのは確かです。

# 権限があればログごとシステムを消去するなんてのも簡単ですけど...


CC BY-SA 4.0
2018-10-09T00:56:08.597
49072
2018-10-09T00:56:08.597
8589
49070
answer


  * 設定と運用次第なところもありますが、`sudo`を使えばrootのパスワードを直接教えることなく、「誰が」「いつ」「どんなコマンド」を実行したかの記録が残ります。

  * `sudo`を誰がどのように実行できるかを定義しているのが`/etc/sudoers`というファイルで、このファイルを編集するためのコマンドが`visudo`です。  
管理者(root)が使うコマンドは`/sbin`または`/usr/sbin`以下に配置されています。


CC BY-SA 4.0
2018-10-09T01:07:54.227
49073
2018-10-09T01:07:54.227
3060
49070
answer


**1\. について**

実際には sudoers で許可されたものだけが実行できます。  
結果として「いろいろ出来る状態」のは、その様に許可されているから だと思います。

  * sudo では、許可された範囲で root 権限で コマンドを実行することができます。  
ロギングや本人確認（パスワード、LDAPなど）といった、強力な機能があるので 「rootのパスワードを共有する」という問題の解決策になりえるので
現在では主流になっています。

  * ただ、「そこまで厳しくやりたくないよ」といった場合は、root と遜色のない 強力な特権ユーザを作り、それを共有すれば、ほぼ従来どおりの運用も可能だったりします。  
sudoの意味は無いかもしれませんが、そもそも、rootのログインが禁止されていたり、仮想環境やクラウドなどでは、rootのパスワードが非公開だったりすることもあるので、こういった運用もよくあると思います。

**2 について**

個人で観測可能な範囲で書くと、大抵はコマンドレベルので制御まではやってなくて、ユーザ単位で「root
ですべて実行可能」と設定している場合が多いですね。削除やシャットダウンといった特定のコマンドを禁止する場合や、サービスの開始／停止のコマンドだけ許可する場合はまれにある感じです。この辺は所属する組織やセキュリティ要件によって様々だと思いますので、一概には言えないと思います。


CC BY-SA 4.0
2018-10-09T11:31:22.273
49111
2018-10-09T11:31:22.273
5008
49070
answer