আমি কিভাবে root হিসাবে Launchd চালানো?


0

আমি / etc / হোস্টের মাধ্যমে কিছু ওয়েবসাইট ব্লক করার চেষ্টা করছি
আমি সঠিক অনুমতি সঙ্গে LaunchAgent চালানো কিভাবে চিন্তা করতে পারে না।

$ ls -la ~/Library/LaunchAgents/hosts_Blocksites_AM.plist     
-rw-r--r--@ 1 root  staff  1854 Aug 25 11:55 /Users/bryanwheelock/Library/LaunchAgents/hosts_Blocksites_AM.plist    

আমি একটি ব্যবহারকারী নাম কী সেট করেছি:

<key>UserName</key>  
<string>root</string>  

এখানে hosts_Blocksites_AM.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>local.job</string>  
    <key>ProgramArguments</key>  
    <array>  
        <string>cp</string>  
        <string>/etc/hosts_BLOCKED_sites.txt</string>  
        <string>/etc/hosts</string>  
    </array>  
    <key>RunAtLoad</key>  
    <true/>  
    <key>UserName</key>  
    <string>root</string>  
    <key>StartCalendarInterval</key>  
    <array>  
        <dict>  
            <key>Hour</key>  
            <integer>8</integer>  
            <key>Minute</key>  
            <integer>15</integer>  
            <key>Weekday</key>  
            <integer>1</integer>  
        </dict>  
        <dict>  
            <key>Hour</key>  
            <integer>8</integer>  
            <key>Minute</key>  
            <integer>15</integer>  
            <key>Weekday</key>  
            <integer>2</integer>  
        </dict>  
        <dict>  
            <key>Hour</key>  
            <integer>8</integer>  
            <key>Minute</key>  
            <integer>15</integer>  
            <key>Weekday</key>  
            <integer>3</integer>  
        </dict>  
        <dict>  
            <key>Hour</key>  
            <integer>8</integer>  
            <key>Minute</key>  
            <integer>15</integer>  
            <key>Weekday</key>  
            <integer>4</integer>  
        </dict>  
        <dict>  
            <key>Hour</key>  
            <integer>8</integer>  
            <key>Minute</key>  
            <integer>15</integer>  
            <key>Weekday</key>  
            <integer>5</integer>  
        </dict>  
    </array>  
    <key>StandardErrorPath</key>                                                                                                                                                          
    <string>/tmp/mycommand.err</string>                                                                                                                                       
    <key>StandardOutPath</key>                                                                                                                                                                <string>/tmp/mycommand.out</string>  
</dict>  
</plist>  

এখানে ত্রুটি রয়েছে:

$ cat /tmp/mycommand.err   
sudo: no tty present and no askpass program specified  
cp: /etc/hosts: Permission denied  

আমি প্রোগ্রাম আর্গুমেন্টে sudo কমান্ড যোগ করার চেষ্টা করেছি, কিন্তু আমি মনে করি না যে সঠিক ছিল।

সম্পাদিত:

পরিবর্তন করা লেবেল কী:

<key>Label</key>  
<string>local.hosts.blockingAM</string>  

মুছে ফেলা ব্যবহারকারী নাম কী।

প্লেস্ট সরানো এবং পরিবর্তিত নাম:

$ ls -la /Library/LaunchDaemons/
-rw-r--r--@  1 root  wheel  1474 Aug 29 13:19 local.hosts.blockingAM.plist  

আমি এখনো সুডোর সাথে লঞ্চ্কল চালানোর আগে অনুমতি ত্রুটি পাচ্ছিলাম:

sudo launchctl load /Library/LaunchDaemons/local.hosts.blocking.plist 

1
প্লেস্টের নামে লেবেল পরিবর্তন করে শুরু করুন- hosts_Blocksites_AM
fd0

উত্তর:


3

কোনও ব্যবহারকারী লগ ইন করলে লঞ্চ এজেন্টগুলি চালানো হয়। সুতরাং ~ / লাইব্রেরী / LaunchAgents এ একটি প্লেস্ট যোগ করা এবং লোড করা / শুরু করা, লগ ইন থাকা ব্যবহারকারীর পক্ষে একটি টাস্ক চালানো হবে - এবং কেবল এটিই, যেহেতু অন্য কোনো ব্যবহারকারীর কাছে অ্যাক্সেস নেই এই ফোল্ডার। আপনি অন্য ব্যবহারকারীর অধিকারের সাথে লঞ্চ এজেন্ট চালাতে পারবেন না এবং কী ব্যবহারকারী নামটি সেখানে কোন বৈধ বিকল্প নেই।

