একটি পৃথক ব্যবহারকারী হিসাবে শেল স্ক্রিপ্ট চালান


42

আলাদা ব্যবহারকারী হিসাবে শেল স্ক্রিপ্ট চালানোর ভাল উপায় কী। আমি ডেবিয়ান ইচ ব্যবহার করছি এবং আমি জানি যে আমি কোন ব্যবহারকারীর নকল করতে চাই।

আমি যদি এটি ম্যানুয়ালি করতাম তবে আমি করতাম:

su postgres
./backup_db.sh /tmp/test
exit

যেহেতু আমি প্রক্রিয়াটি স্বয়ংক্রিয় করতে চাই, তাই আমার ব্যাকআপ_ডিব.শ পোস্টগ্রিজ (পরিবেশের উত্তরাধিকার সূত্রে প্রাপ্ত) হিসাবে চালনা করার উপায় দরকার

ধন্যবাদ!

উত্তর:


67

আপনার স্ক্রিপ্টটিকে অন্য এক কমান্ড হিসাবে অন্য ব্যবহারকারী হিসাবে চালাতে, চালনা করুন:

/bin/su -c "/path/to/backup_db.sh /tmp/test" - postgres

Breaking it down:
 /bin/su : switch user
 -c "/path/to..." : command to run
 - : option to su, make it a login session (source profile for the user)
 postgres : user to become

আমি সর্বদা এর মতো স্ক্রিপ্টগুলিতে পুরো পাথগুলি ব্যবহার করার পরামর্শ দিচ্ছি - আপনি সর্বদা গ্যারান্টি দিতে পারবেন না যে আপনি যখন su করবেন তখন আপনি সঠিক ডিরেক্টরিতে থাকবেন (সম্ভবত কেউ আপনার উপর হোমডির বদলেছে, কে জানে)। আমি সর্বদা su (/ bin / su) এর জন্য পুরো পথটি ব্যবহার করি কারণ আমি বিড়ম্বিত। এটি সম্ভব যে কেউ আপনার পথ সম্পাদনা করতে পারে এবং আপনাকে su এর সাথে আপোস করা সংস্করণ ব্যবহার করতে পারে।


এটি সর্বদা আমার পাসওয়ার্ড টাইপ করা প্রয়োজন? কিভাবে এটি গোল করতে পারেন?
zjffdu

2
আপনি যদি অ-রুট ব্যবহারকারী হিসাবে কমান্ডটি চালাচ্ছেন তবে সর্বদা আপনাকে একটি পাসওয়ার্ড টাইপ করতে হবে। আপনি যদি পাসওয়ার্ড এড়াতে চান, আপনি এটি অনুমোদনের জন্য sudo কনফিগার করতে পারেন। HOWEVER - sudo কনফিগার করে কোনও ব্যবহারকারীকে su চালানোর অনুমতি দেয় তাদের কোনও ব্যবহারকারী হতে দেয়। আমি আপনার কমান্ডের জন্য একটি স্ক্রিপ্ট তৈরি করার পরামর্শ দিচ্ছি, স্ক্রিপ্টের অনুমতিগুলি 700 এ সেট করে এবং মূল দ্বারা মালিকানাধীন, তারপরে একটি ব্যবহারকারীকে সেই একক স্ক্রিপ্টটি চালানোর অনুমতি দেওয়ার জন্য sudo কনফিগার করে।
বামগার্ট

আমি বিশ্বাস করি - যদিও এই উত্তরটি ওপিতে কাজ করতে পারে - এটি সম্পূর্ণ সঠিক নয়। আমার জানা মতে, উভয় -(বা --login) একসাথে ব্যবহার করা --command, -cআসলে লগইন সেশন শুরু করে না, কারণ -cসর্বদা লগইনবিহীন শেলকে বাধ্য করে।
জিনমার্টজ

1
দ্রষ্টব্য: বহনযোগ্যতার জন্য - postgressকমান্ডের শেষে উপস্থিত হওয়া উচিত। ম্যান পৃষ্ঠা থেকে:When - is used, it must be specified before any username. For portability it is recommended to use it as last option, before any username. The other forms (-l and --login) do not have this restriction.
জনি

