sudo -u ব্যবহারকারীর নাম -s "cmd আরগ" রিটার্ন কমান্ড পাওয়া যায় নি


10

আমি আদেশটি কার্যকর করতাম:

sudo -u elasticsearch -s "ulimit -Hn"

এবং আমি উবুন্টু ১১.১০ এ চেষ্টা না করা পর্যন্ত এটি ব্যবহারকারীর ইলাস্টিকসার্কের দ্বারা দেখা হিসাবে ইউলিমিট -Hn এর মান ফিরিয়েছিল। সেখানে এটি ফিরে আসে:

/bin/bash: ulimit -Hn: command not found

আমি কয়েকটি আলাদা কমান্ড চেষ্টা করেছি এবং যখন আমি একটি যুক্তি ব্যবহার করি তখন সর্বদা "কমান্ড পাওয়া যায় না" পেতে পারি:

$ sudo -u elasticsearch -s "ls all.sh"
/bin/bash: ls all.sh: command not found

আমি কীভাবে কোনও আদেশকে কার্যকর করতে পারি যার মাধ্যমে তর্কগুলি প্রয়োজন sudo?


কেন -s? কমান্ডগুলি কার্যকর করতে কেবল সাধারণ শেলটি রাখুন এবং এটি ব্যবহার করুন। যেমন sudo -u elasticsearch ls all.sh। যদি elasticsearchঅব্যর্থ ডিফল্ট শেল থাকে তবে আসল কমান্ডের -s bash আগে ব্যবহার করুন ।
glglgl

উত্তর:


16

আপনাকে ডাবল-কোটগুলি সরিয়ে ফেলতে হবে। এটি "ulimit -Hn" নামে একটি কমান্ড একটি একক কমান্ড, স্পেসস এবং সমস্ত হিসাবে চালানোর চেষ্টা করছে। কমান্ড লাইনে -sসর্বশেষ sudoবিকল্প হওয়া দরকার sudoএবং নিম্নলিখিত সমস্ত যুক্তি সম্পাদন করতে পাস করা $SHELL -cহয়েছে।

sudo -u elasticsearch -s ulimit -Hn

আমি অনুমান করি যে -sপ্রক্রিয়াজাতকরণের পদ্ধতিটি পরিবর্তিত হয়েছে, কারণ বর্তমান পদ্ধতি আপনাকে $SHELLকমান্ড লাইনে ফাঁক দিয়ে ফাঁক দিয়ে যুক্তিগুলি পাস করার অনুমতি দেয় :

$ touch '/tmp/foo bar'
$ sudo -s rm '/tmp/foo bar'

আর্গুমেন্ট হ্যান্ডলিংয়ের পুরাতন পদ্ধতি '/tmp/foo bar'কমান্ডটি ভেঙে সেই যুক্তিকে দুটি ভাগে ভাগ করে দেবে ।


আপনি কোথায় পরীক্ষা করেছেন যে এটি আদেশটি বিভক্ত করবে না ?
জারাথুস্ট্র

@ জারাথুস্ট্র যে পাঁচ বছর আগে ছিল - আমি এখনও এতটা মনে করতে পারি না। আমি সুডো সোর্স কোড ইতিহাসের মাধ্যমে খনন করার পরামর্শ দেব - আচরণটি পরিবর্তিত হলে আপনার সন্ধান করা উচিত।
ক্যামহ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.