অন্য ব্যবহারকারী হিসাবে শেল স্ক্রিপ্ট চালান যার পাসওয়ার্ড নেই


245

আমি মূল উবুন্টু শেল থেকে কোনও ভিন্ন ব্যবহারকারী হিসাবে কোনও পাসওয়ার্ড নেই বলে স্ক্রিপ্ট চালাতে চাই।

আমার পুরো সুডোর অধিকার রয়েছে, তাই আমি এটি চেষ্টা করেছি:

sudo su -c "Your command right here" -s /bin/sh otheruser

তারপরে আমাকে আমার পাসওয়ার্ড প্রবেশ করতে হবে, তবে আমি নিশ্চিত নই যে সেই স্ক্রিপ্টটি এখন সেই ব্যবহারকারীর অধীনে চলছে কিনা।

আমি কীভাবে নিশ্চিত করতে পারি যে স্ক্রিপ্টটি এখন সেই ব্যবহারকারীর অধীনে চলছে?

উত্তর:


354

আপনি উভয়ের জন্য suবা sudoপ্রয়োজনের সাথে এটি করতে পারেন ।

sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"' 

সম্পর্কিত অংশ man sudo:

-H   The -H (HOME) option requests that the security policy set
     the HOME environment variable to the home directory of the
     target user (root by default) as specified by the password
     database.  Depending on the policy, this may be the default
     behavior.
