লিনাক্স: গ্রুপ বনাম গ্রুপের ব্যবহারকারীর নাম


12

কেউ কি জানে কেন লিনাক্স আদেশ দেয়

    groups 

এর চেয়ে আলাদা আউটপুট দেখায়

    groups username 

লগ ইন করা ব্যবহারকারী প্যারামিটার ব্যবহারকারীর নাম হিসাবে একই। উদাহরণ:

    thorsten@ubuntu:~/tmp$ groups
    thorsten adm dialout cdrom plugdev lpadmin admin sambashare
    thorsten@ubuntu:~/tmp$ groups thorsten
    thorsten : thorsten adm dialout cdrom plugdev nogroup lpadmin admin sambashare

1
এই প্রশ্নের অনেকগুলি নকল আছে যা আমি জানি না কোথা থেকে শুরু করব।
ব্যবহারকারী1686

উত্তর:


12

আপনি যখন চালনা করেন , তখন এটি প্রদত্ত ব্যবহারকারীর মধ্যে 1 টি দেখায় এবং (যদিও এটি এলডিএপি, এনআইএস বা অন্য কিছু হতে পারে 2 ) এবং আপনাকে পাওয়া সমস্ত গোষ্ঠী দেখায়।groups username/etc/passwd/etc/group

অন্যদিকে, যখন আপনি চালাতে groupsকোনো আর্গুমেন্ট ছাড়া কমান্ড, এটা শুধু সকল গোষ্ঠী তালিকাবদ্ধ এটি নিজে জন্যে 3 যা - অগত্যা কি তালিকাভুক্ত করা হয় হিসাবে একই /etc/group। (একটি ব্যাখ্যা জন্য নিচে দেখুন।) বস্তুতপক্ষে, শুধুমাত্র লুক-করানো /etc/groupগ্রুপ নামের GIDs অনুবাদ জন্যে।


প্রতিটি প্রক্রিয়ার শংসাপত্রগুলির একটি সেট থাকে, যা (অন্যান্য জিনিসের মধ্যে) একটি "রিয়েল গ্রুপ আইডি" (প্রাথমিক জিআইডি), একটি "কার্যকর গ্রুপ আইডি" (ইজিআইডি) এবং "পরিপূরক গ্রুপ" আইডিগুলির একটি তালিকা (মাধ্যমিক জিআইডি) থাকে। ডিফল্টরূপে, একটি প্রক্রিয়া তার অভিভাবকের কাছ থেকে তার শংসাপত্রগুলি উত্তরাধিকার সূত্রে পায়; তবে, রুট হিসাবে চলমান প্রক্রিয়াগুলি (ইউআইডি 0) বা CAP_SETUIDসক্ষমতা থাকা স্বেচ্ছাসেবী শংসাপত্রগুলি সেট করার অনুমতি দেয়।

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

এর পরে, লগইন প্রক্রিয়াটি আপনার অধিবেশন শুরুর আগে 4 টি শংসাপত্রগুলিতে স্যুইচ করে এবং এখন থেকে আপনি যে প্রতিটি প্রক্রিয়া শুরু করবেন তার যথাযথ ইউআইডি এবং জিআইডি থাকবে - সিস্টেমটি /etc/groupএখন 5 টি পরীক্ষা করে না এবং কোনও পরিবর্তনই গ্রহণ করবে না।

এইভাবে, /usr/bin/groupsপ্রক্রিয়াটি একই গ্রুপের অন্তর্গত হবে যখন আপনি লগ ইন করার সময় করেছিলেন , ডাটাবেস যা বলে আপনি তাতে না।

দ্রষ্টব্য: উপরের ব্যাখ্যাটি প্রায় সমস্ত ইউনিক্সের ক্ষেত্রেও প্রযোজ্য; উইন্ডোজ এনটি পরিবারের কাছে (ইউআইডি এবং জিআইডি ব্যতীত সবাইকে "এসআইডি" বলা হয়, কোনও "প্রাথমিক গ্রুপ" নেই, শংসাপত্রগুলিকে "প্রসেস টোকেন" বলা হয়, এবং CAP_SETUIDএটি সেক্রেটটোকেনপ্রাইভিলিজ বা SeTcbPrivilege ); এবং সম্ভবত বেশিরভাগ অন্যান্য বহু-ব্যবহারকারী অপারেটিং সিস্টেমের ক্ষেত্রে।


