useradd ব্যবহারকারীকে লগ ইন করার অনুমতি দেয় না


2

একটি উবুন্টুতে 14.04.2 এলটিএস নিম্নলিখিত কমান্ড:

adduser fu

এবং তারপরে একটি পাসওয়ার্ড প্রবেশ করানো barএবং Enterঅন্যান্য সমস্ত প্রশ্নের উপরে চাপ দেওয়া , এমন একটি ব্যবহারকারী তৈরি করে যা আমাকে লগইন করতে দেয় এবং এতে নিম্নলিখিত বৈশিষ্ট্যগুলি থাকে /etc/passwd:

fu:x:1002:1002:,,,:/home/fu:/bin/bash

তবে, এটি করছেন:

useradd fu --password bar --groups adm,cdrom,sudo,dip,plugdev,lpadmin --shell /bin/bash --create-home

তৈরি করে /etc/passwd

fu:x:1002:1002::/home/fu:/bin/bash

এবং আমাকে লগইন করতে দেয় না এবং যোগ করাও কোনওভাবেই --user-groupসহায়তা করে না ...

আমার যেমন প্রয়োজনuseradd (একটি ডকার স্ক্রিপ্টের জন্য) আমি কীভাবে এগিয়ে যেতে পারি?

পিএস আমি /usr/sbin/adduserইতিমধ্যে এক নজরে ছিলাম , তবে perlকোন পরামিতিগুলির সাথে adduserএকই কার্যকারিতা থাকতে হবে তা আমার কাছে স্পষ্ট নয়useradd

উত্তর:


2

সমস্যা # 1:

ব্যবহারকারীর প্রবেশের কমাগুলি হ'ল /etc/passwd"পুরো নাম", "রুম নম্বর", "ওয়ার্ক ফোন" এবং "হোম ফোন" এর মতো ব্যবহারকারীর তথ্যের জন্য কেবল ক্ষেত্রের বিভাজক, সুতরাং আমি অনুমান করি যে এগুলি বাদ দিয়ে ফাঁকা রাখার মতোই ক্ষেত্র;

সমস্যা # 2:

এর জন্য বিশ্বস্ত manপৃষ্ঠা থেকেuseradd :

[...]
        -পি , - পাসওয়ার্ড পাসওয়ার্ড
           এনক্রিপ্ট করা পাসওয়ার্ড, যেমন ক্রিপ্ট (3) দ্বারা ফেরত । ডিফল্ট হয়
           পাসওয়ার্ড অক্ষম করুন।

           দ্রষ্টব্য: এই বিকল্পটি প্রস্তাবিত নয় কারণ পাসওয়ার্ড (বা
           এনক্রিপ্ট করা পাসওয়ার্ড) প্রক্রিয়াগুলি তালিকাভুক্ত ব্যবহারকারীদের দ্বারা দৃশ্যমান হবে।

           আপনার নিশ্চিত হওয়া উচিত যে পাসওয়ার্ডটি সিস্টেমের পাসওয়ার্ডকে সম্মান করে
           নীতি।
[...]

এর অর্থ যে পাসওয়ার্ডটি প্রত্যাশিত useraddতা হ'ল একটি এনক্রিপ্ট করা পাসওয়ার্ড (এর মাধ্যমে আমার পরীক্ষাটি বিচার করে SHA-512): আসলে -pবিকল্পটির আর্গুমেন্ট হিসাবে সরানো স্ট্রিংটি সরল পাঠ্য হিসাবে লেখা হয় /etc/shadowএবং লগইন করার পরে এখানে থেকে পাসওয়ার্ডগুলি এনক্রিপ্ট করা হবে বলে আশা করা হয়।

সুতরাং সবচেয়ে সরল সমাধান হ'ল passwdপরিবর্তে ব্যবহার করে পাসওয়ার্ড সেট করা:

echo -e 'bar\nbar' | passwd fu

যদি আপনি ব্যবহার করতে না পারেন passwd, -pবিকল্পটির আর্গুমেন্ট হিসাবে সাব-শেলের এই অজগর কমান্ডটি করা উচিত:

python -c 'import crypt; print crypt.crypt("bar", "$6$'$(< /dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)'")'

কমান্ড বিচ্ছেদ :

python -c 'import crypt; print crypt.crypt("<string>", "$<encryption_type>$<encryption_salt>")'

* <স্ট্রিং> = এনক্রিপ্ট করার স্ট্রিং; <এনক্রিপশন_ টাইপ> = এনক্রিপশন ধরণ; <এনক্রিপশন_সাল্ট> = এনক্রিপশন লবণ

লাইব্রেরি কল ব্যবহার <string>করে <encryption type>এবং <encryption_salt>ব্যবহার করে ক্রিপ্ট করেcrypt()

