লিনাক্সের মধ্যে কোন গ্রুপে কোন ব্যবহারকারী রয়েছে তা আমি কীভাবে জানতে পারি?


67

আমি সম্প্রতি নতুন ব্যবহারকারী তৈরি করেছি এবং তাদের নির্দিষ্ট গোষ্ঠীতে নির্ধারিত করেছি। আমি ভাবছিলাম যে কোনও কমান্ড রয়েছে যা একটি নির্দিষ্ট গোষ্ঠীতে নিযুক্ত সমস্ত ব্যবহারকারীকে দেখায়? আমি 'গোষ্ঠী' কমান্ডটি ব্যবহার করার চেষ্টা করেছি তবে যখনই আমি এটি ব্যবহার করি এটি 'গোষ্ঠী: পাওয়া যায় নি' বলে


3
এটাই groupsহুকুম। লিনাক্সে এটি না থাকার সম্ভাবনা কম, কারণ এটি কোর্টিলের অংশ।
টমাস ডিকি

@ থমাসডিকি তবে এটি সম্ভব - কিছু নাসের মতো।
থমাস ডাব্লু।

উত্তর:


43

আপনি গ্রেপ ব্যবহার করতে পারেন:

grep '^group_name_here:' /etc/group

এটি কেবলমাত্র পরিপূরক গোষ্ঠী সদস্যতার তালিকাবদ্ধ করে, এই গ্রুপটি তাদের প্রাথমিক গোষ্ঠী হিসাবে নেই। এবং এটি কেবল স্থানীয় গ্রুপগুলি সন্ধান করে, এলডিএপি-র মতো কোনও নেটওয়ার্ক পরিষেবা থেকে গোষ্ঠীগুলি নয়।


6
কেন্দ্রীভূত প্রমাণীকরণের সাথে কাজ করে না।
ম্যাক্সিম এগারুশকিন

1
এটি প্রাথমিক / মাধ্যমিক পার্থক্যের কারণে সম্ভবত বিভ্রান্তিকর হতে পারে। আমি মনে করি এটা পক্ষে এড়িয়ে চলা উচিত sudo lid -g {group}.আমি ব্যবস্থা আছে যেখানে এই উত্তরটি তালিকা 8 যেহেতু একদল ব্যবহারকারীদের sudo lid -g {group}তালিকা 10.
DKroot

getentনীচে @ মুরে জেনসেনের উত্তর দেখুন
স্ক্রুতারি

83

আমি জেন্টেন্ট কমান্ড ব্যবহার করতে পছন্দ করি ...

যেহেতু জেন্টেন্ট সিস্টেম হিসাবে একই নাম পরিষেবাটি ব্যবহার করে, তাই জেন্টেন্ট সমস্ত তথ্য প্রদর্শন করবে, এলডিএপি-র মতো নেটওয়ার্ক তথ্য উত্স থেকে প্রাপ্ত সমস্ত তথ্য including

একটি গোষ্ঠীর জন্য, আপনার নিম্নলিখিত ব্যবহার করা উচিত ...

getent group name_of_group

যেখানে নাম_ও_গোষ্ঠীটি যে গোষ্ঠীটি সন্ধান করতে চান তার সাথে প্রতিস্থাপন করা হবে। দ্রষ্টব্য যে এটি কেবলমাত্র পরিপূরক গোষ্ঠী সদস্যতা দেয়, এতে এই গোষ্ঠীটির ব্যবহারকারীদের তাদের প্রাথমিক গোষ্ঠী হিসাবে অন্তর্ভুক্ত করা হয় না।

আপনি করতে পারেন এমন আরও অনেকগুলি লুকোচুরি রয়েছে ... passwdঅন্য দরকারী হ'ল, আপনাকে প্রাথমিক গোষ্ঠীগুলির তালিকা তৈরি করতে হবে।


1
যদি আপনি প্রশাসক না হন এবং গ্রুপের তথ্য অন্য সার্ভারে সঞ্চয় করা থাকে তবে অন্য উত্তরগুলি প্রয়োগ হয় না।
আন্দ্রেস আলকারাজ

