উত্তর:
ভিত্তিতে gid
, সিস্টেম ব্যবহারকারী এবং পরিষেবা ব্যবহারকারীদের নীচে পৃথক করা যেতে পারে ,
/etc/passwd
কিছু অন্যান্য তথ্যের সাথে সমস্ত ব্যবহারকারীর তালিকা রয়েছে। পরিষেবা ব্যবহারকারী বা প্রকৃত ব্যবহারকারীদের gid
1000 এর চেয়ে বড় বা সমান। সুতরাং প্রকৃত ব্যবহারকারীর একটি তালিকা হিসাবে প্রাপ্ত করা যেতে পারে,
awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
এছাড়াও সিস্টেম ব্যবহারকারীদের একটি তালিকা ( gid
<1000) হিসাবে বের করা যেতে পারে,
awk -F: '($3<1000){print $1}' /etc/passwd
কিভাবে এটা কাজ করে
বিষয়বস্তুগুলি হ'ল /etc/passwd
,
root:x:0:0:root:/root:/bin/bash
...
souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash
এটির awk
সাথে ব্যবহার করার -F:
সময় :
ক্ষেত্র বিভাজক হিসাবে বিবেচনা করে কয়েকটি ক্ষেত্রের মধ্যে একটি রেখার বিষয়বস্তু বিভক্ত হয় । প্রথম ক্ষেত্রটিতে ব্যবহারকারীর নাম এবং তৃতীয় ক্ষেত্রটি রয়েছে gid
।
সুতরাং প্রকৃত ব্যবহারকারীদের সন্ধান করতে awk
কেবল তৃতীয় ক্ষেত্রের মান সমান 1000 এর চেয়ে বড় এবং এটি কোনও ব্যবহারকারী নয় এবং প্রথম ক্ষেত্রটি অর্থাৎ ব্যবহারকারীর নাম মুদ্রণ করে।
সমস্ত সিস্টেম ব্যবহারকারীদের তালিকাভুক্ত করতে এটি কেবল gid
1000 টির চেয়ে কম চেক করে এবং ব্যবহারকারীর নাম মুদ্রণ করে।
সম্পাদন করা
আপনি যেমন root
বাস্তব ব্যবহারকারী তালিকায় (জিড = 0) তালিকাবদ্ধ করতে চান । প্রকৃত ব্যবহারকারী হিসাবে হিসাবে পান
awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd
সিস্টেম ব্যবহারকারী হিসাবে হিসাবে পান
awk -F: '($3<1000)&&($1!="root"){print $1}' /etc/passwd
নোট আমি সর্বদা nobody
ব্যবহারকারীকে উপেক্ষা করছি ।
স্থানীয় (সিস্টেম ব্যবহারকারী) এর চেয়ে বেশি তালিকাবদ্ধ করতে লগইন করতে পারে এবং 1000 এরও কম হোমডির এবং জিআইডি থাকতে পারে
cat /etc/passwd | cut -d: -f 1,3,6 | grep "[1-9][0-9][0-9][0-9]" | grep "/home" | cut -d: -f1
অন্যান্য সমস্ত ব্যবহারকারীর তালিকা করতে: (প্রধানত সিস্টেম ব্যবহারকারী এবং 1000 এর চেয়ে কম জিআইডি রয়েছে):
cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]" | cut -d: -f1