নিরাপদে সু বনাম সুডোর সাথে স্বল্প-সুবিধাযুক্ত শিশু প্রক্রিয়াটি কার্যকরভাবে তৈরি করা


0

আমি নোড.জেএস একটি অনিবদ্ধ ব্যবহারকারী হিসাবে চালানোর চেষ্টা করছি (এক্ষেত্রে dmitry) কেউ আশা করছেন নিশ্চিত করতে পারেন বা, প্রয়োজন হিসাবে, দয়া করে নীচে আমি কী দেখছি তা বিস্তারিতভাবে বর্ণনা করুন:

উবুন্টু 12.04 এবং আপস্টার্ট ব্যবহার করে, আমি একটি কাজের স্ক্রিপ্ট লিখেছিলাম যা নিম্নলিখিতগুলিকে কল করে:

exec sudo -u dmitry /usr/bin/node /home/dmitry/node/linkskeeper/app.js >> /var/log/linkskeeper.sys.log 2>&1

এই বিবৃতিটি একটি ফাইলে বাস করে /etc/init/linkskeeper.confএবং আমি প্রার্থনা করি

$ sudo service linkskeeper start

আমি যখন এই প্রসারণগুলির প্রক্রিয়াগুলি পরীক্ষা করি তখন আমি দেখতে পাই:

$ ps aux | grep node
root     28349  0.0  0.2  40908  1672 ?        Ss   16:51   0:00 sudo -u dmitry /usr/bin/node /home/dmitry/node/linkskeeper/app.js
dmitry   28350  2.1  2.1 641784 13268 ?        Sl   16:51   0:00 /usr/bin/node /home/dmitry/node/linkskeeper/app.js

এটি প্রদর্শিত হয় যে প্রাথমিক execকলটি পিডকে 28349রুট হিসাবে স্প্যান করে , যা অনতিবিলম্বে 28350অ্যাকাউন্টের সাথে পাল্টে দেয় । এটি যদি সঠিক বিবরণ হয় তবে তা আমার কাছে বোধগম্য। মজার বিষয় হল, নীচে রেফারেন্স [1] বলছে এটি ইসি 2 তে কাজ করা উচিত নয় তবে এটি ঠিক কাজ করে বলে মনে হচ্ছে।

তারপরে আমি execকমান্ডটি এতে সামঞ্জস্য করি :

exec su - dmitry -c '/usr/bin/node /home/dmitry/node/linkskeeper/app.js 2>&1 >> /home/dmitry/app.log'

আমি নিম্নলিখিত পেতে:

$ ps aux | grep node
dmitry   28371  0.0  0.2  37952  1312 ?        Ss   16:57   0:00 su - dmitry -c /usr/bin/node /home/dmitry/node/linkskeeper/app.js 2>&1 >> /home/dmitry/app.log
dmitry   28372  0.0  0.2  19516  1712 ?        S    16:57   0:00 -su -c /usr/bin/node /home/dmitry/node/linkskeeper/app.js 2>&1 >> /home/dmitry/app.log
dmitry   28375  3.2  2.6 639748 15916 ?        Sl   16:57   0:00 /usr/bin/node /home/dmitry/node/linkskeeper/app.js

আমি বুঝতে পারি না এখানে পিডস নিয়ে কী চলছে 28371, 28372এবং 28375। এগুলি সকলেই মালিকানাধীন dmitry, এবং তালিকাভুক্ত কমান্ডটি আমি বুঝতে পারি না 28372, যা কোনও ড্যাশ দিয়ে শুরু হয়।

আমার নোট করা উচিত যে নোড.জেএস অ্যাপ্লিকেশন দুটি অনুরোধের সাথে ঠিক কাজ করেছে।

তথ্যসূত্র: [1] https://stackoverflow.com/questions/8312171/can-i-run-node-js-with-low-privileges

উত্তর:


1

-সু লাইন একটি লগইন শেল উপস্থাপন করে। একক কমান্ড চালানোর জন্য আপনার লগইন শেলটি লাগবে না। যে কোনও উপায়ে বর্তমান শেলটি প্রতিস্থাপন করতে এক্সেক ব্যবহার করা হয়। হাইফেন বা -l বিকল্প ছাড়াই su ব্যবহার করুন এবং -সু লাইনটি চলে যেতে হবে।

উদাহরণ:

# su jaroslav -c 'cowsay $USER: moo'

সমস্ত প্রক্রিয়া মালিকানাধীন dmitryকারণ এটি su এর উদ্দেশ্য। এটি ব্যবহারকারীর পরিবর্তন করে। সুডো আলাদা কারণ এটি সর্বদা মূল হিসাবে চালিত হয় (আমি ঠিক জানি না এটি কীভাবে পরিবর্তিত হয় বিভিন্ন ব্যক্তিত্বকে ধরে নিয়েছে, এবং কীভাবে এটি su এর চেয়ে আলাদা)।


আপনাকে @ Thank ধন্যবাদ! ড্যাশ ( -) ফেলে দেওয়া এবং suকমান্ডটিতে একটি নতুন লগইন শেল না চাওয়ার ফলে 28372উপরের প্রক্রিয়াতে প্রদর্শিত কমান্ডটি পরিবর্তিত হয় bash -c /usr/bin/node /home/dmitry/node/linkskeeper/app.js 2>&1 >> /home/dmitry/app.log, যা -su -cসিনটেক্সের চেয়ে বেশি বোঝায় যা আমি একেবারেই বুঝতে পারি না।
দিমিত্রি মিনকভস্কি

যখন আপনি "আপনার একটি সিঙ্গল শেল চালানোর জন্য লগইন শেল লাগানোর দরকার নেই", আপনি কি "একক প্রক্রিয়া বা কমান্ড চালনা" বলতে চান?
দিমিত্রি মিনকভস্কি

NPS। সিনট্যাক্সটি সম্পর্কে কোনও অদ্ভুত কিছু নেই, এটি আমার মতামতের মতোই বলেছিল, একটি কমান্ড চালানোর জন্য আপনার অতিরিক্ত শেলের দরকার নেই।
17

অবশেষে, আপনি কি জানেন যে rootকোনও dmitryপ্রক্রিয়া কাঁটাচামচ করা ( sudoউদাহরণস্বরূপ) suবৈকল্পিকের চেয়ে কিছুটা কম বা বেশি সুরক্ষিত কিনা ? আবার ধন্যবাদ.
দিমিত্রি মিনকভস্কি

আমি সুরক্ষার বিষয়ে সত্যই কোনও কর্তৃত্ব নই। সুডোর একটি সম্ভাব্য সমস্যা হ'ল এটি আক্রমণকারীটিকে ব্যবহারকারীর পাসওয়ার্ড ব্যবহার করে রুট অ্যাক্সেস পেতে দেয় এবং মূল পাসওয়ার্ড নয় যা su দিয়ে রুট হওয়ার প্রয়োজন হয়। তা ছাড়া আমি ধরে নিই যে এই দুটি সমান সুরক্ষিত।
20
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.