1
এটি প্রাথমিক / মাধ্যমিক পার্থক্যের কারণে সম্ভবত বিভ্রান্তিকর হতে পারে। আমি মনে করি এটা পক্ষে এড়িয়ে চলা উচিত sudo lid -g {group}.আমি ব্যবস্থা আছে যেখানে এই উত্তরটি তালিকা 8 যেহেতু একদল ব্যবহারকারীদের sudo lid -g {group}তালিকা 10.
DKroot

12

করা সহজ groups [username]

আপনি যদি সমস্ত স্থানীয় ব্যবহারকারী এবং তাদের স্থানীয় গোষ্ঠীগুলির তালিকা করতে চান তবে আপনি এটি করতে পারেন

cat /etc/passwd | awk -F':' '{ print $1}' | xargs -n1 groups

যদি আপনি "গোষ্ঠীগুলি: কমান্ডটি পাওয়া যায় নি" পান তবে আপনার পথটি পুনরায় সেট করার জন্য সম্ভবত আপনি আপনার পরিবেশগত পথটি খারাপের জন্য সম্পাদনা করেছেন is PATH=$(getconf PATH)


এটি কোনও নির্দিষ্ট গোষ্ঠীর জন্য কাজ করা হয় যদি | grep {group}যোগ করা হয় এবং সঠিক উত্তর দেয় তবে তার বিপরীতে getent group name_of_groupবাgrep '^group_name_here:' /etc/group
DKroot

1
পরিবর্তে cat /etc/passwd, আপনার ব্যবহার করা উচিত gentent passwdযাতে এনআইএস / এলডিএপ ব্যবহারকারীরা এখনও তালিকাবদ্ধ থাকে। একমাত্র অপূর্ণতা এটি বেশ কিছুটা সময় নিতে পারে।
ব্রায়ান মিন্টন

7
groupmems -g গ্রুপ নাম -l

নামী গোষ্ঠীর সমস্ত ব্যবহারকারীকে তালিকাবদ্ধ করে।


