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


15

আমার একটি নির্দিষ্ট ব্যবহারের কেস রয়েছে যেখানে আমি কোনও ইন্টারঅ্যাক্টিভিটি ছাড়াই একটি কমান্ড দিয়ে ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করতে সক্ষম হতে চাই। এটি নিরাপদ ফ্যাশনে করা হচ্ছে (এসএসএইচ এর বাইরে এবং লগ ইন করতে সক্ষম এমন একটি সিস্টেমে), সুতরাং কমান্ড লাইনে নতুন পাসওয়ার্ডটি (এবং এমনকি পুরানোও, প্রয়োজন হলে) প্রকাশ করা ভাল fine FWIW, এটি একটি উবুন্টু সিস্টেম।

আমি কেবল এই একটি কাজের জন্য এই সিস্টেমে প্রত্যাশার মতো কিছু যুক্ত করা এড়াতে চাই।


3
যারা ফ্রিবিএসডি-তে এটি করতে চান তাদের জন্য:echo "newpassword" | pw usermod theusername -h 0
পল হফম্যান

উত্তর:



5

আপনি একটি পাসওয়ার্ড হ্যাশ সরবরাহ usermodকরতে -pবিকল্পটি ব্যবহার করতে পারেন (আসল পাসওয়ার্ড নয়)। আপনি ভালো কিছু ব্যবহার পাসওয়ার্ড হ্যাশ তৈরি করতে পারেন mkpasswd -m sha-256অথবাmkpasswd -m md5


1
... তবে আমার এআইএক্স সিস্টেমে নেই usermod: '(- আমি প্রশ্নের ট্যাগগুলি ঠিক করব
ভোরেটাক 7

3

অবশ্যই।

  1. আপনার স্থানীয় সিস্টেমে পাসওয়ার্ডটি হ্যাশ করুন।
  2. দূরবর্তী মেশিনে সংযোগ করুন (যেখানে আপনি পাসওয়ার্ড পরিবর্তন করতে চান)
  3. একটি সৃজনশীল করার কুচি-কুচি করিয়া কাটা বস্তু পাসওয়ার্ড & ব্যবহারকারীর নাম ফিড sedস্ক্রিপ্ট যে আপনার সিস্টেমের পাসওয়ার্ড ফাইল আপডেট ( /etc/shadow, /etc/master.passwd, যাহা এটা হতে হবে)।

1

passwdউপযোগ একটি --stdin বিকল্প বলে যে আছে:

এই বিকল্পটি চিহ্নিত করতে ব্যবহৃত হয় যে পাসডাব্লুডিকে স্ট্যান্ডার্ড ইনপুট থেকে নতুন পাসওয়ার্ডটি পড়তে হবে, যা পাইপ হতে পারে।

বাক্য গঠন:

echo "newpass" | passwd --stdin user1

যদিও আপনি উল্লেখ করেছেন যে আপনার যত্ন নেই, আপনি পাসওয়ার্ডটি একটি টেক্সট ফাইলে রেখে দিতে পারেন এবং cat pass.txtইকো কমান্ডের পরিবর্তে করতে পারেন, এটি বাশ ইতিহাসে প্রদর্শিত হয় না।


এটাই সেটা. echo VerySecret | passwd --stdin username
ম্যাডহ্যাটার

5
আমার উবুন্টু সিস্টেমের --stdinবিকল্প হিসাবে নেই passwd
জেফ ফেরল্যান্ড

আপনি ঠিক বলেছেন, এটা হয় না। আমি একটি CentOS সিস্টেম এবং একটি ম্যাক উভয়ই পরীক্ষা করেছিলাম এবং তাদের কাছে --stdin বিকল্প রয়েছে, সুতরাং এটি অপসারণ করা অবশ্যই একটি উবুন্টু জিনিস।
সাফাদো

1
@RyanM। ফ্রিবিএসডি (এবং এএফআইকে নেটবিএসডি এবং ওপেনবিএসডি, এআইএক্স, এইচপি-ইউএক্স এবং সোলারিস সর্বশেষ আমি চেক) কোনওভাবে সমর্থন করে --stdinনা - মূলত কারণ এটি একটি বিশাল দৈত্যাকার সুরক্ষা গর্ত হওয়ার অপেক্ষায় রয়েছে :-)
ভোরেটাক 7

1
@ কোয়ান্টা: বা echo "newpass" | passwd --stdin user1একটি স্থান দিয়ে লাইনটি শুরু করুন ; এইভাবে এটি মোটেই বাশ ইতিহাসে যাবে না।
জান্নে পিক্কারাইনেন

1

তাহলে --stdinবিকল্প কাজ করছে না আমরা মূলত দুটি বিকল্প ব্যবহার করতে পারেন:

  1. হয় chpaswdআপনার স্ক্রিপ্টে ডাকা অন্য ইউটিলিটি ব্যবহার করুন ।
  2. বা ব্যবহার করুন echo "current_password\nnew_password\nnew_password" | passwd user_name
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.