23

যদি চালানোর লক্ষ্যযুক্ত ব্যবহারকারীর নোলোগিন শেলটি সংজ্ঞায়িত করা থাকে তবে আপনি শেলটি নির্দিষ্ট করতে -s বিকল্পটি ব্যবহার করতে পারেন:

/bin/su -s /bin/bash -c '/path/to/your/script' testuser

নিম্নলিখিত প্রশ্নটি দেখুন: নোলন শেল রয়েছে এমন ব্যবহারকারী হিসাবে স্ক্রিপ্ট চালান


9

একটি সময়সূচীতে এটি স্বয়ংক্রিয় করতে আপনি এটি ব্যবহারকারীর ক্রন্টব এ রাখতে পারেন। ক্রোন জবস যদিও পুরো পরিবেশ পাবে না তবে স্ক্রিপ্টে আপনার প্রয়োজনীয় সমস্ত এনভেরিভ ভেরিয়েবলগুলি নিজেরাই স্ক্রিপ্টে রাখাই ভাল।

ব্যবহারকারীর ক্রন্টব সম্পাদনা করতে:

sudo crontab -u postgres -e

আপনি আরও ব্যাখ্যা করতে পারেন?
শ্রাবণকুমার

3

এটি শেল স্ক্রিপ্টগুলিতে একটি তথ্যপূর্ণ পড়ুন - সেটআপ করা উচিত

আপনি যদি " " যুক্তি ক্রম দিয়ে su চালান - username, এটি ব্যবহারকারীর জন্য একই পরিবেশ প্রদানের জন্য একটি লগইন শেল তৈরি করবে। সাধারণত, অন্য কোনও লগইন থেকে আপনার ঘরের পরিবেশের সাথে আপনার স্ক্রিপ্টটি দ্রুত সম্পাদন করতে ব্যবহৃত হয়।


যদি আপনার ক্রমাগত ক্রিয়া করার প্রয়োজন হয় তবে এটি কার্যকর হতে পারে। তবে মনে রাখবেন যে বেশিরভাগ সিস্টেম পরিষেবা অ্যাকাউন্টগুলিতে বৈধ হোম পাথ এবং শেল না থাকা উচিত।
ড্যান কারলি

2

স্য ম্যানপেজ চেষ্টা করে দেখুন:

su -c স্ক্রিপ্ট_রুন_াস_পোস্টগ্রেস.শ - পোস্টগ্রিস

সতর্কতার সাথে, আপনি sudo ব্যবহার করতে পারেন আপনাকে পাসওয়ার্ড ছাড়াই পোস্টগ্রিগ হিসাবে ঠিক সেই কমমান চালাতে। যদিও এটি আপনার / ইত্যাদি / সূডারগুলিতে কিছু সেটআপ নেয়।


2

অন্যদের দ্বারা পোস্ট করা "su -c ..." পদ্ধতিটি একটি ভাল। অটোমেশনের জন্য, ব্যবহারকারীর ক্রোনট্যাবটিতে স্ক্রিপ্টটি যুক্ত করতে পারে যেমন এটি কার্যকর করতে পারে।


1

যদি ব্যবহারকারীটির ইতিমধ্যে সুডোতে একটি প্রবেশিকা রয়েছে এবং আপনি সুপারসারের পাসওয়ার্ড জানেন না তবে আপনি নিম্নলিখিতগুলি চেষ্টা করতে পারেন: এটি পোস্টড্রেসগুলি /data/my-db/pgsql/9.6/data এ আরম্ভ করা পুনরায় আরম্ভ করে

sudo su - postgres -c "/usr/pgsql-9.6/bin/pg_ctl -D /data/my-db/pgsql/9.6/data -l /var/log/pgsql.log restart"

-1

আপনি এটি ব্যবহার করতে পারেন:

sudo -u postgres স্ক্রিপ্ট_রুন_াস_পোস্টগ্রেস.শ

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