বেস স্ক্রিপ্টিং, একক কমান্ডের জন্য www-ডেটা থেকে su


26

আমি লিখেছি এই ব্লগ পোস্টে বর্ণিত হিসাবে subversion সংগ্রহশালা এবং সম্পর্কিত ওয়েবসাইট তৈরি করতে স্বয়ংক্রিয়ভাবে কাজ করছি । নীচের কমান্ডটি চালানোর জন্য আমি যে অংশে www-ডেটা ব্যবহারকারীর কাছে মামলা করছি তার ঠিক আশেপাশে আমি ইস্যুগুলি নিয়ে চলেছি:

svnadmin create /svn/repository

স্ক্রিপ্টের শুরুতে একটি চেক রয়েছে যা এটি নিশ্চিত করে যে এটি রুট বা সুডোর মতো চলছে এবং তার পরে একটি আদেশের পরে রুট হিসাবে চালানো দরকার। সেই কমান্ডটি www-ডেটা হিসাবে চালিত করার এবং তারপরে শেষ পর্যন্ত রুটে ফিরে যেতে কি কোনও ভাল উপায় নেই?

উত্তর:


24

su - www-data -c 'svnadmin create /svn/repository'মূল দ্বারা চালিত আপনার স্ক্রিপ্টে কেবল ব্যবহার করুন । যাতে কেবল এই আদেশটি www-ডেটা ব্যবহারকারী দ্বারা চালিত হয়।


ভবিষ্যতের দর্শকদের জন্য আপডেট :

আপনি যদি কোনও "This account is currently not available"ত্রুটি পান তবে ব্যবহারটি বিবেচনা করুন:

su - www-data -s /bin/bash -c 'svnadmin create /svn/repository'

( ব্যবহারকারীর লগইন নীতিমালা -sসমন্বিত করতে পতাকা সম্পর্কিত পেটরের মূল্যবান উল্লেখ www-data)


1
হ্যাঁ, এটি প্রদর্শিত হচ্ছে আমি স্ক্রিপ্টিংয়ের একটি প্রাথমিক নিয়মটি ভুলে গেছি ... আরটিএফএম। ধন্যবাদ!
ব্রেন্ডন ডুগান

15
এটি চেষ্টা করে, আমি ত্রুটিটি This account is currently not available.
পেয়েছি

আমি এই ত্রুটিটি পেয়েছি, কিন্তু নীচে futbolsalas15 এর উত্তরটি ভাল কাজ করে।
অ্যান্ড্রু

18
su - www-data -s /bin/bash -c 'your_command'এই কাজটি করতে ব্যবহার করুন । ব্যবহারকারী www-ডেটাতে শেল রয়েছে /usr/sbin/nologinতাই -sপরামিতি ছাড়াই এটি ত্রুটির বার্তা নিয়ে যায়।
পেট্র

63

'Su' দিয়ে সম্ভবত এটি একটি পাসওয়ার্ডের অনুরোধ করে এবং www-ডেটাতে পাসওয়ার্ড নেই। আমি আদেশটি সুপারিশ করছি sudo:

 sudo -u www-data command

শর্তটি হ'ল আপনার ব্যবহারকারীর অবশ্যই মূল, বা sudoers ফাইলে কনফিগার করা উচিত


4
বাহ, কেন এটি নির্বাচিত উত্তর নয়? এটি খুঁজে পেতে আমাকে অনেক দীর্ঘ পথ নিয়েছে।
ক্যাপ্টেন হাইপারটেক্সট

3

ব্যবহার su:

   su [options] [username]

   The options which apply to the su command are:

   -c, --command COMMAND
       Specify a command that will be invoked by the shell using its -c.

2
এটি লক্ষ করা উচিত যে su কমান্ডগুলি লগইন অক্ষম করে এমন অ্যাকাউন্টগুলির সাথে কাজ করে না (যেমন www-ডেটা)। আপনি sudo ব্যবহার করতে হবে।
ফ্রন্টমুন

2

2 সম্ভাব্য পন্থা :


1) sudoআদেশ:

বেশিরভাগ ক্ষেত্রে আপনার sudoকমান্ডটিতে অ্যাক্সেস থাকবে এবং তাই সমাধানটি সহজভাবে:

sudo -u target_user target_command


2) suকমান্ড (sudo ইনস্টল করা না হলে। Ex. alpine-linux images):

su - target_user -c 'target_command'

আপনি যদি একটি 'এই অ্যাকাউন্টটি বর্তমানে উপলভ্য নয়' ত্রুটিটি পান তবে ব্যবহারকারীর কোনও লগইন (শেল অ্যাক্সেস) নীতি কার্যকর নেই। যদি তা হয় তবে ব্যবহারটি বিবেচনা করুন:

su - target_user -s /bin/bash -c 'target_command'

( ব্যবহারকারীর লগইন নীতিমালার -sজন্য পতাকা সম্পর্কিত পেট্রারের মূল্যবান মন্তব্যের ভিত্তিতে www-data)

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