আমি কীভাবে সমস্ত সুপার ব্যবহারকারীদের তালিকা করতে পারি?


86

আমি এমন সমস্ত ব্যবহারকারীর তালিকার জন্য একটি কমান্ড চাই যার কাছে মূল অধিকার রয়েছে?

মনে করুন আমি একজন সুডু ইউজার। আমি কীভাবে অন্য সমস্ত suorder ব্যবহারকারীদের জানতে পারি?


উত্তরটি এখানে: unix.stackexchange.com/a/140974/107084
এবি

1

@ জোকের দুর্দান্ত এবং কৌশলপূর্ণ
মেথাক্স

1
মনে রাখবেন যে কেবল জোকার এবং মুড়ুর উত্তর সঠিক, কেবল ব্যবহারকারী / গোষ্ঠী কনফাইটিং ফাইলগুলি পার্সিং করলে আপনাকে sudoকার অনুমতি নেই এবং যার কাছে নেই তা আপনাকে দেয় না .... যদি কোনও ব্যবহারকারী দলে থাকে sudoতবে sudoersফাইলটিতে sudoগ্রুপের জন্য উল্লিখিত কিছুই নেই , তারপর?
হিমাইল

উত্তর:


81

আপনি যদি কেবল sudoগ্রুপে তালিকাভুক্ত sudoers তালিকাবদ্ধ করতে চান , আমি মনে করি এটি করার সবচেয়ে ভাল উপায় হ'ল এই আদেশটি চালানো (যা এই উত্তরের অন্যান্য আদেশের তুলনায় কমপিট্যালি হালকা হওয়া উচিত ):

grep -Po '^sudo.+:\K.*$' /etc/group

মুরু দ্বারা মন্তব্যে যেমন পরামর্শ দেওয়া হয়েছে তেমন প্রবেশের বিন্যাসগুলি /etc/groupসহজেই পরিচালনা করতে পারে cut:

grep '^sudo:.*$' /etc/group | cut -d: -f4

এছাড়াও আবার মুুরুর মন্তব্যে পরামর্শ অনুসারে, কেউ getentএর জায়গায় ব্যবহার করতে পারেন grep:

getent group sudo | cut -d: -f4

এই আদেশগুলির মধ্যে যে sudoকোনওটি গ্রুপে তালিকাভুক্ত সমস্ত ব্যবহারকারীদের /etc/group(যদি থাকে) মুদ্রণ করবে ।

কমান্ড # 1 ব্রেকডাউন:

  • grep: একটি ফাইলের মধ্যে একটি রেজেক্সের সাথে মেলে সমস্ত লাইন মুদ্রণ করে
  • -P: grepপার্ল-শৈলীর রেগেক্সগুলি ম্যাচ তৈরি করে
  • o: grepকেবল মেলে স্ট্রিং প্রিন্ট করে
  • '^sudo.+:\K.*$': grepউদ্ধৃতিগুলির মধ্যে রেজেক্সকে ম্যাচ করে

রেজেক্স # 1 ব্রেকডাউন:

  • তালিকাভুক্ত নয় এমন কোনও চরিত্র বা অক্ষরের গোষ্ঠী চরিত্রের সাথে বা অক্ষরের সাথে মিল রয়েছে
  • ^: লাইন শুরু
  • .+: এক বা একাধিক অক্ষর
  • \K: আগের ম্যাচটি বাতিল করুন
  • .*: শূন্য বা আরও বেশি অক্ষর
  • $: বাক্যের শেষে

কমান্ড # 2 ব্রেকডাউন:

  • grep: একটি ফাইলের মধ্যে একটি রেজেক্সের সাথে মেলে সমস্ত লাইন মুদ্রণ করে
  • '^sudo.+:\K.*$': grepউদ্ধৃতিগুলির মধ্যে রেজেক্সকে ম্যাচ করে
  • cut: একটি ফাইলের প্রতিটি লাইন শুধুমাত্র একটি নির্দিষ্ট বিভাগ মুদ্রণ
  • -d:: ক্ষেত্রের সীমানা হিসাবে cutব্যাখ্যা করে:
  • -f4: cutকেবলমাত্র চতুর্থ ক্ষেত্রের মুদ্রণ করে

