আমি কীভাবে কোনও স্ক্রিপ্ট থেকে ডকার পাত্রে রুট পাসওয়ার্ড সেট করতে পারি?


11

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা হোস্টে চলে এবং ডকারের ধারক তৈরি করে / শুরু করে / থামায়। আমি স্ক্রিপ্টটি কনটেইনারটির মধ্যে মূল ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করতে চাই।

ধারকটি যেহেতু একটি এসএসএস সার্ভার, তাই আমি চেষ্টা করেছি: sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

কিন্তু এটি কাজ করে না। এগিয়ে যাওয়ার আগে এবং এটি ডিবাগ করার জন্য আরও বেশি সময় ব্যয় করার আগে, আমি এটির আরও চৌকস উপায় আছে কিনা তা জানতে চাই।

আমি বুঝতে পারি যে যথাযথ "ডকার ওয়ে" হ'ল ডকফাইফাইল দ্বারা চালিত একটি স্ক্রিপ্ট তৈরি করা, যা একটি ভাগ করা ভলিউম থেকে পাসওয়ার্ডটি টেনে এনে মূল পাসওয়ার্ড হিসাবে সেট করে। এটি জটিল শোনায় তবে এটি কীভাবে করতে হয় তা আমি জানি এবং আমি যে অন্য ডকার ইমেজ ব্যবহার করি তার জন্য ভালভাবে কাজ করে। তবে আমি এটির জন্য এটি করতে চাই না।

আমার কেবল একটি কমান্ডের দরকার যা ব্যবহারকারীর পাসওয়ার্ডটি অ-ইন্টারেক্টিভভাবে পরিবর্তন করতে ডকার বা ssh ব্যবহার করে।

উত্তর:


9
PASSWORD=$(zenity --password --title="Docker" 2>/dev/null)

একটি পপআপ খুলবে, পাসওয়ার্ড চেয়ে, এবং এটি ফেরত। স্ক্রিপ্টে কোনও পাসওয়ার্ড সংরক্ষণ করা হয়নি

আপনার যদি কোনও ডকারের ধারক থাকে যেখানে সুরক্ষার বিষয়ে খুব যত্ন না করে আপনার পাসওয়ার্ড সেট করতে হবে, আপনি ডকফাইফাইলে একটি বিবৃতি যুক্ত করতে পারেন:

RUN echo "root:root" | chpasswd

আমার দু'টি ডকফাইফিলের মধ্যে আপনার মতো পদ্ধতিটি সেট করার জন্য আমার একই পদ্ধতি রয়েছে (বিভিন্ন প্রকল্প, তবে প্রয়োজনীয় অংশগুলিতে একই)। তবে একটি কাজ করছে (আমি এতে আঘাত করতে পারি) অন্যটি আমাকে অনুমতি দেয় না। কোন ধারণা কেন?
ইসমাইলসুন্নি

3
+1 উত্তরটি আরও স্বচ্ছ হবে যদি এটি chpasswd এর জন্য স্টিডিনকে ব্যাখ্যা করে:echo username:newpassword | chpasswd
জোনাথন

5

এটি ডকারের সাথে সম্পর্কিত নয়। আপনাকে স্পষ্টভাবে বলতে হবে passwdযে আপনি থেকে পাসওয়ার্ড সরবরাহ করতে চলেছেন stdin

echo 'newpassword' |passwd root --stdin

ইনপুট জন্য ধন্যবাদ। --stdin যদিও উবুন্টুতে সমর্থিত নয়। এটি কাজ করে না।
ক্রিস

14
--stdinনতুন লিনাক্স সিস্টেমে অবমূল্যায়ন করা হয়েছে। chpasswdপরিবর্তে ব্যবহার করুন:echo username:newpassword | chpasswd
অবিশ্বাস্য

1

এটি উবুন্টু 14.04.4 এলটিএসে নির্বিঘ্নে কাজ করে:

স্ক্রিপ্টে যা ধারকটি পুনর্নির্মাণ করে (যা "হোস্ট" তে চলতে হবে) এই লাইনগুলি যুক্ত করুন:

$PASS='<a-good-password>'
echo -e "$PASS\n$PASS" | sudo docker exec -i <container-id-or-name> passwd

স্ক্রিপ্টে প্রকৃত পাসওয়ার্ডটি রাখা পাসওয়ার্ডগুলি হ্যান্ডেল করার জন্য খুব নিরাপদ। স্ক্রিপ্টে সঠিকভাবে হ্যাশ পাসওয়ার্ড স্থাপন করা এবং এটির usermodপরিবর্তে ব্যবহার করা অনেক বেশি সুরক্ষিত হবে passwd
ক্যাস্পার্ড

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