আপস্টার্ট: একজন সাধারণ ব্যবহারকারীকে আমার কাস্টম পরিষেবাটি বন্ধ করতে এবং শুরু করতে দেওয়া


16

আমি আমার ওয়েবসারভার অ্যাপ্লিকেশনটি বুট থেকে আপস্টার্ট ব্যবহার করে শুরু করেছি। এটি আপস্টার্ট স্ক্রিপ্ট:

# web app node upstart file at /etc/init/webapp.conf

description "web application"

start on started mongodb
stop on runlevel [06]

respawn
respawn limit 10 100

env NODE_ENV=production

pre-start script
    ulimit -n 2048
end script

exec start-stop-daemon --start -c mainuser --exec /usr/bin/make -- -C /home/mainuser/app start-prod

এটি উবুন্টু সার্ভার 10.04 এলটিএসে নির্বিঘ্নে কাজ করে এবং আমি এটি সম্পর্কে খুব খুশি।

তবে, আমার কাছে একটি mainuserডিপয়মেন্ট শেল স্ক্রিপ্ট রয়েছে যা এসএসএইচ হিসাবে লগ ইন করে (এটি কোনও suoer নয়) এবং তারপরে ওয়ার্কিং ডিরেক্টরিটি সর্বশেষতম ডিপ্লোয়মেন্ট সংস্করণে আপডেট করবে।

এখানে সমস্যাটি হ'ল পরিষেবাটি পুনরায় চালু করা দরকার যাতে অ্যাপ্লিকেশনগুলি নতুন উত্স ফাইলগুলি লোড করে। তবে, mainuserএকটি ...

mainuser@Saturn101:~$ stop webapp
-bash: stop: command not found

... এটি বন্ধ করার চেষ্টা করার সময়। আমাকে চালাতে হবে sudo stop webapp, তবে এই ব্যবহারকারীটি sudoer না হওয়ায় এটি এটি করতে পারে না। সুরক্ষার কারণে আমি তাকে আর সুডোয়ার হতে চাই না, এবং আমি সুডো পাসওয়ার্ড sertোকাতে চাই না।

তাহলে আমি কীভাবে mainuserচালানোর অনুমতি দেব stop webappএবং start webapp?


1
সুডোয়ারগুলিতে ব্যবহারকারীকে যুক্ত করে আপনি কোন সুরক্ষা সমস্যা নিয়ে উদ্বিগ্ন? আপনি একটি বিধি লিখতে পারেন যা ব্যবহারকারীকে কেবল একটি নির্দিষ্ট কমান্ড দেয় এবং আরও কিছু দেয় না, এছাড়াও আপনি পাসওয়ার্ড প্রম্পটকে দূরে রাখার জন্য একটি নপাসডব্লিউড বিকল্প অন্তর্ভুক্ত করতে পারেন। আপনার প্রাপ্ত সুনির্দিষ্ট ত্রুটি হিসাবে, এটি কারণ / স্টপ / এসবিনে থাকে, যা সাধারণত সাধারণ ব্যবহারকারীর পথের অংশ হয় না isn't সুতরাং আপনি "/ এসবিন / স্টপ" করতে পারেন, বা পথে এসবিন যুক্ত করতে পারেন। এটি ততক্ষণ কাজ করতে পারে যতক্ষণ না স্টার্ট / স্টপ স্ক্রিপ্টে অন্য কোনও আইটেম নেই যার জন্য রুট প্রয়োজন requires
ডেরেক প্রেসনল

@ ডেরেকপ্রেসনাল, ধন্যবাদ, তবে আমি যখন দৌড়ে /sbin/stop webappযাই তখন আমি পাই stop: Unable to connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory। আমি কীভাবে mainuserকেবল এই আদেশটি কার্যকর করতে দেব ?
টম

ত্রুটিটি এই ব্যবহারকারীর প্রশাসকের অধিকার না থাকার ফলস্বরূপ।
টম

উত্তর:


31

sudo খুব কনফিগারযোগ্য, আপনি এই ব্যবহারকারীর একটি পাসওয়ার্ড জিজ্ঞাসা না করে সীমিত কমান্ডের সেট চালানোর অনুমতি দিতে পারেন। নিম্নলিখিত লাইনে /etc/sudoersআপনার যা করা উচিত তা করা উচিত:

mainuser ALL = (root) NOPASSWD: /sbin/start webapp, /sbin/stop webapp

1
দুর্দান্ত, অনেক অনেক ধন্যবাদ আপনি কি সত্যিই এগুলি শিখলেন man sudoers? আমি এটি বিশ্লেষণ করা বেশ কঠিন বলে মনে হয়েছিল।
টম

1
না, আমি এটি আগেও করেছি। এটি বোঝার পক্ষে সবচেয়ে সহজ
ম্যানপেজ নয়

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