私はNSTextFieldがあるココアスウィフトアプリケーションを作っています。テキストフィールドはパスワードを返します。パスワードはProcess()にロードされ、bashコマンドスクリプトに渡されます。 コマンドは次のとおりです。Echo $ {1} | sudo -S echo works 私はパスワードの引数を渡すので、$ {1}の代わりになります。このコマンドを実行すると、コンソールにusr/bin/sudo:操作が許可されていないと表示されます。 bashスクリプトでsudoを使用できる方法はありますか? ヘルプは本当に感謝します。ありがとう。スウィフトココア - プロセス()はsudoを許可していません
-1
A
答えて
3
これはOS Xの特権をエスカレートする正しい方法ではありません。特に恐ろしいセキュリティだからです。このようなクリアテキストでのパスワードの回り込みは、一般的に悪いことです。
これがなぜ問題なのか説明してください。私はこのbash
スクリプトがあるとします。
#!/bin/bash
sleep 10
echo ${1}
その後、私はProcess
を使用して、私のスクリプトを実行します。
import Foundation
let process = Process()
process.launchPath = "/bin/bash"
process.arguments = ["/path/to/foo.sh", "This is a parameter"]
process.launch()
process.waitUntilExit()
スクリプトを実行し、それは「このパラメータがある」を出力し、すべてがうまくようです。スクリプトが実行されている間しかし、別のターミナルウィンドウで、私は、このコマンドを実行します。
$ ps -ajxww | grep foo.sh
、出力を得る:
username 85281 85276 85281 0 1 S s006 0:00.00 /bin/bash /path/to/foo.sh This is a parameter
あなたが見ることができるように、パラメータがではっきり見えますプロセスリスト。そのスクリプトのパラメータが私の管理者パスワードだったならば、私はそのパスワードをシステム上のすべての関心のあるプロセスにブロードキャストしただけです。
とにかく、このようなことをするのではなく、特権launchd
ヘルパーツールを作成する必要があります。このツールはSMJobBless()
を使用して祝福することができます。 OSは安全な方法でパスワードの入力を求め、安全な場所にヘルパーツールをインストールします。 XPCを使用してツールと通信することで、ルートとして機能させることができます。これを行う方法のアイデアについてはAppleのEvenBetterAuthorizationSampleを参照してください。
関連する問題
- 1. /usr /にsudo mkdir、操作は許可されていません。 El Capitan
- 2. Sudo pipインストールのアップグレード操作が許可されていません
- 3. カスタム「許可していません」ページ
- 4. サーバは長いGETパラメータを許可していません
- 5. Rails:validates_length_of:allow_nilはnilを許可しません。
- 6. CORSメソッドアクセス制御許可のメソッドでPATCHを許可していません
- 7. Webpack-dev-serverはCORSリクエストを許可していません
- 8. Facebook(FB.login)は私の許可を要求していません
- 9. AppサービスプランはVNET統合を許可していません
- 10. TomcatはPUTリクエストを許可していません
- 11. IntelliJはVue.jsコンポーネントテンプレートで改行を許可していません
- 12. MySQLは外部接続を許可していません
- 13. 竜巻は入札依頼を許可していません
- 14. Windowsストアはダウンロードを許可していません。
- 15. SQL Server 2008 Spatialはリンクテーブルを許可していません
- 16. Visual C++はiostreamを許可していません
- 17. KeyUsageはデジタル署名を許可していません
- 18. React-Bootstrapは `import {components}`構文を許可していません
- 19. iPhone/iPad WebAppsではCookieを許可していませんか?
- 20. Oracleは "USER"テーブルの作成を許可していません
- 21. Facebook GraphAPIはLetsEncryptを許可していませんか?
- 22. VS 2017はエラーリストのスクロールを許可していません
- 23. コントローラ/ create/idはデータを許可していません - Laravel
- 24. Vagrantはアダプター1のNatNetworkを許可していません
- 25. Facebook APIはアプリケーションの承認を許可していません
- 26. IPtablesはcentos 7でyumを許可していません
- 27. robots.txtはAMPページを許可していません
- 28. iOS 5.1 UISplitviewcontrollerはRootViewControllerのpresentModalViewControllerを許可していません
- 29. Vaadinは外部スクリプトのインポートを許可していません
- 30. Facebook iFrameアプリケーション - IE7はクッキーを許可していません
本当にありがとうございます。私はココアを初めて知っているので、EvenBetterAuthorizationSampleの使い方を説明する場所を見つけることができません。あなたは私にそれを使用する方法を理解させる何かをリンクしていただけますか?ありがとう。 –