هر کاربر لینوکس حتما باید عضو یک گروه باشد که این گروه را گروه اصلی می گویند. زمانی که از دستور 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
در دستور بالا محتوای فایلی که خروجی ۱ در آن ذخیره شده است را به آدرس ایمیل دلخواه ارسال می کنید.