OS Xに、ルートとしてのみ実行できる特定のバイナリプログラムがあります。
呼び出すたびにSudo
を前に付けてパスワードを入力するのにうんざりしていて、定期的に呼び出すと、パスワードを要求せずに自動的にrootとして実行したいと思います。
プログラムの所有者はrootで、そのグループはwheelです。
私は試した chmod ug+s
実行時にユーザーIDとグループIDをroot/wheelに設定しますが、Sudoなしでプログラムを実行すると、Sudoで、またはrootとしてしか実行できないというメッセージがまだ表示されます。
実行しようとしているプログラムが実際にはバイナリであり、シェルスクリプトではないことを確認してください。ほとんどのシェルは、suidスクリプトを無視します。なぜなら、安全に実行することが本当に難しいからです。確認する簡単な方法は、プログラムでfile
コマンドを使用することです。
あなたの問題の半分の解決策:
sudoersファイルに、以下を追加します。
username ALL= NOPASSWD: /path/to/command
次に、コマンドラインから次のように入力します。
Sudo command
そして、パスワードを要求せずにコマンドを実行します。このコマンドはrootとして実行されます。
ユーザー名を実際のユーザー名に置き換える必要があることに注意してください。
何らかの理由で本当にそれをデーモンとして呼び出すことができない場合 (この質問はそのインスタンスに関連します) 、このメソッドは一緒にハッキングできます 、しかしそれはかなり汚れており、まったく安全ではありません。
コンセプトは、それをAppleScriptで起動することです。まず、コマンドラインからプロセスを呼び出す方法を知っておく必要があります(すでにSudoを使用している場合は、準備が整っている必要があります)。このプロセスはdo Shell script
コマンドを使用して起動し、Sudoを使用する代わりに、資格情報をAppleScriptに書き込みます。
do Shell script "/path/to/your/executable/here" user name "me" password "mypassword" with administrator privileges
これが安全でないという部分を繰り返します:これは、あなたの管理者クレデンスがプレーンテキストで保存されることを意味します。可能であれば、いくつかの方法を見つける必要がありますLaunchDaemonとしてこれを背景します。
OSXでは、使用しているプログラムが/ usr/local/bin/YourProgramNameにあると仮定します...この問題を解決するには、次のコマンドを実行します。ファイル自体ではなく、ファイルにルートされているファイル階層のユーザーID /グループIDを変更するには。
Sudo chown -R $(whoami) /usr/local/bin/
...その後、ターミナルでprogramName、$ YourProgramNameを呼び出します
できるよ
Sudo tcsh
これにより、ルートシェルに移動します。
プログラム自体がID = 0で実行されているかどうかをチェックするように見えます