উত্তর:
initctl --version
আপনার আপস্টার্টের বর্তমান সংস্করণটি সন্ধান করতে।
ফ্রিনোডে # আপস্টার্ট চ্যানেলে জিজ্ঞাসা করা, বিষয়টি সরকারীভাবে গ্রহণ করা হ'ল:
ভবিষ্যতের আপস্টার্টের মুক্তির জন্য এর জন্য দেশীয় সমর্থন থাকবে, তবে আপাতত, আপনি এর মতো কিছু ব্যবহার করতে পারেন:
exec su -s /bin/sh -c 'exec "$0" "$@"' username -- /path/to/command [parameters...]
su
অর্থ সূচিত হয়েছিল expect fork
এবং এটি এমনকি expect daemon
চূড়ান্ত পিআইডিও ধরবে না।
exec su -s /bin/sh -c 'HOME=/foo/bar exec "$0" "$@" &>/var/log/foobar.log' username -- /path/to/command [parameters...]
স্টার্ট-স্টপ-ডিমন ব্যবহার সম্পর্কে কীভাবে?
exec start-stop-daemon --start --chuid daemonuser --exec /bin/server_cmd
আপস্টার্ট কুকবুক থেকে :
ডেবিয়ান এবং উবুন্টু সিস্টেমগুলির জন্য প্রস্তাবিত পদ্ধতি হ'ল সহায়ক ইউটিলিটিটি ব্যবহার করা
start-stop-daemon
। […]start-stop-daemon
পিএএম ("প্লাগেবল অথেনটিকেশন মডিউল") শুরু হওয়ার প্রক্রিয়াটির সীমাবদ্ধতা চাপায় না।
দ্রষ্টব্য: start-stop-daemon
আরএইচইএলে সমর্থিত নয়।
এটি করার বিভিন্ন উপায় রয়েছে, সমস্ত কিছু আলাদা শব্দার্থক, বিশেষত গ্রুপ সদস্যতার সাথে সম্পর্কিত:
setuidgid
আপনাকে নির্দিষ্ট করা গ্রুপে রাখবে।
setuidgid
আপনাকে কেবলমাত্র সেই গোষ্ঠীতে ফেলে দেবে, সুতরাং আপনি যে গ্রুপের সদস্য সেগুলিও অন্তর্ভুক্ত ফাইলগুলিতে অ্যাক্সেস করতে পারবেন না।setuidgid
Daemontools-আর একবার থেকে এবং setuidgid
জখলাবার টুলসেট থেকে উভয় আছে -s
(ওরফে --supplementary
) বিকল্প যা সব গোষ্ঠীর আপনি করা হবে, এবং এছাড়াও আপনি করা সম্পূরক গ্রুপ ব্যবহারকারী যে আপনি উল্লেখ জন্য।newgrp
একবার আপনি স্বল্প সুবিধাপ্রাপ্ত ব্যবহারকারী হয়ে গেলে ব্যবহার করে আপনার গ্রুপসেটে একটি গোষ্ঠী যুক্ত হবে, তবে একটি নতুন সাবশেল তৈরি করবে, যাতে স্ক্রিপ্টগুলির অভ্যন্তরে ব্যবহার করা জটিল হবে।
start-stop-daemon
আপনার গ্রুপের সদস্যপদ সংরক্ষণ করে এবং কেবল সেটুড / সেটগিডের চেয়ে আরও অনেক কিছু করে।
chpst -u username:group1:group2:group3... commandname
আপনাকে কোন গ্রুপের সদস্যপদ গ্রহণ করতে হবে তা নির্দিষ্ট করে দেবে, তবে ( উবুন্টুতে ) এটি কেবল runit
প্যাকেজটি নিয়ে আসে , যা একটি বিকল্প upstart
।
su -c commandname username
ব্যবহারকারীর নাম অনুসারে সমস্ত গ্রুপ সদস্যতা বাছাই করে sudo -u username commandname
, তাই তারা সম্ভবত অন্তত বিস্মিত হওয়ার পথ।
setuidgid
প্যাকেজ থেকে ব্যবহার করুন daemontools
।
এখানে ডকুমেন্টেশন: http://cr.yp.to/daemontools/setuidgid.html
অ্যামাজন ইসি 2-তে একটি উবুন্টু 10.10 উদাহরণে, start-stop-daemon
কমান্ডটি দিয়ে আমার ভাগ্য ভাল হয়েছিল ।
আমি অন্যান্য কিছু উঁচু স্তম্ভের সাথেও লড়াই করেছি । আমি virtualenv
আমার নির্বাহিত প্রোগ্রামটিতে একটি নির্দিষ্ট এবং কিছু পরামিতি সহ পাইথন অ্যাপ্লিকেশনটি কল করছি ।
নিম্নলিখিতটি আমার পক্ষে কাজ করেছিল।
script
export PYTHONPATH=.:/home/ubuntu/.local/lib/python2.7/site-packages/:/home/ubuntu/python/lib/python2.7/site-packages/
exec start-stop-daemon --start --chuid ubuntu --exec /home/ubuntu/python_envs/MyProj/bin/python /home/ubuntu/www/MyProj/MyProj.py -- --config-file-dir=/home/ubuntu/www/MyProj/config/ >> /home/ubuntu/startup.log 2>&1 &
end script
PYTHONPATH
মধ্যে কিছু প্যাকেজ উৎস থেকে ইনস্টল পেতে হয় পাইথন এই ভুঁইফোড় কাজ চালায় মডিউল পথ। আমাকে chdir
সর্বাত্মক পথে সমস্ত কিছু করতে হয়েছিল কারণ স্তবকটি কাজ করছে বলে মনে হয় না।
আমি CentOS 6 ব্যবহার করছিলাম, এবং আমার জন্য কাজ করার জন্য প্রস্তাবিত হ্যাক (আপস্টার্ট 0.6.5) পেতে পারি না, বা 'সু' কৌশলটিও জড়িত কাঁটা সংখ্যা (4 আমি মনে করি না) 'প্রত্যাশিত কাঁটাচাঁটি দ্বারা ট্র্যাক করা হয়নি, কারণ 'বা' প্রত্যাশা ডেমন '।
আমি অবশেষে সবেমাত্র করেছি
chown user:group executable
chmod +s executable
(অর্থাত্ সেটুইড বিট সেট করুন এবং মালিকানা পরিবর্তন করুন)।
এটি সবচেয়ে নিরাপদ পদ্ধতি নাও হতে পারে তবে কোনও অভ্যন্তরীণ গবেষণা ও উন্নয়ন প্রকল্পের জন্য এটি আমাদের ক্ষেত্রে গুরুত্বপূর্ণ নয়।
chmod 1700
বা কমপক্ষে কিছু করতে chmod u+sx,go-x
থাকেন তবে +s
এটি "যথেষ্ট সুরক্ষিত" হিসাবে যোগ্যতা অর্জন করবে। :)
আপনি কী অর্জন করার চেষ্টা করছেন তার উপর নির্ভর করে তৃতীয় সম্ভাবনা রয়েছে। আপনি সক্ষম হতে পারে প্রশ্নযুক্ত ফাইল / ডিভাইসে অ্যাক্সেস নিয়ন্ত্রণগুলি আলগা । এটি একটি অনিবদ্ধ ব্যবহারকারীকে আইটেমগুলি মাউন্ট করার বা অ্যাক্সেস করার মঞ্জুরি দেয় যা তাদের সাধারণত অনুমতি দেয় না। কেবলমাত্র নিশ্চিত হন যে আপনি এই প্রক্রিয়াতে কিংডমের চাবিগুলি দিচ্ছেন না।
আপনি এটিও করতে পারেন সুডো পাসওয়ার্ড ক্যাশে টাইমআউটও পরিবর্তন । তবে আপনার মেশিন শারীরিকভাবে সুরক্ষিত না হওয়া পর্যন্ত আমি এটির প্রস্তাব দিই না (যেমন, আপনি বিশ্বাস করেন যে কোনও পথিকই সুডো অ্যাক্সেস অর্জনের চেষ্টা করবেন না) এর সম্ভাবনা কম।
সুবিধাজনক ক্রিয়াকলাপ করার খুব কম উপায় রয়েছে এবং তারা অযথা সম্পাদন করার একটি ভাল কারণ রয়েছে প্রয়োজনীয় লগিং । আলগা বিধিনিষেধগুলি আপনার সিস্টেমের জন্য একটি সুরক্ষিত বিপত্তি হতে পারে এবং লগিংয়ের অভাবে বোঝা যায় যে আপনি যখন আপস করেছেন তখন কী হয়েছিল তা জানার কোনও উপায় নেই।
যদি আপনার লগ ফাইলগুলির আকারটি উদ্বেগজনক হয় তবে সম্ভবত কিছু ভুল। সুডো সাধারণ পরিস্থিতিতে ব্যবহারের জন্য কেবল একটি লাইন উত্পন্ন করে।
সেন্টোস 0-তে, ০..6.৫ আপস্টার্টে, নিম্নলিখিতটি আমার পক্ষে কাজ করেছে।
script
exec su user_name << EOF
exec /path/to/command [parameters...]
EOF
end script
বা:
script
exec su user_name << EOF
..... what you want to do ....
EOF
end script
যখন ব্যবহার
exec su -s /bin/sh -c 'exec "$0" "$@"' username -- /path/to/command [parameters...]
কাজ প্রক্রিয়া দ্বারা থামানো যাবে না initclt stop
। আমি মনে করি কারণটি হ'ল:
1. the job forked and the main process is not tracked.
2. the main process changed its process group,because of `su -c`