- ベストアンサー
sudoを付けるべき時と付けるべきでない時
主に環境構築時ですが、何かコマンドを打つ→パーミッション系のエラーが出る→sudoつけてもう一回やってみる→うまくいった、という時はそのまま次に進んでいました。これは良くないことでしょうか。また、一般にはどう対応すべきですか。構築前に、作るグループなどしっかり洗い出すべきだったでしょうか。権限系の勉強不足でしょうか。曖昧な質問ですみませんが、よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No1です。 >しかし思ったのですが、apt-get installとかgem installとかその他一般のコマンドを叩く時に内側で上記の(1)(2)をやっているのかは(力不足故?)分からないことは多いです。 細かく内部をすべて知っている必要はありません。「そもそも何をしたいのか」をよく意識することです。システム系のファイルやディレクトリを更新したいのかどうか等。 >いやそもそも、インストールという作業自体が管理者権限を必要とする仕事である、ということなんでしょうか。 プログラムのインストールと言っても、システムに変更が必要ない物もあるわけで、一律にどうとは言えません。 apt-get installの場合は、システムへのインストールなので、当然管理者権限は必要です。gem install は通常はシステムのRuby用ライブラリへのインストールなので、管理者権限が必要ですが、コマンドラインオプションや設定によっては、すべて $HOME の下だけにインストールすることも可能で、この場合は管理者権限が必要ではありません。 apt-getやyumを使わずにソースからコンパイルしてインストールする場合は、tar を展開して、 $ ./configue $ make ・・・・・・・とここまで一般ユーザ権限で可能 $ sudo make install ・・・・・・・ configureで何も指定しないと普通は/usr/localにインストールするので管理者権限が必要 $ ./configure --prefix=$HOME/foo ・・・・・インストール先を $HOME/foo と指定 $ make $ make install ・・・・・ これなら管理者権限不要 >そういえばWindowsマシンでもまともと思えるソフトウェアなら「管理者権限が必要です。実行しますか?」と言われれば深く考えず「OK」してました。中で何やっているのかは分からないです。 インストーラーはシステムを更新することがほとんどです。アンインストール情報の登録や、場合によっては拡張子の関連づけなど。 インストール時で無く、実行時にダイアログが出てくれば、よく考えるべきでしょう。 Androidアプリのように、「このアプリはどんな権限を必要とします」と出てくればそれで判断できるのですが。
その他の回答 (4)
- notnot
- ベストアンサー率47% (4900/10361)
No1です。 >ここは分かってないかもしれません。個人でやっているので、管理者と一般ユーザの違いが曖昧になってます。 まず、何が一般ユーザで出来ないかというと、2つあって、 (1) 自分が書き込み権限の無いファイルの更新。自分が読み込み権限の無いファイルの読み込み。自分が実行権限の無いファイルの実行というファイルの権限関係の物。 (2) ポート番号が1024未満のTCPやUDPポートの使用。 自分がこれからやろうとする作業がこれらに当たるのかどうかがわからないと言うことは、自分がこれからやる作業の内容を理解していないと言うことで、本来は危険なことです。 ただ、他の人が書いている通り、個人の趣味での作業ならあまりうるさく言わなくても良いのかもしれません。それを仕事にしてお金をもらっているであれば、プロ失格ですが。 あと、SELinuxとう機能を使ってセキュリティを強化している場合にはさらにユーザによって出来ることが制限される場合があります。
補足
ありがとうございます。 > (2) ポート番号が1024未満のTCPやUDPポートの使用。 なるほど。ポート番号によって管理者権限の要否が変わるんですね。 > 自分がこれからやろうとする作業がこれらに当たるのかどうかがわからないと言うことは、自分がこれからやる作業の内容を理解していないと言うことで、本来は危険なことです。 これは、確かにおっしゃる通りです。 しかし思ったのですが、apt-get installとかgem installとかその他一般のコマンドを叩く時に内側で上記の(1)(2)をやっているのかは(力不足故?)分からないことは多いです。現状は、そのコマンドやツールの知名度やWebページを見た「感じ」で判断してますが、そのへんは「プロとして」仕事でやる場合は行動を追跡してsudoで起動するべきか確認するんでしょうか。いやそもそも、インストールという作業自体が管理者権限を必要とする仕事である、ということなんでしょうか。 そういえばWindowsマシンでもまともと思えるソフトウェアなら「管理者権限が必要です。実行しますか?」と言われれば深く考えず「OK」してました。中で何やっているのかは分からないです。 質問を重ねてしまい恐縮です。
- dscripty
- ベストアンサー率51% (166/325)
まずは、 OS 自体に変化を加えるユーザと、 OS の状態を変化させるユーザと、 その他の自分の砂場だけで遊ぶ一般ユーザの、 3種類に分けてみてはどう? 『OS自体に変化を加える』というのは、 OS とか共有パッケージの更新、 サービスの設定ファイルとか共有アプリケーションの基本設定とかを変更すること。 『OS の状態を変化させる』というのは、 サービスを起動したり、OS をリブートしたりで、状態は変更できても、永続的な変更はできないこと。 この辺の考え方は、Windows Server でも同じだし、区分できるようになると、サーバ管理への不安はだいぶへるとおもうよ!
お礼
これはいいですね! 早速実践してみます! ありがとうこざいます。
個人使用のパソコンなら、難しく考える必要はないのでは? スーパーユーザーの権限でないと、だめな場合は、sudoを付ける、 ただ、それだけの事だけかと・・・ 煩わしく思う方は、パソコンのユーザーをスーパーユーザーにして置けば 良いのでは。 これですと、セキュリティでWindowsと同じ程度になって、しまうので 私は、してませんが・・・ サーバーを公開するには、権限系は重要だと思います、私もよく解らないので、 サーバーに仕立てたパソコンを公開出来ずに、内輪で使用してます。
お礼
ありがとうございます。 確かにそうかもしれません。
- notnot
- ベストアンサー率47% (4900/10361)
一般にはというか、root権限で実行すべきコマンドの時はsudoをつけます。そうじゃないときはつけません。 何を一般ユーザ権限で実行すべきで、何をroot権限で実行すべきかがわかってないのだとすると勉強不足ですね。
補足
> 一般にはというか、root権限で実行すべきコマンドの時はsudoをつけます。そうじゃないときはつけません。 ここは大丈夫です。 > 何を一般ユーザ権限で実行すべきで、何をroot権限で実行すべきかがわかってないのだとすると勉強不足ですね。 ここは分かってないかもしれません。個人でやっているので、管理者と一般ユーザの違いが曖昧になってます。 今のところ、以下のような理解しかできてません。 * マシンの機能全体に不都合が出る可能性のあるコマンド => root権限で実施すべき * sudo実行権限を他のユーザに付与する => root権限で実施すべき * root権限が必要なディレクトリやファイルに変化を加えるようなコマンド => root権限で実施すべき * その他 => 一般ユーザ権限で実施すべき なので、apt-get installでsudo権限が必要とされるのか、そうでないのかは判断がつかない状況です。
お礼
詳細な説明ありがとうございます。 > apt-get installの場合は、システムへのインストールなので、当然管理者権限は必要です。 なるほど。 > $ ./configure --prefix=$HOME/foo ・・・・・インストール先を $HOME/foo と指定 > $ make > $ make install ・・・・・ これなら管理者権限不要 意図的にHOME下にインストールさせることもできるんですね。