私は、Cocoaアプリケーションでアンインストールスクリプトを実行していますが、launchctlコマンドが実行されないことに気付きました。AuthorizeExecuteWithPrivilegesでshスクリプトを実行
他のすべてのスクリプトコマンドが正しく実行され(それは端末内に細かいアンロード)を受けるので、これは(「デーモンの名前を」アンロードにlaunchctl sudoを含んでいる)スクリプトを呼び出すコード
//pFileName is the name of the File
NSString* pPath = [pCurrentBundle pathForResource:pFileName ofType:@"sh"];
char* const ppArgs[] = {const_cast<char*>([pPath fileSystemRepresentation]), NULL};
OSStatus status = AuthorizationExecuteWithPrivileges(m_AuthorizationRef, "/bin/sh", kAuthorizationFlagDefaults, ppArgs, NULL);
の一部です。私は、TN2083の状態と同じ特権をroot(両方ともEUIDとRUIDが0)として持っていないと推測しています。
あなたの前提はすべて正しいです。私は 'rm file'をlaunchctlの前と後に持っていました。問題に気がついたときには正しく実行されなかったコマンドはlaunchctlだけでした。 また、TN2083について言及すると、launchctlが実行されるためには「EUIDとRUIDが存在しています」0を指していました。 スクリプトにsetuidビットを設定していません。 他のプロジェクトでアンインストールスクリプトが正常に動作しています。しかし、私はこれをココアアプリに移植したとき、これがlaunchctlに問題が見られるようになったのです。 –
あなたは 'sudo'を削除しようとしましたか?あなたはすでにこの時点でルートしています。 –
ええ、私は両方を試してもまだ運がありません。 –