একটি LaunchAgent তৈরি করা যা সুডো / রুট বিশেষাধিকারগুলির সাথে চালিত হয় কেবল তা দ্বারা করা যেতে পারে sudo
LaunchAgent execute যে কমান্ড হতে।
প্লেস্ট ফাইল তৈরি করুন
এই সংক্ষিপ্ত উদাহরণ স্থাপন করার চেষ্টা করুন ~/Library/LaunchAgents/com.sudoexample.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.sudoexample</string>
<key>ProgramArguments</key>
<array>
<string>sudo</string>
<string>touch</string>
<string>/tmp/sudoexample</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/sudoexample.log</string>
<key>StandardErrorPath</key>
<string>/tmp/sudoexample.log</string>
</dict>
</plist>
দ্রষ্টব্য: এজেন্ট সাধারণত ব্যবহারকারীর ফাইল মালিকানা থাকা উচিত, কিন্তু root
মালিকানা ঠিক যেমন জরিমানা কাজ বলে মনে হয়।
উপরের উদাহরণ রান sudo touch /tmp/sudoexample
এবং আউটপুট লগ /tmp/sudoexample.log
।
আপনি চালানো হলে launchctl load ~/Library/LaunchAgents/com.sudoexample.plist
এই সময়ে, কারণ এটি ব্যর্থ হবে sudo
একটি পাসওয়ার্ড এবং জন্য প্রম্পট চেষ্টা করবে launchctl
কোন সংযুক্ত আছে না tty
পাসওয়ার্ড প্রম্পট পরিবেশন করা:
$ ls /tmp/
sudoexample.log
$ cat /tmp/sudoexample.log
sudo: no tty present and no askpass program specified
বর্ধিত বিশেষাধিকার অনুমতি দিন
আমরা আপনার ব্যবহারকারী চালানোর অনুমতি দিতে হবে sudo touch
একটি পাসওয়ার্ড ছাড়া।
এটি এমনভাবে করা যেতে পারে:
echo "$(whoami) ALL=(ALL) NOPASSWD: $(which touch)" | sudo tee /etc/sudoers.d/touch
যখন আপনি সম্পন্ন করবেন, ফাইলটি এমন কিছু দেখতে হবে:
$ sudo cat /etc/sudoers.d/touch
coryklein ALL=(ALL) NOPASSWD: /usr/bin/touch
এটা পরীক্ষা করে দেখুন
$ launchctl load ~/Library/LaunchAgents/com.sudoexample.plist
$ ls -l /tmp
total 0
-rw-r--r-- 1 root wheel 0 Jun 29 14:01 sudoexample
-rw-r--r-- 1 coryklein wheel 0 Jun 29 14:01 sudoexample.log
এখন আপনি LaunchAgent রুট মালিকানা তৈরি করে সফলভাবে দৌড়ে দেখতে পারেন /tmp/sudoexample
।
ধন্যবাদ klanomath এই এক জন্য ভিত্তি প্রদানের উত্তর।