রেজেক্স # 2 ভাঙ্গন:

  • তালিকাভুক্ত নয় এমন কোনও চরিত্র বা অক্ষরের গোষ্ঠী চরিত্রের সাথে বা অক্ষরের সাথে মিল রয়েছে
  • ^: লাইন শুরু
  • .*: শূন্য বা আরও বেশি অক্ষর
  • $: বাক্যের শেষে

5
-1: এটি অন্যান্য ব্যবহারকারী বা গোষ্ঠীগুলিকে ধরে ফেলবে না যারা সূডোর সাথে যুক্ত হতে পারে, বা এলডিএপি এর মতো বাহ্যিক উত্স, এবং ছেলে এটি করা এটি কুৎসিত উপায়। getent group sudo | cut -d: -f4, বা awk ব্যবহার করুন, তবে যে কোনও উপায়ে মনে রাখবেন যে এই দলটি এবং পাসডাব্লুডের সাথে সীমানা নির্ধারণকারীগুলির সাথে স্থির ফর্ম্যাট রয়েছে।
مورু

@ মুরু ঠিক বলেছেন, আমি আমার উত্তর আপডেট করেছি
কোস

@ কোস এছাড়াও আপনার যেটি ব্যবহার করা উচিত তা নোট করুন getent group- আপনার গ্রিপ লাগবে না। getent group fooমত grep foo /etc/group, কিন্তু আরও সক্ষম।
মুড়ু

@ মুরু আমি একেবারেই জানতাম না, গণনাগতভাবে getentকীভাবে তুলনা করা যায় তা grepনিয়ে কোনও getentপ্রশ্ন করেছিলেন? এটি চালানো হালকা হবে getent?
কোস

1
এই উত্তরটি ধরে নিয়েছে যে সমস্ত sudoers sudoগ্রুপের সদস্য । কিছু ইউনিক্সের যেমন অন্য গ্রুপ রয়েছে wheel। @ মুরুর জবাবটিতে সমস্ত sudoers অন্তর্ভুক্ত থাকবে তারা কোন গ্রুপে থাকুক না কেন
সাইমন

30

এখানে যেমন বলা হয়েছে আমি একসাথে -l-Uবিকল্পগুলি একসাথে আবিষ্কারের সহজতম উপায়টি বিবেচনা করি , কেবল এটি টাইপ করুন usersযেমন: Johnতবে:

ব্যবহারকারীর sudoঅ্যাক্সেস থাকলে, এটি sudoনির্দিষ্ট ব্যবহারকারীর জন্য অ্যাক্সেসের স্তরটি মুদ্রণ করবে :

  sudo -l -U John
  User John may run the following commands on this host:
     (ALL : ALL) ALL

যদি ব্যবহারকারীটির সুডো অ্যাক্সেস না থাকে তবে এটি মুদ্রণ করবে যে কোনও লোকালহোস্টে চালানোর অনুমতি নেইsudo :

   sudo -l -U John
   User John is not allowed to run sudo on localhost.

2
আপনি সমস্ত স্বাভাবিক ব্যবহারকারীদের মাধ্যমে লুপ পারা এবং ব্যবহার করে সেগুলি বিস্তারিত আসতে ভালো কিছু : for u in $(awk -F'[/:]' '{if($3>=1000&&$3!=65534) print $1}' /etc/passwd); do sudo -lU "$u" ; done। দ্রুত হ্যাক কিছুই গ্যারান্টিযুক্ত :)
উইলফ