এক্ষেত্রে:

  • <string>= bar, এনক্রিপ্ট করার জন্য পাসওয়ার্ড
  • <encryption_type>= 6,SHA-512
  • <encryption_salt>= < /dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32, এলোমেলো 32 অক্ষরের স্ট্রিং

সুতরাং একটি sudo useradd fu --password 'python print crypt.crypt("bar", "$6$'$(< /dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)'")' --user-group --groups adm,cdrom,sudo,dip,plugdev,lpadmin --comment "fu,,," --shell /bin/bash --create-homeএকটি ওয়ানলাইনার মধ্যে কৌশল করা উচিত? (যেখানে একক উদ্ধৃতিগুলি ব্যাক-
টিকগুলি

@ ফ্যাবি ঠিক তা নয়, পাইথন কমান্ডটি একটি সাব-শেলের মধ্যে কার্যকর করা উচিত:sudo useradd fu --password $(python -c 'import crypt; print crypt.crypt("bar", "$6$'$(< /dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)'")') --user-group --groups adm,cdrom,sudo,dip,plugdev,lpadmin --comment "fu,,," --shell /bin/bash --create-home
কোস

হাহ! কেবলমাত্র আমি লক্ষ্য করেছি আমি কেবল গ্রহণ করেছি এবং কখনই উত্সাহিত হয়নি।
ফব্বি

2

এটি হয়ত কাজ করছে না কারণ আপনার পাসওয়ার্ড barএনক্রিপ্ট করা হয়নি। useraddরাষ্ট্রের জন্য ম্যান পেজ :

The encrypted password, as returned by crypt(3).

স্ট্যাক ওভারফ্লোতে এই প্রশ্নের কয়েকটি উত্তর রয়েছে যা আপনাকে আপনার স্ক্রিপ্টে সহায়তা করতে পারে, কারণ প্রশ্নটি একটি পাসওয়ার্ড সহ ব্যবহারকারীকে যুক্ত করার বিষয়ে জিজ্ঞাসা করে।

ব্যবহারকারীর মন্তব্যের ভিত্তিতে সেই প্রশ্নের উপর গৃহীত উত্তর আপডেট না হওয়ায় আমি এখানে সমাধানটি পুনরুত্পাদন করব:

echo -e "bar\nbar\n" | passwd fu

যে কমান্ড একটি ব্যবহারকারীর জন্য পাসওয়ার্ড পরিবর্তন করতে হবে fuকরতে bar। অবশ্যই ব্যবহারকারীরড ব্যবহার করে অবশ্যই তৈরি করা দরকার।

chpasswdদ্বিতীয় সমাধানটি ব্যবহার করা হবে , যেমন দ্বিতীয় সর্বোচ্চ ভোট দেওয়া উত্তরটি পরামর্শ দেয়:

echo fu:bar | chpasswd

আমি এই উভয় সমাধান পরীক্ষা করেছি, এবং তারা উভয়ই কাজ করে।

adduserতথ্য সরানোর জন্য সম্পাদিত এবং লিঙ্কিত প্রশ্ন থেকে কোন পরামর্শ আসলে কাজ করে তা নির্দেশ করে।


এসও নিবন্ধের লিঙ্কটি আমার সমস্যার সমাধান করে না। বাকী সমস্তটি সম্পর্কে adduser, যা আমি ব্যবহার করতে পারি না , সুতরাং আপনি যদি নিজের উত্তরটি সম্পাদনা করেন এবং কোনও সমাধান নিয়ে এসে উত্তর দেওয়ার আগে পরীক্ষা করেন তবে এখন যে ডাউনটি পেয়েছেন তার পরিবর্তে আমি আপনার উত্তরটি গ্রহণ করব এবং আপলোড করব will বিকল্পভাবে, আপনি নিজের উত্তরটি মুছতে পারেন কারণ এটি স্বয়ংক্রিয়ভাবে নেতিবাচক খ্যাতি পয়েন্টগুলি বিপরীত করবে ...
ফ্যাবি

আপনার সম্পাদনাগুলির আগে, এটি পরিষ্কার ছিল না যে আপনি ব্যবহার করতে পারবেন নাadduser , কেবল এটির জন্য আপনাকে এটি প্রয়োজন ছিল (যার অর্থ এই নয় যে আপনি এটি ব্যবহার করতে পারবেন না )। এছাড়াও, যথেষ্ট ন্যায্য, প্রতিক্রিয়ার ভিত্তিতে স্বীকৃত উত্তর আপডেট করা হয়নি। আমি কী উত্তর দিয়েছি তা পরিষ্কারভাবে নির্দেশ করতে আমার উত্তর আপডেট করেছি। এবং হ্যাঁ, আমি এগুলি পরীক্ষা করেছিলাম, যেমন আমি আগে তাদের পরীক্ষা করেছিলাম।
yzhernand

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