নোট যে groupmemsবেশিরভাগ লিনাক্স ডিস্ট্রোজে ব্যবহৃত ছায়া ব্যবহারগুলির অংশ, যদিও groupmemsবর্তমানে ডিবান এবং ডেরিভেটিভ থেকে অনুপস্থিত (একটি বাগ এখন ঠিক করা হয়েছে তবে এখনও কোনও রিলিজে অন্তর্ভুক্ত করা হয়নি (নভেম্বর
২০১

2
এছাড়াও নোট করুন যে groupmemsকেবলমাত্র গ্রুপগুলিতে /etc/group(এলডিএপি বা অন্যান্য ব্যবহারকারীর ডাটাবেজে নয়) এর সাথে ডিল করে এবং সুপারিশকারী সুবিধাগুলি প্রয়োজন কারণ এটি / ইত্যাদি / জি্যাশডো খোলার চেষ্টা করে।
স্টাফেন চেজেলাস

উপরে বর্ণিত সতর্কতা সত্ত্বেও, এই কমান্ডটি কিছু নির্দিষ্ট পরিস্থিতিতে উপযুক্ত কারণ এটির আউটপুট (যেমন cutএবং বন্ধুরা) অতিরিক্ত পার্সিংয়ের প্রয়োজন হয় না ।
বনহ

এটি প্রাথমিক / মাধ্যমিক পার্থক্যের কারণে সম্ভবত বিভ্রান্তিকর হতে পারে। আমি মনে করি এটি পক্ষে এড়ানো উচিত sudo lid -g {group}। আমার একটি সিস্টেম রয়েছে যেখানে এই উত্তরটি একটি গ্রুপে 8 জন ব্যবহারকারীকে তালিকাবদ্ধ করে যেখানে sudo lid -g {group}10 টি তালিকাভুক্ত করেছে
DKroot

5

আমি অবাক হয়ে কেউ উল্লেখ করেনি

id <user>

এই কমান্ডটি ব্যবহারকারীদের গ্রুপগুলির একটি তালিকা দেবে।


3
কারণ - শিরোনামের বিপরীতে - প্রশ্নকর্তা কোনও নির্দিষ্ট গ্রুপের মধ্যে থাকা ব্যবহারকারীদের জানতে চেয়েছিলেন, প্রদত্ত ব্যবহারকারীর গোষ্ঠীগুলি নয়, যেমন প্রশ্নের মধ্যে রয়েছে। বিষয়গুলির সাথে মেলে আমি এখন শিরোনামটি পুনরায় জমা করেছি।
দুবু

আআআআআহ, আমি দেখছি। আমার প্রশ্নের পাঠ্যটি আরও ভাল করে পড়া উচিত ছিল। ধন্যবাদ।
অ্যালেক্স

3

groupsকমান্ড একটি ব্যবহারকারীর জন্য গ্রুপ সদস্যতা প্রিন্ট করে। আপনি lidগ্রুপে ব্যবহারকারীদের তালিকাবদ্ধ করতে কমান্ডটি ব্যবহার করতে পারেন :

# lid -g <groupname>

4
lidLibuser এর অংশ, যা বহু বিতরণে ডিফল্টরূপে ইনস্টল করা হয় না।
ক্রিস ডাউন

2

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

ওপি যেমন ব্যবহার করতে পারত groups, উদাহরণস্বরূপ:

for name in $(cut -d: -f1 /etc/passwd);do groups $name|grep -w sudo|awk '{print $1;}';done

একটিতে গ্রুপের নামটির জন্য উত্তরের প্রস্তাব দেওয়া হয়েছে /etc/group। কখনও কখনও যে হিসাবে কাজ করে।

গ্রেপের কিছুটা উন্নত ব্যবহারের বাক্য গঠনটি আমলে নেয় /etc/group:

group_name:password:GID:user_list

যাতে প্রথম কোলনের আগের অংশটি একটি বৈধ গ্রুপ-নাম। সিনট্যাক্স বিবেচনা না করে একটি সরল গ্রেপ ফাইল থেকে বিভ্রান্তিকর মিলগুলি তুলতে পারে (এবং করবে)। গ্রেপ ম্যাচটি ঠিক কী প্রয়োজন তা তৈরি করতে নিয়মিত এক্সপ্রেশন ব্যবহার করুন:

grep -E '^users:' /etc/group |sed -e 's/^.*://'

বা শেল ভেরিয়েবল ব্যবহার:

grep -E '^'$groupname':' /etc/group |sed -e 's/^.*://'

তবে, এটি কেবলমাত্র ডিফল্ট গোষ্ঠীতে নয় এমনদের তালিকাবদ্ধ করে । যোগ করার জন্য , আপনার কাছ থেকে গ্রুপ-আইডি নম্বর আহরণের দ্বারা, পাসওয়ার্ড ফাইল, যেমন বিবেচনা করা প্রয়োজন /etc/group, এবং ব্যবহারকারীদের যার ডিফল্ট গ্রুপ থেকে ম্যাচ মুদ্রণ /etc/passwd, যেমন,

grp=$(awk -F: '$1 ~ /^users$/ {print $3; }' </etc/group)
awk -F: '$4 ~ /^'$grp'$/ { print $1; }' </etc/passwd

আপনি কেবল গ্রেপ এবং সেড ব্যবহার করে একই জিনিসটি করতে পারতেন তবে এটি awk ব্যবহারের চেয়ে বেশি কাজ।

ব্যবহার করে প্রস্তাবিত আরেকটি প্রস্তাবিত উত্তর getent, এটিও লিনাক্স মেশিনে থাকার সম্ভাবনা রয়েছে (দেবিয়ান সহ এটি জিএনইউ লিবিসি-র অংশ)। তবে এটির একটি দ্রুত চেক দেখায় এটি কেবল /etc/groupসামগ্রী সরবরাহ করে।

আমার (বেশিরভাগের মতো) ইনস্টল libusersবা lidইনস্টল নেই, তাই এটি ওপির শর্তাদি সন্তুষ্ট করে কিনা সে বিষয়ে আমি মন্তব্য করতে পারি না।

রয়েছে idপ্রোগ্রাম, যা গ্রুপ তথ্য দেয়। সম্ভাব্য উত্তর হিসাবে কেউ এর উপর প্রসারিত হতে পারে।


অথবা কেবলমাত্র sed -n "s/^$groupname:.*://p" /etc/groupতবে এটি এখনও ভুল ফলাফলগুলি রিপোর্ট করতে পারে যদি গ্রুপের নামটিতে আরই অপারেটর থাকে ( .উদাহরণস্বরূপ গ্রুপের নামগুলিতে অস্বাভাবিক নয়)।
স্টাফেন চেজেলাস

জিএনইউ getentএলডিএপি / এনআইএসকেও জিজ্ঞাসা করবে ... যদিও সম্ভবত গ্রুপ ডাটাবেসের জন্য গণনাটি স্পষ্টভাবে অক্ষম করা হবে না।
স্টাফেন চেজেলাস

মনে রাখবেন যে groupsএটি প্রদত্ত ব্যবহারকারীদের প্রদত্ত গোষ্ঠীর সদস্যদের তালিকার বিপরীতে সদস্য হিসাবে থাকা গ্রুপগুলিকে তালিকাভুক্ত করার সাথে সহায়তা করবে না।
স্টাফেন চেজেলাস

2

একটি যাদুমন্ত্র মত কাজ করে:

cut -d: -f1,4 /etc/passwd | grep $(getent group <groupname> | cut -d: -f3) | cut -d: -f1

@ARG- এর গৃহীত উত্তরের বিপরীতে, এই কমান্ডটি <groupname> ব্যবহারকারীদের তাদের প্রাথমিক গোষ্ঠী হিসাবে তালিকাভুক্ত করেছে
ভাভিক

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত
নিকোলে নেनोভ

1
আমি একমত নই এটি / ইত্যাদি / পাসডব্লুডে ব্যবহারকারীদের পড়ার কারণে, এটি অন্যান্য এনএসইভিচ মডিউলগুলির সাথে কাজ করবে না যা এলডিএপি ইত্যাদি ব্যবহার করে
ইভান ভুইকা

আমার পক্ষে সঠিকভাবে কাজ করেনি: আমি একটি গ্রুপে ৪ জন সদস্য পেয়েছি এবং sudo lid -g৮ টি তালিকার তালিকা পেয়েছি।
DKroot

2

কিছু আপনাকে লিউবার ('tellাকনা') বা সদস্যদের ('সদস্যদের জন্য') ইনস্টল করতে বলবে। তবে উত্তরটি তৈরি করে https://unix.stackexchange.com/a/349648/77959 যা লগইন গ্রুপের সদস্যপদ সহ এই সমস্যাটি পরিচালনা করেছিল আমি দেখতে পেয়েছি যে অন্য একটি গ্রুপ সেই স্ক্রিপ্টের আওতায় নেই। সুতরাং - উভয় পদ্ধতির একত্রিত করার জন্য এখানে সর্বোত্তম:

#!/bin/bash
if [ $# -eq 1 ]; then
        list_a=`cut -d: -f1,4 /etc/passwd | grep $(getent group "$1"| cut -d: -f3) | cut -d: -f1`
        list_b=`getent group "$1"|cut -d: -f4|sed 's/,/\n/g'`
        echo -e "$list_a\n$list_b"|grep -v "^$"|sort|uniq
else
        echo "pass me a group to find the members of"
fi

এটি জড়িত getentবা '^group_name_here:' /etc/group
গ্রেপের

0

ব্যবহারকারীর এই পরিবর্তনটি 3717722 পদ্ধতির একটি এনআইএস ডাটাবেসে গ্রুপ সদস্যদের তালিকাভুক্ত করবে:

ypcat passwd | cut -d: -f1,4 | grep $(getent group <groupname> | cut -d: -f3) | cut -d: -f1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.