এটি একটি সক্রিয় ডিরেক্টরি সেটআপেও কাজ করে। উদাহরণস্বরূপ আপনি কোনও বিশেষ গোষ্ঠী থেকে কোনও ব্যবহারকারীকে বেছে নিতে এবং ব্যবহারকারীর উপর চেক করতে পারেন। আপনি যদি AD গ্রুপটিকে সঠিকভাবে কিছু যুক্ত করেন "%domain admins@mycompany.intra" ALL=(ALL) ALLতবে এটি কার্যকর হয়। আপনি আমাকে অনেক সময় সাশ্রয় করেছেন, কারণ আমি অজানা ছিলাম না স্থানীয় লোকদের জন্যও এটি কাজ করে।
অ্যাডামকালিস

14

যেমন ইতিমধ্যে বলা হয়েছে, উত্তরটি ইউনিক্স এবং লিনাক্স স্ট্যাক এক্সচেঞ্জে পাওয়া যাবে :

এটি দেখায় যে ব্যবহারকারী "সামল" হুইল গ্রুপের সদস্য।

$ getent group wheel
wheel:x:10:saml

পার্থক্যটি হ'ল উবুন্টুতে গ্রুপটি নয় wheel, তবে sudo(বা adminউবুন্টুর পুরানো সংস্করণে)। সুতরাং আদেশটি হয়ে যায়:

getent group sudo

এই সংখ্যাগুলির অর্থ কী? আমি করেছি geten groupএবং আমি বিভিন্ন সংখ্যা দেখতে পাই। আমার আসল প্রশ্নটি হল, কোনও ব্যবহারকারী কোনও সিস্টেম ব্যবহারকারী কিনা (কীভাবে এটি তৈরি করা হয় useradd -r) তা খুঁজে বের করবেন
শায়ান

9

sudo -l -Uপরীক্ষার উপর প্রসারণ করে , কেউ ব্যবহার করতে পারবেন getent passwdএমন ব্যবহারকারীদের নির্ধারণ করতে ব্যবহার করতে পারেন sudo। ব্যবহার getentআমাদের এক্সেস ব্যবহারকারী যারা উপস্থিত নাও হতে পারে করতে পারবেন passwd, এই ধরনের দ্বারা LDAP ব্যবহারকারী হিসাবে ফাইল:

getent passwd | cut -f1 -d: | sudo xargs -L1 sudo -l -U | grep -v 'not allowed'

sudo -U এমন কোনও শূন্য-বহির্গমন মানটি আমরা গ্রহণ করতে পারি না, যাতে আমরা আউটপুট গ্রেপিংয়ে কমে যাই।


এটি সর্বোত্তম উত্তর কারণ এটি ধরে নেই যে এখানে একটি গ্রুপ আছে sudo
সাইমন উডসাইড

3

বেশিরভাগ ইউনিক্স-মতো সিস্টেমে sudo কমান্ড রয়েছে এবং একটি sudo কনফিগারেশন ফাইল রয়েছে; মূল হিসাবে ভিসুডো চলমান:

:~$ sudo bash

অথবা

:~$ su

:~# visudo

প্রশাসককে sudo কমান্ড ব্যবহার করতে পারে এমন গোষ্ঠীগুলির সুবিধাগুলি পরীক্ষা এবং সংশোধন করার অনুমতি দেবে।

উবুন্টুর মতো ডেবিয়ান ভিত্তিক ইউনিক্স-মতো সিস্টেমগুলিতে, 4 এবং 27 টি গোষ্ঠীর সাধারণত সুডোর সুবিধাগুলির অ্যাক্সেসের অধিকার থাকে।

গোষ্ঠী 4 হ'ল প্রশাসক গোষ্ঠী (অ্যাডমিন) এবং গ্রুপ 27 হ'ল সুডো গিড।

ব্যবহারকারীদের বর্তমানে এই গোষ্ঠীগুলিতে কী কী অর্পিত হয়েছে তা দেখতে / ইত্যাদি / গ্রুপ ফাইলটিকে নীচের মত দেখানো হয়েছে:

:~$ cat /etc/group

উবুন্টুতে একটি নমুনা আউটপুট (তবে রেডহাট ভিত্তিক নয়, ওরাকল সোলারিস / সোলারিস ভিত্তিক, বা বিএসডি ভিত্তিক সিস্টেমগুলি) এগুলি পেতে পারে:

adm:x:4:youruser
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9: 
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:youruser,mybrother
floppy:x:25:
tape:x:26:
sudo:x:27:youruser,mybrother

যেমনটি আমরা বলতে পারি যে আপনার ব্যবহারকারী সিস্টেমটির প্রশাসক এবং গ্রুপ 4 এর সদস্য (অ্যাডমিস)। তবে আপনার ব্যবহারকারী এবং মাইবারথর উভয়ই গ্রুপ 27 এর সদস্য, যা গ্রুপ সুডোর সংখ্যার (গ্রুপ সনাক্তকরণ) সংখ্যা। সুতরাং মাইব্রোথরও মূল অধিকারগুলি (সুপার ব্যবহারকারী) অর্জন করতে পারে।

ফেডোরা এবং স্ল্যাকওয়ারের মতো অনেকগুলি লিনাক্স সিস্টেম, হুইল গ্রুপ জিড = 10 অন্তর্ভুক্ত করে। যা sudo কমান্ড প্রয়োগ করা হলে প্রশাসককে সুযোগ সুবিধা দেয় privile বিএসডি ভিত্তিক সিস্টেমে (যেমন ফ্রিবিএসডি), মূল ব্যবহারকারী হুইল গ্রুপের একটি সদস্য, যা জিড 0 হয়।

এছাড়াও আইডি কমান্ড ব্যবহার করে যে কোনও ব্যবহারকারীর সিস্টেমে অন্য পরিচিত ব্যবহারকারীর গ্রুপ তথ্য খুঁজে পেতে পারে।

উদাহরণ স্বরূপ:

:~$ id mybrother

নমুনা আউটপুট

uid=1001(mybrother) gid=1001(mybrother) groups=1001(mybrother),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)

আমি আপনাকে upvote বিশেষভাবে লগ ইন। নিখুঁত ব্যাখ্যা :)
ভিডর ভিস্ট্রাম

1

এই কমান্ডটি সুডো অধিকার সহ ব্যবহারকারীদের একটি তালিকা ফিরিয়ে দেয়:

awk -F ":" '{ system("groups " $1 " | grep -P \"[[:space:]]sudo([[:space:]]|$)\"") }' /etc/passwd

আউটপুট হল (উদাঃ):

<username> : <username> adm cdrom sudo dip plugdev lpadmin sambashare docker

যদি কেবল ব্যবহারকারীর নাম প্রদর্শিত হয়, তবে এই আদেশটি:

awk -F ":" '{ system("groups " $1 " | grep -P \"[[:space:]]sudo([[:space:]]|$)\"") }' | awk -F ":" '{ print $1 }' /etc/passwd

1
এটি sudoers চেয়ে বেশি ব্যবহারকারী দেখায়। এর কিছু পরিবর্তন দরকার
মেথাক্স

@ নিউউসার কি এটি আরও ভাল?
এবি

অনেক ভাল. জিডি কাজ
মেথাক্স


0

উল্লেখ না করায় বা না পাওয়া ছাড়াও vagrantব্যবহারকারী কীভাবে ব্যবহার করতে পারেন সে সম্পর্কে আমি স্তব্ধ হয়ে পড়েছিলাম ।sudo/etc/sudoers/etc/groupgetent

sudoনীচে সমস্ত ফাইল থেকে এন্ট্রি পড়তে/etc/sudoers.d/ সক্রিয় আউট । সুতরাং আপনি যদি সেই ডিরেক্টরিটি না দেখে থাকেন তবে বুঝতে পারবেন না যে আসলে কতজন ব্যবহারকারীর sudoঅ্যাক্সেস রয়েছে।

এই ধরনের sudoএক্সেস ব্যবহার জোকার এর উত্তর দ্বারা সনাক্ত করা যাবে sudo -l -U vagrantকিন্তু অন্য উত্তর এখানে যা সব পারেন উপর নির্ভর কোন দ্বারা সনাক্ত করা হয় না getentবা /etc/group

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.