web-dev-qa-db-ja.com

「Sudo」なしでrootとしてプログラムを実行する方法は?

OS Xに、ルートとしてのみ実行できる特定のバイナリプログラムがあります。

呼び出すたびにSudoを前に付けてパスワードを入力するのにうんざりしていて、定期的に呼び出すと、パスワードを要求せずに自動的にrootとして実行したいと思います。

プログラムの所有者はrootで、そのグループはwheelです。

私は試した chmod ug+s実行時にユーザーIDとグループIDをroot/wheelに設定しますが、Sudoなしでプログラムを実行すると、Sudoで、またはrootとしてしか実行できないというメッセージがまだ表示されます。

10
UrEl

実行しようとしているプログラムが実際にはバイナリであり、シェルスクリプトではないことを確認してください。ほとんどのシェルは、suidスクリプトを無視します。なぜなら、安全に実行することが本当に難しいからです。確認する簡単な方法は、プログラムでfileコマンドを使用することです。

2
KeithB

あなたの問題の半分の解決策:

sudoersファイルに、以下を追加します。

username ALL= NOPASSWD: /path/to/command

次に、コマンドラインから次のように入力します。

Sudo command

そして、パスワードを要求せずにコマンドを実行します。このコマンドはrootとして実行されます。

ユーザー名を実際のユーザー名に置き換える必要があることに注意してください。

17
Walter

何らかの理由で本当にそれをデーモンとして呼び出すことができない場合 (この質問はそのインスタンスに関連します) 、このメソッドは一緒にハッキングできます 、しかしそれはかなり汚れており、まったく安全ではありません。

コンセプトは、それをAppleScriptで起動することです。まず、コマンドラインからプロセスを呼び出す方法を知っておく必要があります(すでにSudoを使用している場合は、準備が整っている必要があります)。このプロセスはdo Shell scriptコマンドを使用して起動し、Sudoを使用する代わりに、資格情報をAppleScriptに書き込みます。

do Shell script "/path/to/your/executable/here" user name "me" password "mypassword" with administrator privileges

これが安全でないという部分を繰り返します:これは、あなたの管理者クレデンスがプレーンテキストで保存されることを意味します。可能であれば、いくつかの方法を見つける必要がありますLaunchDaemonとしてこれを背景します。

4
NReilingh

OSXでは、使用しているプログラムが/ usr/local/bin/YourProgramNameにあると仮定します...この問題を解決するには、次のコマンドを実行します。ファイル自体ではなく、ファイルにルートされているファイル階層のユーザーID /グループIDを変更するには。

Sudo chown -R $(whoami) /usr/local/bin/

...その後、ターミナルでprogramName、$ YourProgramNameを呼び出します

2
abdimuna

できるよ

Sudo tcsh

これにより、ルートシェルに移動します。

0
DTest

プログラム自体がID = 0で実行されているかどうかをチェックするように見えます

0
jet