Answers:
Upstart v1.4 සමඟ, වින්යාස ගොනුව තුළ setuid සහ setgid දේශීයව සහය දක්වයි.
initctl --version
ඔබගේ වර්තමාන උඩුමහලේ අනුවාදය සොයා ගැනීමට.
ෆ්රීනෝඩ් හි #upstart නාලිකාවෙන් විමසීමේදී, නිල කාරණය වන්නේ:
අනාගතයේ Upstart නිකුතුව සඳහා ඒ සඳහා ස්වදේශීය සහාය ලැබෙනු ඇත, නමුත් දැනට ඔබට මෙවැනි දෙයක් භාවිතා කළ හැකිය:
exec su -s /bin/sh -c 'exec "$0" "$@"' username -- /path/to/command [parameters...]
su
එයින් අදහස් කරන්නේ අවසාන PID 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
Upstart කුක් පොතෙන් :
ඩේබියන් සහ උබුන්ටු පද්ධති සඳහා නිර්දේශිත ක්රමය වන්නේ සහායක උපයෝගීතාව භාවිතා කිරීමයි
start-stop-daemon
. […]start-stop-daemon
එය ආරම්භ වන ක්රියාවලියට PAM ("ප්ලග් කළ හැකි සත්යාපන මොඩියුලය") සීමාවන් පනවන්නේ නැත.
සටහන: start-stop-daemon
RHEL හි සහය නොදක්වයි.
එය කිරීමට ක්රම කිහිපයක් තිබේ, සියල්ලම තරමක් වෙනස් අර්ථකථන සහිතව, විශේෂයෙන් කණ්ඩායම් සාමාජිකත්වයට අදාළ වේ:
setuidgid
ඔබ සඳහන් කරන කණ්ඩායමට ඔබව ඇතුළත් කරනු ඇත.
setuidgid
ඔබව එම කණ්ඩායමට පමණක් ඇතුළත් කරනු ඇත, එබැවින් ඔබ සාමාජිකයෙකු වන වෙනත් කණ්ඩායම් වලට අයත් ලිපිගොනු වෙත ප්රවේශ වීමට ඔබට නොහැකි වනු ඇත.setuidgid
daemontools-encore සිට සහ setuidgid
එම nosh toolset සිට දෙකම සතුව -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
සෙන්ටෝස් 6 හි 0.6.5 දක්වා ඉහළට, පහත දැක්වෙන්නේ මට වැඩ කළ දෙයයි.
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`
ඔබ ඉටු කිරීමට උත්සාහ කරන දේ අනුව තුන්වන හැකියාවක් ඇත. සැක සහිත ලිපිගොනු / උපාංගවල ප්රවේශ පාලනය ලිහිල් කිරීමට ඔබට හැකි විය හැකිය . නුසුදුසු පරිශීලකයෙකුට සාමාන්යයෙන් ඉඩ නොදෙන අයිතම සවි කිරීමට හෝ ප්රවේශ වීමට මෙය ඉඩ දෙයි. ක්රියාවලියේදී ඔබ රාජධානියට යතුරු ලබා නොදෙන බවට වග බලා ගන්න.
ඔබට සුඩෝ මුරපද හැඹිලියේ වේලාව වෙනස් කළ හැකිය . නමුත් ඔබේ යන්ත්රය භෞතිකව ආරක්ෂිත නම් මිස මම එය නිර්දේශ නොකරමි (එනම්, ඔබ පසුකරන්නෙකු සුඩෝ ප්රවේශය ලබා ගැනීමට උත්සාහ කරනු ඇතැයි සිතිය නොහැක).
වරප්රසාදිත ක්රියාවන් ඔවුන් ඉටු කරන බව ක්රම ඉතා සුළු වන බව හොඳ හේතුවක් තියෙනවා අනවශ්ය අවශ්ය දැව සදහා. ලිහිල් සීමා කිරීම් ඔබේ පද්ධතියට ආරක්ෂිත උපද්රවයක් වනු ඇති අතර, ලොග් වීමක් නොමැති වීමෙන් අදහස් වන්නේ ඔබ සම්මුතියකට ලක් වූ විට සිදුවූයේ කුමක්දැයි දැන ගැනීමට ක්රමයක් නොමැති බවයි.
නම් ප්රමාණය ඔබේ ලඝු-සටහන ගොනු, කනස්සල්ල යමක් බොහෝ විට වැරදි දෙයක්. සුඩෝ සාමාන්ය තත්වයන් යටතේ භාවිතයට එක් පේළියක් පමණක් ජනනය කරයි.