パスワードなしでsudoを使用してアプリケーションを実行する方法は?


40

...しかし、管理者権限が必要なアプリケーションにはまだ必要ですか?

以下を許可するには:

$ apache2ctl restart
httpd not running, trying to start
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

$ sudo !!
sudo apache2ctl restart             #no password asked
$                                   #works!

参考のために、Amazonのe3インスタンスでこのセットアップを見ました

何か案が?


これはフォーラムでの素晴らしいチュートリアルで、よく使用するプログラムを指定するための個別のファイルの作成について詳しく説明しています。また、セキュリティ上の理由からも良い考えです。
トッドパートリッジ 'Gen2ly'

回答:


51

sudoersファイルを編集する必要があります。成功するとシステムのセキュリティが低下し、失敗するとsudoが破損する可能性があることに注意してください。sudo visudovisudoはエラーをチェックし、見つかった場合はファイルを保存しないため、常にsudoersファイルを編集します。

パスワードなしでrootとして実行する許可をすべて与えることは悪い考えです。したがって、必要な1つの実行可能ファイル(apache2ctl)を通過させるだけです。ファイルの一番下に次を追加します。

YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl

必要に応じて、実行可能ファイルへのパスを「ALL」に置き換えて、完全なパスワードなしのsudoを提供できます。

YOURNAMEをユーザー名に置き換え、Ctrl+ Xを押して保存して終了します。エラーが発生した場合、とにかく元に戻す、編集する、または保存することを提案します。

必ず実行可能ファイルへのフルパスを使用てください
/usr/bin/apache2ctlの代わりにapache2ctl。パスを明示的に指定しないと、sudoはユーザーの現在のパスにあるapachectlという名前のプログラムをrootとして実行できるため、これは重要です。


3
これは、あなたのユーザーのような名前%YOURNAMEグループに許可を与えることに注意してください。通常のユーザーはすべて、Ubuntuシステムで同じ名前のグループを持っているため、通常は問題になりません。ユーザーに許可を与えるにはYOURNAME、%なしで指定します。
ダニエルヴェルナー

より破壊的な方法はありますか?(実行可能ファイルの一部の機能のみ)
3pic

1
古い投稿ですが、sudoersのエントリを特定のホスト名(可能な場合)に制限し、指定された引数oから引数なし(次のようにapache2ctl)に 制限することで、間違いなくその答えを完成させますYOURNAME YOUR-HOSTNAME = NOPASSWD: /usr/bin/apache2ctl <specific arg | "">。---すべての場合man 5 sudoersに移動する参照です。
-Cbhihe

25

sudoは非常に強力であり、クールなことを行うように構成できるため、この質問に対する本当の答えは複雑になる可能性があります。これは、ドキュメントで徹底的に説明されています

短い答えはsudo visudoターミナルで実行されます。visudoを初めて実行する場合は、どのエディターを使用するかを尋ねられます。nanoは一般的に最も使いやすいと考えられていますが、最も使い慣れた/使い慣れたエディターを選択してください。アクセスを許可するユーザーを決定する必要があります。それはALL、すべての人非常に悪い考え)、ユーザー、またはシステムグループ向けです。グループの前には%記号が付きます。たとえば、steroid_users追加するすべてのコマンドのパスワードを必要とせずに、グループの全員にルート権限を付与する場合:

%steroid_users ALL=(ALL) NOPASSWD: ALL

ファイルの最後まで、終了し、ファイルを保存します。すべてが順調に進み、steroid_usersグループのメンバーであればsudo *some-command*、わざわざパスワードを入力する必要なく発行できます。

またはあなたは、SSHキーベースの認証の設定、または持っている場合-あなたがログインしている間、あなたのターミナルへのアクセス権を持っている人ということを覚えておいてください(さらに悪いことには)パスワードの無料セッションのログインを有効にしている-あなたへの完全かつ自由なアクセス全体をシステム。システムに複数のユーザーがいる場合、またはこれがファイルサーバーの場合、rootは何でもできるため、すべてのユーザーファイルが危険にさらされる可能性があります。

また、間違えた場合、visudoはファイルに変更を保存せずにエラーメッセージを出力します。これにより、sudoが完全に破損するのを防ぐことができます。あなたは本当にドキュメントを読むべきです。Sudoは、システム全体を公開することなく、ユーザーが自分の仕事をするために十分なアクセス権を与えるように設計されています。特定のコマンドにのみパスワードを使用しないアクセスを許可すると便利な場合があります。

これがお役に立てば幸いです。


それはうまくいきました。これを取得してから、askubuntu.com / questions / 192050 /… から「sudo service sudo restart」を使用しました。これをすべてアクティブなUbuntuセッションで使用することができました。驚くばかり!
パトリック

5