লগ ইন এজেন্ট / লাইব্রেরী / লঞ্চ অ্যাজেন্টস লগ ইন ব্যবহারকারীর রাজ্যেও চলবে। কিন্তু লগ ইন প্রতিটি ব্যবহারকারী এটি আরম্ভ করা হবে। সুতরাং একই সময়ে দুটি ব্যবহারকারী লগ ইন করে প্রতিটি স্বতন্ত্র এজেন্ট টাস্ক সংশ্লিষ্ট অধিকার / অনুমতি দিয়ে শুরু করবে।

সিস্টেমের LaunchAgents এবং LaunchDemons ফোল্ডারগুলি নিষিদ্ধ এলাকা, তাই আপনি লাইব্রেরিতে / লঞ্চডামেমগুলিতে একটি লঞ্চ ডিমন তৈরি করতে চলেছেন।

যেহেতু লঞ্চ ডিমনগুলি ইতিমধ্যে রুট অনুমতিগুলি দিয়ে চালিত হয় নিম্নলিখিত প্লেস্ট ব্যবহার করে local.hosts.blocking.plist মধ্যে / লাইব্রেরি / LaunchDaemons / (লেবেল / ত্রুটি ফাইল এবং স্ট্যান্ডার্ড আউটপুট ফাইল ইতিমধ্যে নাম অন্তর্ভুক্ত) নামকরণ কনভেনশন:

<?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>local.hosts.blocking</string>  
    <key>ProgramArguments</key>  
    <array>  
        <string>cp</string>  
        <string>/etc/hosts_BLOCKED_sites.txt</string>  
        <string>/etc/hosts</string>  
    </array>  
    <key>StartCalendarInterval</key>  
    <array>  
        <dict>  
        ....
        </dict>  
    </array>  
    <key>StandardErrorPath</key>                                                                                                                                                          
    <string>/tmp/local.hosts.blocking.err</string>
    <key>StandardOutPath</key> 
    <string>/tmp/local.hosts.blocking.out</string>  
</dict>  
</plist>

প্লেস্টের জন্য স্ট্যান্ডার্ড অনুমতি প্রয়োগ করুন: রুট: চাকা / 644 এবং লোড / এটি দিয়ে শুরু করুন:

sudo launchctl load /Library/LaunchDaemons/local.hosts.blocking.plist

উত্তরের জন্য ধন্যবাদ. আমি প্রস্তাব পরিবর্তন করেছি এবং এখনও একটি অনুমতি ত্রুটি পেতে। আমি OP পরিবর্তন পরিবর্তন।
BryanWheelock

আমি আপনার প্লাস্টারটি ঠিকভাবে অনুলিপি করেছি এবং আমি সঠিক একই অনুমতি ত্রুটি পেয়েছি:
BryanWheelock

$ ls /Library/LaunchDaemons/local.hosts.blocking.plist -rw-r - r-- 1 রুট চাকা 1002 আগস্ট 29 16:43 / লাইব্রেরী / লঞ্চডেমন্স / লোকাল.hosts.blocking.plist
BryanWheelock

Launchctl লোড / লাইব্রেরি / লঞ্চডেমন্স / লোকাল। হোস্টিং ব্লকিং প্লাস্ট
BryanWheelock

@ ব্রায়ানহেললক প্রথমে এটি আনলোড করার পরে, ব্যবহার করুন sudo launchctl ...
klanomath

0

প্রশ্নকর্তা LaunchAgents কয়েক বার উল্লেখ করেছেন এবং @ ক্ললোমাথের উত্তর সঠিক: এই ক্ষেত্রে LaunchDemon সম্ভবত উপযুক্ত পদ্ধতি।

তবে Googlers জন্য যে হয় একটি দিতে চেষ্টা LaunchAgent উচ্চতর sudo / রুট বিশেষাধিকার, আমি চেক আউট বা সুপারিশ এই উত্তর উপর LaunchAgents সম্পর্কে এই প্রশ্ন

এটি ব্যবহারকারীর জন্য নির্বাচনযোগ্যভাবে উচ্চতর সুবিধাগুলি পাওয়ার এবং আপনার চলমান কমান্ডের অনুমতি দেওয়ার একটি পদ্ধতি বর্ণনা করে launchctl চালানোর জন্য sudo একটি ইন্টারেক্টিভ পাসওয়ার্ড প্রম্পট ছাড়া।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.