পারমিটরটলগিন কি ইউআইডি বা ব্যবহারকারীর নামের উপর ভিত্তি করে?


17

ম্যান পেজ বলে যে PermitRootLogin

রুট ব্যবহার করে লগ ইন করতে পারে কিনা তা উল্লেখ করে ssh(1)

তবে, এই চেকটি ব্যবহারকারীর নাম ( "root") বা ইউআইডি ( 0) এর উপর ভিত্তি করে কিনা তা পরিষ্কার নয় ।

রুট অ্যাকাউন্টটির নতুন নামকরণ করা হলে কী হবে "admin"? হবে "admin"যখন লগ ইন করতে পারবেন PermitRootLogin=no?

যদি সেখানে uid = 0, অর্থাত সঙ্গে দুই অ্যাকাউন্ট নেই কি হবে "root"এবং "admin"? তাদের উভয় লগইন করতে সক্ষম হবে?

উত্তর:


16

দেখে মনে হচ্ছে চেকটি ইউআইডি-তে করা হয়েছে (পরীক্ষিত OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t 3 May 2016):

পারমিট রুটলগিন সেট করুন:

mtak@pdv1:~$ grep PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin no

নিশ্চিত হয়ে নিন যে নামের একটি ব্যবহারকারী adminইউআইডি 0 দিয়ে তৈরি হয়েছে:

mtak@pdv1:~$ sudo grep admin /etc/passwd
admin:x:0:0:Root User:/root:/bin/bash

ব্যবহারকারী সিস্টেমে লগ ইন করতে ব্যবহার করা যেতে পারে তা নিশ্চিত করুন:

mtak@pdv1:~$ su - admin
Password: 
root@pdv1:~# 

আমরা এসএসএইচ ব্যবহার করে সিস্টেমে লগ ইন করতে পারি কিনা তা পরীক্ষা করুন:

mtak@rubiks:~$ ssh admin@pdv1
admin@pdv1's password: 
Permission denied, please try again.

আমরা যদি পারমিট রুটলগিন চালু করি:

mtak@pdv1:~$ grep PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin yes

এবং লগ ইন করার চেষ্টা করুন:

mtak@rubiks:~$ ssh admin@pdv1
admin@pdv1's password: 
Linux pdv1 4.4.8-1-pve #1 SMP Tue May 17 16:14:08 CEST 2016 x86_64
Last login: Wed Aug 24 12:05:28 2016 from xxx
root@pdv1:~# 

আকর্ষণীয় যে ইউআইডি 0-র ব্যবহারকারীর নাম অ্যাডমিন থাকা সত্ত্বেও root@pdv1এটি শেলের মতো এখনও প্রদর্শিত হচ্ছে
Dezza

1
@ দেজা সম্ভবত অর্ডার লাইনগুলিতে / ইত্যাদি / পাসডাব্লুডে তালিকাভুক্ত হওয়ার উপর নির্ভর করে (যেমন: ইউআইডি = 0 দিয়ে প্রথম প্রবেশটি সন্ধান করুন)।
ট্রিপহাউন্ড

19

আমি অন্য উত্তরে @ এমটাকের পদ্ধতির প্রশংসা করি, তবে এই পরীক্ষাগুলি ছাড়াই উত্তরটি সুস্পষ্ট।

এটি ওপেনশের উত্স কোডটিতে UIDআপনি দেখতে পাচ্ছেন এর উপর ভিত্তি করে :

if (authctxt->pw->pw_uid == 0 &&
            !auth_root_allowed(auth_method))
authenticated = 0;

এছাড়াও প্রতিটি প্রমাণীকরণ পদ্ধতিতে এমন কিছু দেখায়

if (pw->pw_uid == 0 && options.permit_root_login != PERMIT_YES)
    ok = 0;

grepকোডটিতে আরও পরে, আপনি লক্ষ্য করতে পারেন, এর কোনও strcmp('root', pw->pw_name)বা কোনও বিকল্প নেই, যদি এটি আপনার পক্ষে যথেষ্ট হয়।


আপনি ইউআইডি 0-র চেকগুলি কীভাবে জানেন sshd ? আপনি আপনার বক্তব্য সমর্থন করতে কোন যুক্তি ব্যবহার করছেন না।
এমটাক

2
ইউনিক্স তার ইউআইডি = 0 দ্বারা একটি সুপারভাইজারকে সংজ্ঞায়িত করে। অন্য উদাহরণ হিসাবে একটি উত্স কোড হতে পারে openssh
জাকুজে

কার্নেলটি করে, তবে আপনি ধরে নিচ্ছেন যে ওপেনএসএসএইচও করেছে। উদাহরণস্বরূপ, অ্যাপাচি প্রাথমিক প্রমাণীকরণ রুট লগইনকেও অনুমতি দেয় না, তাই না? লিঙ্কটির জন্য আপনাকে ধন্যবাদ, আমি এটি অন্তর্ভুক্ত করার জন্য আপনার উত্তরটি পরিবর্তন করেছি।
এমটাক

1
যদি এটি অন্য কোনও উপায়ে এটি করে, এটি একটি সম্ভাব্য সুরক্ষা ঝুঁকি।
জাকুজে

3
@ বাকুরিউ এবং কেন এটি pwঅন্য কিছু থেকে প্রসঙ্গ তৈরি করবে । opensshকোড ওপেন সোর্স ও আগ্রহী পাঠকদের পুরো কোড মধ্য দিয়ে যেতে পারবেন না। একই বাক্য যে প্রমাণীকরণ পদ্ধতি কোড উপর সব আছে। আপনি যদি grepকোডটির মাধ্যমে থাকেন তবে আপনি কখনই খুঁজে পাবেন না strcmp('root', pw->pw_name), যদি এটি এটি আপনার জন্য আরও নির্ভরযোগ্য করে তোলে।
জাকুজে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.