-u user     The -u (user) option causes sudo to run the specified
      command as a user other than root.  To specify a uid
      instead of a user name, use #uid.  When running commands as
      a uid, many shells require that the '#' be escaped with a
      backslash ('\').  Security policies may restrict uids to
      those listed in the password database.  The sudoers policy
      allows uids that are not in the password database as long
      as the targetpw option is not set.  Other security policies
      may not support this.

suআপনি যদি রুট হন তবে কেবল পাসওয়ার্ড না দিয়েই ব্যবহারকারীকে স্যুইচ করতে পারবেন। কালেবের উত্তর দেখুন

আপনি পাসওয়ার্ড ছাড়াই /etc/pam.d/suঅনুমতি দিতে ফাইলটি পরিবর্তন করতে পারেন su। এই উত্তর দেখুন ।

আপনি যদি আপনার লেখক ফাইলটি নিম্নলিখিতটিতে সংশোধন করে থাকেন তবে যে কোনও ব্যবহারকারী যে গোষ্ঠীর অংশ ছিল তারা পাসওয়ার্ড ছাড়াই somegroupকরতে suপারে otheruser

auth       sufficient pam_rootok.so
auth       [success=ignore default=1] pam_succeed_if.so user = otheruser
auth       sufficient   pam_succeed_if.so use_uid user ingroup somegroup

তারপরে টার্মিনাল থেকে পরীক্ষা করুন

rubo77@local$ su otheruser -c 'echo "hello from $USER"'
hello from otheruser

4
আপনি কি দয়া করে এটি আরও কীভাবে করবেন তা যুক্ত করতে পারেন su?
rubo77

2
এটি আমাকে একটি পাসওয়ার্ডের জন্য জিজ্ঞাসা করে :-(
ইয়ানভোগান

1
@ আইয়ানভোগান, ডিফল্ট কনফিগারেশন (sudo) এর সাহায্যে আপনি এটি পাসওয়ার্ডের জন্য জিজ্ঞাসা করবেন যতক্ষণ না আপনি এটিকে মূল হিসাবে চালান। আপনি sudo কনফিগার করতে পারেন "পাসওয়ার্ডের প্রয়োজন ছাড়াই ব্যবহারকারী এ হিসাবে ব্যবহারকারী A কে cmd সি চালানোর অনুমতি দিন"। Help.ubuntu.com/commune/Sedoers
গিরিহা

1
এটিকে মূল হিসাবে চালানোর সময় আমাকে একটি পাসওয়ার্ডের জন্য অনুরোধ জানানো হয়। কোনও পরামর্শ?
Nate

1
@ নামজিভিউ এই আদেশের বিষয়টি মনে রাখবেন। যদি আপনার sudoers এর নিয়ম আরও নীচে থাকে যা আপনার ব্যবহারকারীর জন্য বা অন্য কোনও গ্রুপের সদস্য যা আপনি সদস্য, তার জন্য আপনার NOPASSWD বিধিটিকে ওভাররাইড করে।
গিরিহা

100

আপনি যদি সুডোর পরিবর্তে সু ব্যবহার করতে চান তবে আমার বিশ্বাস আপনি এরকম কিছু ব্যবহার করতে পারেন:

su - <username> -c "<commands>"
  • - নির্দিষ্ট ব্যবহারকারীর একটি লগইন অনুকরণ করবে
  • -c এটি আপনাকে জানায় যে আপনি একটি কমান্ড চালাতে চান

গীত। দুর্ভাগ্যক্রমে আমি এই পদ্ধতিতে আরভিএম ব্যবহার করে রুবি ইনস্টল করতে সক্ষম নই, তবে সম্ভবত এটি সম্পর্কিত নয়।


5
আমার sudoশুরুতে যুক্ত করা দরকার অন্যথায় এটি আমাকে আমার পাসওয়ার্ডের জন্য জিজ্ঞাসা করেছিল।
ইয়ানওয়াগান

2
এটি অবশ্যই ব্যতীত কাজ করে না sudo। sudo দিয়ে এটি কাজ করে, উদাহরণস্বরূপ: sudo su - www-data -c "touch /tmp/test"
www-

"Su" ব্যবহার করতে আপনার মূল পাসওয়ার্ড প্রয়োজন, "sudo" এর বিন্দুটি এড়ানো উচিত। উপরের হিসাবে "su" ব্যবহার করে যদি আপনার মূল পাসওয়ার্ডটি ঠিকঠাক কাজ করা উচিত।
স্যামুয়েল এস্লুন্ড

6

উপরের উত্তরগুলি আমার পক্ষে সত্যই কার্যকর তবে আসল প্রশ্নের উত্তর দেওয়ার জন্য ...

আমি কীভাবে নিশ্চিত করতে পারি যে স্ক্রিপ্টটি এখন সেই ব্যবহারকারীর অধীনে চলছে? -

ব্যবহার করুন:

ps -ef | grep <command-name>

আউটপুটটিতে আপনার স্ক্রিপ্ট এবং এটি প্রয়োগকারী প্রকৃত ব্যবহারকারীকে অন্তর্ভুক্ত করা উচিত। বিএসডি-মতো সিস্টেমের লোকেরা যেমন ম্যাক অনুরূপ তথ্য সন্ধান করতে পারে:

ps aux | grep <command-name>

লিনাক্স ব্যবহারকারীরা পিএস অক্স ব্যবহার করতে পারেন।
ডিন হাওল

@DeanHowell; সত্য, তবে ম্যাক ব্যবহারকারীরা "পিএস-শেফ" ব্যবহার করতে পারবেন না এবং "পিএস অক্স" হল বিএসডি অপশন, কেবলমাত্র একটি সামঞ্জস্য বৈশিষ্ট্য হিসাবে উপলব্ধ যখন "পিএস-শেফ" মানকীকৃত ইউনিক্স / পসিক্স বিকল্পগুলি রয়েছে।
স্যামুয়েল -স্লুন্ড

2

আমারও একই সমস্যা ছিল। কমান্ডটি কেবল টাইপ screen -dmS testscreenকরুন এটি আপনার অ-সুডো ব্যবহারকারীর অ্যাকাউন্টে একটি বিচ্ছিন্ন স্ক্রিন তৈরি করবে এবং তারপরে আপনি এটিতে লগইন করতে পারবেন এবং এই স্ক্রিনটি সেখানে রয়েছে কিনা তা পরীক্ষা করতে পারেন screen -ls

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