পিতা-মাতার পরিবেশ উত্তরাধিকারসূত্রে প্রাপ্ত না করে একটি কমান্ড চালানো


14

কোনও নতুন লগইন সেশনে "যেন" কমান্ড চালানোর কোনও উপায় আছে কি?

আমি ইতিমধ্যে চেষ্টা করেছি env -i। যাইহোক, আমি সেট করতে বা আনসেট না করা বিভিন্ন ENV ভেরিয়েবলগুলির সাথে ডিল করতে চাই না।

আমিও চেষ্টা করেছি bash -c "some command"এবং bash -l -c "some commmand", কিন্তু তারা সমস্ত বর্তমান পরিবেশ কপি করুন।

সবচেয়ে কাছাকাছি এসেছি একটি ঘেটি সমাধান: ssh me@localhost "some command"


ব্যবহার করুন /bin/bash --loginযে আচরণ পেতে। আমি এটি ব্যবহার করে যেমন একটি যথাযথ পেতে $PATH
ড্যানিয়েল অঙ্গুলিনির্দেশ

এটি এর সমতুল্য /bin/bash --l, যা আমি ইতিমধ্যে চেষ্টা করেছি। এটি মূল পরিবেশটি অনুলিপি করে। এটি ব্যবহার করে দেখুন: export SOME_VAL=something। তারপরে /bin/bash --login। তারপরে env | grep SOME_VAL। মান থাকবে।
dgo.a

উত্তর:


12

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

env -i HOME="$HOME" bash -l -c 'your_command'

উদাহরণ:

$ export ABC=123
$ env -i HOME="$HOME" bash -l -c 'env' | grep ABC
$ env HOME="$HOME" bash -l -c 'env' | grep ABC
ABC=123

ব্যাখ্যার জন্য এটি ভেঙে দেওয়া:

  1. env -i HOME="$HOME": পরিবেশ সাফ করে। -iসহ একটি খালি পরিবেশ সেট আপ কোন ভেরিয়েবল । এটি সমস্যাযুক্ত কারণ এর অর্থ হল যে আপনি নির্বাকভাবে চালানোর চেষ্টা করলে bash -lএটি আপনার .bash_profileইত্যাদি লোড করবে না কারণ HOMEসেট নেই। এটি প্রশমিত করতে, আমরা স্পষ্টভাবে পাস করি HOME="$HOME", এমন একটি পরিবেশ তৈরি করি যেখানে HOME(এবং কেবল HOME) সেট করা থাকে।

  2. bash -l -c ...: লগইন শেলের মধ্যে পছন্দসই কমান্ড চালায়। আপনি এর জন্য একটি লগইন শেল চাইবেন কারণ আমরা একটি পরিষ্কার পরিবেশ থেকে শুরু করছি এবং সমস্ত কিছু পুনরায় লোড করা দরকার।

লক্ষণীয়ভাবে:

  • এর জন্য সুডোর সুবিধাগুলির প্রয়োজন নেই ( sudoসংস্করণটি করে)।
  • এটির জন্য ব্যবহারকারীর পাসওয়ার্ড টাইপ করার প্রয়োজন নেই ( suসংস্করণটি করে)।
  • এটির জন্য এসএসএইচ সার্ভার চালানো এবং পাসওয়ার্ডহীন কী থাকা দরকার যা মেশিনে লগ ইন করতে ব্যবহার করা যেতে পারে ( sshসংস্করণটি করে)।

ধন্যবাদ, এলিয়ট এটি দেখতে খুব সহজ এবং সুস্পষ্ট দেখাচ্ছে ... এখন এটি আমার দিকে ইঙ্গিত করা হয়েছে।
dgo.a

12
su -l $USER

sudo -u $USER -i

আরও বেশি আক্রমণাত্মক env -i bashকোনও কিছুর জন্য চেষ্টা করুন , কিন্তু এটি $ হোম এবং ER টিআরএম সহ সমস্ত কিছু আনসেট করে


2
ধন্যবাদ! দ্বিতীয় কমান্ড আমাকে যা চাই ঠিক তাই দেয়। আমি 2 ঘন্টারও বেশি সময় অনুসন্ধান করেছি এবং আপনার জবাবের কাছাকাছি কিছু পাইনি। আপনার জবাবের ভিত্তিতে, আমি আবার গিয়েছিলাম man sudoএবং খুঁজে পেয়েছি: "যদি লক্ষ্য ব্যবহারকারীর প্রার্থনাকারীর অনুরূপ ব্যবহারকারী হয় তবে কোনও পাসওয়ার্ডের প্রয়োজন হয় না।" ( suমনে হয় সর্বদা একটি পাসওয়ার্ড জিজ্ঞাসা করে a) manপৃষ্ঠার প্রথম অনুচ্ছেদে এত সাধারণ কিছু উপেক্ষা করার জন্য আমি এমন বোকা :( আমি সবসময় পাসওয়ার্ড চেয়েছি বলে ধরে নিয়েছিলাম কারণ আমি প্রথমে sudo এড়িয়ে চলেছি Thanks ধন্যবাদ আবার!
dgo.a

1
অন্যের জন্য কেবল একটি ইঙ্গিত ... আপনার লগ ইন হিসাবে $USERআপনাকে রুট হিসাবে এবং তারপরে sudo -u ...আপনার ব্যবহারকারীর হিসাবে লগইন করতে হবে । আপনি যদি কেবল sudo -uব্যবহারকারী হিসাবে করেন তবে আপনি উত্তরাধিকারী হবেন।
অ্যাডাম জেন্ট 21

এটি sudoঅ্যাক্সেস না থাকলে স্পষ্টতই কাজ করে না । এমন কোনও বিকল্প পদ্ধতি আছে যা সুডোর প্রয়োজন হয় না?
ব্যবহারকারী5359531

@ user5359531: হ্যাঁ - su -l $USER
user1686

1
এটি একটি পাসওয়ার্ড চেয়েছে; আমি ssh কী প্রমাণীকরণের মাধ্যমে লগ ইন করেছি, তাই পাসওয়ার্ড কী তা আমি জানি না। এবং একটি পাসওয়ার্ড প্রম্পট স্ক্রিপ্ট ক্ষমতা সক্ষম করতে চলেছে। এখন পর্যন্ত এর ssh $USER@localhost <command>
চেহারাটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.