منبع اصلی نوشتار زیر در این لینک قرار دارد

پیدا کردن تمام گروه های یک کاربر در لینوکس

هر کاربر لینوکس حتما باید عضو یک گروه باشد که این گروه را گروه اصلی می گویند. زمانی که از دستور useradd یا ابزارهای گرافیکی کاربری را ایجاد می کنید می توانید گروه اصلی را انتخاب کنید ولی اگر انتخاب نکرده باشید به صورت پیشفرض کاربر عضو یک گروه اصلی که معمولا همنام خود کاربر است می شود. در برخی از توزیع ها نیز کاربر عضو گروه wheel می شود.

برای پیدا کردن نام تمام گروه هایی کاربر عضو آن است می توان از دستور groups استفاده کرد. این دستور نام کاربری را دریافت می کند و در خروجی فهرست تمام گروه های عضو را نشان می دهد. اگر نام کاربری استفاده نشود، groups لیست تمام گروه های کاربر فعلی را نشان می دهد.

goups amirnami
groups

اما از دستور id -Gn نیز می توان استفاده کرد. این دستور بدون تعیین کردن نام کاربری فهرست تمام گروه های کاربر فعلی را نشان می دهد. همچنین می توان نام کاربری را نیز به صورت id USERNAME -Gn تعیین کرد. G- شناسه گروه (Group ID یا GID) را نشان می دهد و n- برای تبدیل اعداد شناسه گروه به نام معادل استفاده می شود.

id amirnami -Gn
id -Gn

اما می توان از شل اسکریپت و خواندن فایل etc/passwd/ نیز استفاده کرد. دستور ۱ فهرستی از تمام گروه های هر یک از کاربران را نشان می دهد.

for user in $(awk -F: '{print $1}' /etc/passwd); do groups $user; done

دستور ۱

اما در خروجی آن نام کاربر چاپ نمی شود. راهکار دیگر استفاده از دستورهای getent و id است. دستور ۲ نام کاربری و تمامی گروه هایی که عضو آن است را نشان می دهد.

for user in $(getent passwd | cut -d: -f1); do
    printf "%s: %s\n" $user "$(id -nG $user)"
done

دستور ۲

root: root bin daemon sys adm disk wheel log
bin: bin daemon sys
daemon: daemon bin adm lp
mail: mail
ftp: ftp
http: http
uuidd: uuidd
dbus: dbus
nobody: nobody
systemd-journal-gateway: systemd-journal-gateway
systemd-timesync: systemd-timesync
systemd-network: systemd-network
systemd-bus-proxy: systemd-bus-proxy
systemd-resolve: systemd-resolve
systemd-coredump: systemd-coredump
systemd-journal-upload: systemd-journal-upload
systemd-journal-remote: systemd-journal-remote
rpc: rpc
dnsmasq: dnsmasq
nbd: nbd
avahi: avahi
polkitd: polkitd proc
ntp: ntp
sddm: sddm
colord: colord
mysql: mysql
git: git
usbmux: usbmux
rtkit: rtkit
mpd: mpd audio
amirnami: amirnami disk lp wheel network video optical storage scanner power autologin vboxusers
nm-openconnect: nm-openconnect
ceph: ceph
nm-openvpn: nm-openvpn
postgres: postgres
gdm: gdm

خروجی ۱

خروجی ۱ مربوط به اجرای دستور ۲ است. برای ارسال این خروجی به مدیر (کاربر root) نیز می توانید خروجی را در یک فایل ذخیره کنید و سپس از دستور زیر برای ارسال ایمیل استفاده کنید.

mail -s "User Groups" EMAIL@ADDRESS < output_filename

در دستور بالا محتوای فایلی که خروجی ۱ در آن ذخیره شده است را به آدرس ایمیل دلخواه ارسال می کنید.



برچسب ها : , , , , , ,