Saya tidak yakin mengapa yang berikut memiliki output yang berbeda. Pemahaman saya adalah bahwa grup tanpa menentukan pengguna memberikan semua grup yang menjadi anggota.
jacob@box:~$ groups
jacob adm lp dialout cdrom plugdev lpadmin sambashare
jacob@box:~$ groups jacob
jacob : jacob
Juga apa artinya "grup dari proses saat ini" (dari halaman manual grup)? Di mana mereka mengatur?
CATATAN: Distro saya adalah Ubuntu.
Jawaban:
Itu bisa salah satu dari yang berikut:
Grup diatur dalam
/etc/group
.sumber
Sama seperti setiap proses memiliki ID pengguna nyata dan efektif saat ini, dan ID grup nyata dan efektif, itu juga memiliki daftar kelompok tambahan . Ini adalah angka (bukan nama) yang dikelola oleh kernel. Mereka diatur oleh proses login (atau manajer tampilan) ketika Anda login, seperti ID pengguna Anda. Mereka diwarisi oleh sub-proses, seperti ID pengguna Anda.
Ketika Anda menjalankan
groups
tanpa argumen, ia pada akhirnya memanggil getgroups () untuk mendapatkan daftar grup tambahan dari kernel. (Pada sistem Linux saya, / usr / bin / groups adalah skrip shell yang menjalankan "id -Gn", yang selanjutnya memanggil getgroups ().)Ketika Anda menjalankan
groups username
, perintah harus "menebak" apa yang akan kelompok tambahan ketika pengguna login. Biasanya ini dilakukan dengan membaca / etc / group atau berbicara dengan NIS atau berbicara dengan nscd atau ... Ya, ada banyak cara mungkin berhasil.Apa yang Anda amati mirip dengan mengetahui bahwa ID pengguna Anda saat ini dan entri Anda di / etc / passwd tidak konsisten. Ini berarti ada sesuatu yang sedikit aneh tentang konfigurasi sistem Anda, tetapi sulit untuk mengatakan apa tanpa penyelidikan lebih lanjut.
sumber
(Catatan:
groups
Perintah, meskipun masih berguna, sebagian besar digantikan oleh perintah id .)Seorang pengguna memiliki grup utama yang secara tradisional didefinisikan dalam file
/etc/passwd
file yang dengannya ia login, tetapi hari ini mungkin memiliki sumber lain. Dia juga dapat menjadi anggota kelompok tambahan, yang dikenal sebagai kelompok sekunder atau tambahan, secara tradisional ditentukan dalam file/etc/groups
, tetapi yang hari ini juga dapat berasal dari atau tersirat oleh sumber tambahan (seperti NIS, LDAP, SAMBA dll).Grup primer dan tambahan didefinisikan pada saat login dan tetap terkini . Namun, pengguna dapat setiap saat mengubah grup utama aktif saat ini dengan menggunakan
newgrp
perintah.Proses login menetapkan kelompok primer dan tambahan. Untuk yang selanjutnya, ia biasanya memanggil fungsi libc di grup , yang mengkompilasi daftar data kelompok tambahan dan meneruskannya ke fungsi setgroup , yang menetapkannya dalam konteks proses.
Sumber informasi
initgroups
adalah:The
groups
perintah menunjukkan kelompok sebagai saat ini diterapkan untuk pengguna Anda, dan daftar akan mulai dengan kelompok utama saat ini diikuti oleh kelompok-kelompok tambahan dari waktu login. Setiap perubahan pada sumber data dari setelah waktu login tidak tercermin dalam daftar yang ditampilkan.The
groups username
perintah meminta Linux untuk menghitung kelompok-kelompok untuk user tersebut, yang akan melakukan menggunakan terutama file/etc/password
dan/etc/groups
kemudian sumber tambahan. Ini akan mencerminkan situasi saat ini dari file sistem dan mungkin tidak sama dengan grup saat ini yang masih berlaku sejak saat login.The
groups username
perintah dapat memberikan hasil yang berbeda ketika tidak menggunakan semua sumber yang proses login yang digunakan untuk menghitung kelompok pelengkap, yang adalah apa yang tampaknya terjadi dalam kasus Anda. Sumber-sumber ini mungkin tidak dapat diakses dari login Anda atau mungkin tidak dikonsultasikan dengan perintah.Menggunakan
id username
perintah dapat memberikan hasil yang lebih baik, meskipun juga tidak dijamin selengkap proses login. Theid
perintah lebih baru daripada, dan dimaksudkan untuk menjadi lebih tepat daripada, yang lamagroups
perintah.Sementara
groups
perintah memberikan hasil yang tepat dan benar, Anda telah menunjukkan dengan baik bahwagroups username
perintah tidak dapat diandalkan untuk melakukan hal yang sama.Tanpa memeriksa kode sumber dari
groups
perintah, saya akan menebak bahwa implementasigroups username
perintah dalam analisis distribusi Linux Anda/etc/groups
, yang dalam kasus Anda tidak mengandung apa-apa, tetapi tidak digunakan/etc/nsswitch.conf
, dari mana datang semua kelompok tambahan Anda. Karena itu hanya tercantum nama grup utamajacob
,.Untuk informasi lebih lanjut, lihat:
sumber