1 গেটপুইউড () এবং গেটগ্রুপলিস্ট () ব্যবহারকারীর গ্রুপগুলি অনুসন্ধান করতে ব্যবহৃত হয়।

2 লিনাক্সে, গ্লিবিসি এই তথ্যটি কোথায় সন্ধান করবে /etc/nsswitch.confতা নির্ধারণ করতে ব্যবহার করে ।

3 groups নিজস্ব শংসাপত্রগুলি পেতে getgid (), getegid () এবং getgroups () ব্যবহার করে।

4 সেটুইড (), সেটগিড (), আরগ্রোগস () এবং সম্পর্কিত।

5 ব্যতিক্রম, অবশ্যই, বিভিন্ন সরঞ্জাম যা উঁচু চালনা করুন (হয় setuid যেমন) su, sudo, sg, newgrp, pkexec, ইত্যাদি। এর অর্থ su $USERএটি আপডেট হওয়া গ্রুপ তালিকার সাথে একটি শেল স্প্যান করবে।


3

groupsনিজে থেকেই প্রক্রিয়াটির মালিকের বর্তমান গোষ্ঠী সদস্যপদ দেয় । groups <username>প্রক্রিয়া শুরু হওয়ার পরে বা প্রক্রিয়ার মালিক পরিবর্তিত হওয়ার পরে গ্রুপডিবি বদলেছে কিনা তার থেকে পৃথক হতে পারে।


groupsবর্তমান সদস্যপদ দেয় না , বরং লগইন প্রক্রিয়া (/ sbin / login, gdm, sshd) কল করার সময় এটি "বর্তমান" ছিল initgroups()
ব্যবহারকারী1686

1

কেবল কম্পিউটারটি পুনরায় চালু করুন এবং উভয় গ্রুপ এবং গোষ্ঠীর ব্যবহারকারীর একই ফলাফল দেওয়া উচিত।

এগুলি আলাদা হওয়ার কারণ ছিল আপনি নিজেকে একটি নতুন গ্রুপে যুক্ত করেছেন যা আপনি কম্পিউটার শুরু করার সময় সদস্য ছিলেন না a


আপনার অবশ্যই পুরো সিস্টেমটি রিবুট করার দরকার নেই! আপনাকে কেবলমাত্র একটি নতুন লগইন সেশন শুরু করতে হবে (যেমন একটি নতুন ভার্চুয়াল কনসোল ব্যবহার করে su, বর্তমান সেশনটি পুনরায় খোলা ব্যবহার করে )। আপনি newgrpনতুন গ্রুপ অন্তর্ভুক্ত প্রক্রিয়া শুরু করতে ব্যবহার করতে পারেন ।
পাবউক

1
আমি কেবল একটি সাধারণ দ্রুত সমাধান সমাধান দিয়েছিলাম যা প্রতিবার কার্যকর হবে। ইতিমধ্যে আরও অনেক উত্তর উত্তর রয়েছে যা ইতিমধ্যে এই প্রশ্নের উত্তর দেয়। কখনও কখনও লোকেরা যা চায়, এটি আমার ক্ষেত্রে যেমন ছিল তেমন সহজ সমাধান যা বেশ কয়েকটি পদক্ষেপ না নিয়েই কাজ করে।
অ্যালেক্স

0

দৌড়াও updatedb, দেখুন কোন পরিবর্তন আছে কিনা।

আমার ওএসএক্স মেশিনে যখন গ্রুপডিবি পরিবর্তন হয়নি তখন একই রকম:

albert-hotspot:~ sami$ groups sami
staff com.apple.access_screensharing com.apple.sharepoint.group.2 everyone _appstore localaccounts _appserverusr admin _appserveradm _lpadmin _lpoperator _developer
albert-hotspot:~ sami$ groups
staff com.apple.access_screensharing com.apple.sharepoint.group.2 everyone _appstore localaccounts _appserverusr admin _appserveradm _lpadmin _lpoperator _developer
albert-hotspot:~ sami$ 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.