বেস স্ক্রিপ্টিং, একক কমান্ডের জন্য 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.