নোলজিন শেল রয়েছে এমন ব্যবহারকারী হিসাবে স্ক্রিপ্ট চালান


87

আমাকে যা করতে হবে তা হ'ল নির্দিষ্ট ব্যবহারকারী হিসাবে নির্দিষ্ট স্ক্রিপ্ট চালানো যার nologin/falseশেলটি ইঙ্গিত করা আছে /etc/passwd

আমি স্ক্রিপ্টটি মূল হিসাবে চালিত করব এবং এটি অন্য ব্যবহারকারীর মতো চালানো উচিত। চলমান:

~# su -c "/bin/touch /tmp/test" testuser

কাজ করবে, তবে আমার পরীক্ষকটির জন্য একটি বৈধ শেল দরকার। আমি জানি আমি এর সাথে পাসওয়ার্ডটি অক্ষম করতে পারি passwd -d testuserএবং শেলটি /bin/bashএইভাবে ছেড়ে দেওয়া কিছুটা সুরক্ষিত করতে পারে তবে আমার nologin/falseশেল থাকা দরকার ।

মূলত আমার যা প্রয়োজন তা হ'ল crontabযখন আমরা নির্দিষ্ট ব্যবহারকারী হিসাবে কাজ চালানোর জন্য চাকরি সেট করি তবে nologin/falseএইটির শেলটি নির্বিশেষে ।

পিএস আমি এই থ্রেডটি নোলোগিন ব্যবহারকারী হিসাবে একটি কমান্ড প্রয়োগ করে খুঁজে পেয়েছি , তবে আমার কী স্ক্রিপ্টটি চালাতে হবে concatenateতার কমান্ডটি সম্পর্কে আমার কোনও ধারণা নেই su -s /bin/sh $user

উত্তর:


119

আপনি একটি নির্দিষ্ট শেল চালাতে su-to সুইচ ব্যবহার করতে পারেন

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

( পাসওয়ার্ডহীন ব্যবহারকারী sudoহলে উপরের দিকে প্রস্তুত testuserকরুন।)


সু কি হলে root:root -rwsr-x---?
প্যাট্রিক

1
যদি ব্যবহারকারীর পাসওয়ার্ড না থাকে?
সিএমসিডিগ্রাগনকাই

3
@ ওয়েসলি খুঁজে পেয়েছে যে পাসওয়ার্ডহীন ব্যবহারকারীর জন্য এই কমান্ডটি চালানোর জন্য আপনাকে মূল হতে হবে।
সিএমসিডিগ্রাগনকাই

1
@ লাইন, যদি ব্যবহারকারীর শেল না থাকার কথা মনে হয়, কমান্ড সম্পর্কিত প্রক্রিয়াটি বাশ প্রক্রিয়াটির শিশু হওয়া উচিত নয়। সুতরাং, স্ক্রিপ্টটি দিয়ে শেলটি প্রতিস্থাপন করতে আপনার এক্সিকিউটিভ ব্যবহার করা উচিত। এবং যদি আপনি স্ক্রিপ্টটি ডি'র একটি শিশু বানাতে চান তবে আপনি কেবল & উদাহরণ হিসাবে ব্যবহার করুনsu -s /bin/bash -c 'exec /path/to/your/script &' test
ফ্যাসুন্দো ভিক্টর

1
যেহেতু আমি একই ফলটি কীভাবে ব্যবহার runuserকরতে পারি তা শেষ করতে 20 মিনিট সময় ব্যয় করেছি , তাই আমি উল্লেখ করতে চাই যে su -s SHELLপ্যারামিটারটি রানুর কমান্ডটি রেন্ডার কমান্ডকে প্রায় অনেকটাই অকেজো করে দেয় :) ধন্যবাদ জান!
jirka

12

sudo -uএটি ইনস্টল করা থাকলে আপনি এটি দিয়ে করতে পারেন:

# whoami
root
# sudo -u apache whoami
apache
# getent passwd apache
apache:x:48:48:Apache:/var/www:/sbin/nologin

আপনি কীভাবে পরামিতিগুলি পাস করবেন sudo -u apache whoami?
সিএমসিডিগ্রাগনকাই

@CMCDragonkai কমান্ডের পরে যে কোনও পরামিতিটি পাশ করা হবে। আপনি এটিকে "সুডো [-u আপাচে] [হুয়ামি <param1> <param2>]" এর মতো ভাবতে পারেন।
Handyman5

আমি মনে করি sudo -uনোলোগিন ব্যবহারকারী হিসাবে কমান্ডগুলি চালনার জন্য সম্ভবত ব্যবহার করা ভাল ধারণা নয়, কারণ এটি SUDO_USERপরিবেশের মধ্যে প্রকাশ করে যে প্রকৃত প্রকৃত আদেশটি প্রার্থনা করে। আমি কেবল এটি overthink করছি।
মেও

5

স্ক্রিপ্টটি / বিন / এসকে কার্যকর করার যুক্তি হিসাবে সরবরাহ করে:

su -s "/bin/sh /your/script/location" username

2

কেবল বুজলাম :

su -s "/ বিন / বাশ" -সি "/ বিন / টাচ / টিএমপি / টেস্টুজার" পরীক্ষক

এর চেয়ে ভাল উপায় আর কি হতে পারে ?!


0

আসলে, এটি করার সর্বোত্তম উপায় হ'ল চালক run

বিশদ জন্য ম্যান পৃষ্ঠা দেখুন

এই সরঞ্জামটি পরিস্থিতি মোকাবেলায় ব্যবহার করা হয় যেমন বিকাশকারী তার বলয়ে বলেছিলেন

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

http://danwalsh.livejournal.com/55588.html

আমি এই উত্তরটি অনেক প্রাসাদে পোস্ট করেছি, আপনি যদি এই বিরক্তিকর হন তবে আমাকে ক্ষমা করুন


লিঙ্ক পচা রোধ করতে লিংক-কেবল উত্তর পোস্ট করবেন না। পরিবর্তে, আপনার উত্তরের লিঙ্ক থেকে সর্বাধিক প্রাসঙ্গিক তথ্য যুক্ত করুন বা বিকল্পভাবে, একটি উত্তরের পরিবর্তে মন্তব্য হিসাবে লিঙ্কটি পোস্ট করুন। আরও তথ্যের জন্য এই সার্ভারফল্ট.com/ help/ how-to-answer সহায়তা কেন্দ্র নিবন্ধটি দেখুন ।
ফেডেরিকো গাল্লি

@ ফেডেরিকো গল্লি সর্বাধিক প্রাসঙ্গিক তথ্য ইতিমধ্যে যুক্ত করা হয়েছে, ব্যবহারের অনুলিপি এবং আটকানোর দরকার নেই, ম্যান পেজটি পর্যাপ্ত তথ্য সরবরাহ করে
Z-Y00

-1

ব্যবহারকারীকে নির্দিষ্ট করতে sudo -u ব্যবহার করুন। লক্ষ্য ব্যবহারকারীর পরিবেশের পরিবর্তনশীলগুলি সেট করতে -i পতাকা ব্যবহার করুন।

sudo -i -u user command

1
এটি দেয়This account is currently not available.
নোকট করুন

-3

শেল -s এবং -c কমান্ড সহ su কমান্ড ব্যবহার করুন। নিচে দেখানো হয়েছে

 su  exec -l -c '/bin/bash /etc/update_conf.sh' -s /bin/bash

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