web-dev-qa-db-ja.com

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

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

以下を許可するには:

$ 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インスタンスでこのセットアップを見ました

何か案が?

40
tutuca

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

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

YOURNAME ALL = NOPASSWD: /usr/bin/Apache2ctl

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

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

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

51
Mark Paskal

Sudoはvery強力であり、クールなことを行うように構成できるため、この質問に対する本当の答えは複雑になる可能性があります。これは documentation で詳細に説明されています。

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

%steroid_users ALL=(ALL) NOPASSWD: ALL

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

ログイン中に端末にアクセスできる人は誰でも、またはキーベース認証のssh設定がある場合、または(さらに悪い)パスワードを有効にしていることに注意してください無料セッションログイン-entireシステムへの完全かつ自由なアクセス。システムに複数のユーザーがいる場合、またはこれがファイルサーバーである場合、すべてのユーザーファイルは、rootができるように危険にさらされる可能性がありますanything!

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

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

25
Chris

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

%admin ALL=(ALL) NOPASSWD: ALL

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

5
korjjj

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

  1. Sudoersの編集:Sudo visudo(Sudoを使用する必要があります。これは管理ファイルです。)
  2. 管理行の後に(最後に)nopasswdフラグを付けてユーザーを追加します。例えば:
    cyrex ALL = NOPASSWD: ALLまたはcyrex ALL = (ALL) NOPASSWD: ALL
3
Luis Alvarado
Sudo visudo
%<GROUP> ALL = NOPASSWD: Apache2ctl

または

Sudo visudo
%<GROUP> ALL = NOPASSWD: /etc/init.d/Apache2

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

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

2
Alex

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

パスワードを数回入力するだけで、再度入力する必要がなくなります!これにより、ローカル管理者アカウントをグループ「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 type

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

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

0