「/ etc / sudoers」ファイル(そのための「visudo」コマンドがあります)を編集して、ユーザーまたはグループに許可されるコマンドのリストの前にNOPASSWDを追加する必要があります。ユーザーが「admin」グループに属している場合-以下が必要です。

%admin ALL=(ALL) NOPASSWD: ALL

https://help.ubuntu.com/community/Sudoersを確認してください


3

nopasswdフラグをユーザーリストに追加することはできますが、それによって質問されたパスワードがすべて削除されるわけではありません。最初のものだけが尋ねられます。

  1. sudoersの編集:sudo visudo(sudoを使用する必要があります。これは管理ファイルです。)
  2. 管理行の後に(最後に)nopasswdフラグを付けてユーザーを追加します。例:
    cyrex ALL = NOPASSWD: ALLまたはcyrex ALL = (ALL) NOPASSWD: ALL

2
sudo visudo
%<GROUP> ALL = NOPASSWD: apache2ctl

または

sudo visudo
%<GROUP> ALL = NOPASSWD: /etc/init.d/apache2

これでうまくいくと思います。

ただし、sudoのパスワードの削除には注意してください。


2
セキュリティ上の理由から、最初の例では絶対パスを指定する必要があります。悪意のあるユーザーは、$ PATHを変更し、修飾されていないコマンド名でルートアクセスを盗む可能性があります。
-bgvaughan

0

簡単な答えになりました! 何かを台無しにしたり、インストールを混乱させる可能性はありません。

パスワードを数回入力するだけで、再度入力する必要がなくなります!これにより、ローカル管理者アカウントをグループ「root」に追加し、グループから「root」スーパーユーザー権限全体を許可するテンプレートからコメント解除できます。この投稿の後半で、この手順に関するセキュリティ上の懸念/解決策を読むことができます。

%username&はユーザー名のグローバル変数です(目的のユーザー名に置き換えてください)

ステップ1:ターミナルウィンドウを開き、「sudo usermod -a -G root %username%」と入力します

ステップ2:次に、これをコピー/貼り付け...

sudo sed -i 's/# auth       sufficient pam_wheel.so trust/auth       sufficient pam_wheel.so trust/g' /etc/pam.d/su`

ステップ2 OR入力

sudo nano /etc/pam.d/su`

19行目に移動して、前の「#」を削除し# auth sufficient pam_wheel.so trustます(一部の行番号が異なる場合があります)

*最初のコマンドは、%username%をグループ「root」に追加します

2番目/ 3番目のコマンドは、グループ「root」のすべてのメンバーがパスワードなしでスーパーユーザーになることを許可しますが、認証にユーザー「root」su特権のみを許可します。


文末脚注:

邪魔しないでください/etc/sudoers...「su」認証を通過する必要があるチェック/バランスがたくさんあります。スーパーユーザー認証は、他のすべてのログイン認証と同じpam.d手順を使用します。「/etc/security/access.conf」には、tcp / ip(192.168.0.1)通信およびtelnetサービス(tty1&tty2&tty3 ... etc)を介したアクセス制御のレイアウトがあります。これにより、トランスポートプロトコルを介したアプリケーションごとのより正確なフィルタリングが可能になります。安全性が懸念される場合は、部屋を出るときに実際にコンピューターに触れている人に対するリモート/コードの脅威に注意を向ける必要があります!!!

パラノイアのための食べ物(レビューだけでこれを入力しないでください):

sudo sed -i 's/#-:ALL EXCEPT (wheel) shutdown sync:LOCAL/-:ALL EXCEPT (wheel) shutdown sync:LOCAL/g' /etc/security/access.conf

^これは、システムまたはルートのメンバーではないユーザーのコンソールへのアクセスをブロックします。プログラムが悪用されるユーザー名/グループをインストールする場合があります!


2
セキュリティの専門家ではありませんが、直感的には少々逆に聞こえます。特定のアプリケーションの sudoを精製する「複雑さ」を避けるために、単一のユーザーがパスワードなしで特定のアプリを実行できるように、グループ全体のパスワードを無効にしますか?そして、これはすべてパブリックサーバー上ですか?スクリプトは、基本的なサバイバル本能を無効にしましたか?セキュリティは複雑な設計です。覚えておいてください、それはタマネギのようなものです。レイヤーがあり、あなたを泣かせます...侵害されたサーバーでのデータ損失は、方程式の一部にすぎません。お使いのシステムからハッカーのスプリング・搭乗攻撃も同様に深刻ですが、しばしば見落とさ
hmayag

2
直観に反し、常識に反します。1つのCookieのみを必要とするユーザーのためにCookie jar全体を開くことは非常に無責任です。ユーザーをsudoersリストに追加し、sudoersファイルを編集するのではなく、パスワードを入力する必要をなくします。「ハンドガンが子供にとって安全でない場合、キヤノンを与えないでください。」-me-
ジョン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.