Tautan berikut membahas konsep-konsep ini dalam konteks yang berbeda. Saya telah membaca definisi mereka, tetapi saya masih tidak dapat mengetahui bagaimana mereka terkait, atau jika beberapa dari mereka adalah sama.
- ID grup saat ini
- ID grup
- ID grup primer dan tambahan
- ID grup yang efektif dan nyata (juga di Wikipedia )
Inilah salah satu contoh sumber kebingungan saya:
Menurut man id
, jika saya mengetik id
, saya harus mendapatkan apa yang mereka sebut ID grup yang efektif dan nyata .
id uid=501(joe) gid=501(joe) groups=501(joe), 100(users)
Namun, Wikipedia mengacu pada hasil id
untuk membedakan antara ID primer dan tambahan . Selain itu, Wikipedia membedakan antara id kelompok utama vs tambahan dan efektif vs nyata . Bagaimana konsep-konsep ini berhubungan satu sama lain?
Juga, apakah benar ID grup primer = ID grup = ID grup saat ini ?
users
group
privileges
Amelio Vazquez-Reina
sumber
sumber
Jawaban:
Anda mencampur dua perbedaan di sini:
Perbedaan pertama mengacu pada bagaimana proses dijalankan . Biasanya, ketika Anda menjalankan perintah / program, itu dijalankan dengan hak istimewa pengguna Anda. Ini memiliki id grup nyata yang sama dengan grup utama pengguna Anda. Ini dapat diubah oleh suatu proses untuk melakukan beberapa tugas sebagai anggota dari kelompok khusus lain. Untuk melakukan itu, program menggunakan
setgid
fungsi yang mengubah id grup efektif mereka .Perbedaan kedua mengacu pada pengguna . Setiap pengguna memiliki grup utamanya . Hanya ada satu per pengguna dan disebut sebagai gid di output
id
perintah. Terlepas dari itu, setiap pengguna dapat menjadi bagian dari sejumlah kelompok tambahan - dan ini terdaftar di akhirid
output.[Sunting]:
Saya setuju bahwa halaman manualnya
id
agak menyesatkan di sini. Mungkin karena ini adalah versi deskripsi yang disediakan oleh dokumen info. Untuk melihatnya lebih jelas, jalankaninfo coreutils "id invocation"
(seperti yang disarankan di akhirid
manual).sumber
newgrp
perintah - lihat paragraf kedua dari manual di tautan pertama Anda!Tampilan kernel
Secara konseptual, ada tiga set kelompok yang prosesnya menjadi anggotanya. Setiap set adalah himpunan bagian dari yang berikut.
Untuk alasan historis, perangkat ini masing-masing:
Biasanya, suatu program memiliki ID pengguna tunggal. Jika executable memiliki set bit mode setuid , maka program memiliki dua ID pengguna: ID pengguna yang efektif adalah yang penting untuk izin file, batas per-pengguna, menentukan apakah proses berjalan sebagai root dan sebagainya. Proses ini dapat beralih antara ID pengguna yang efektif dan yang asli, jika tidak memerlukan hak istimewa ekstra sepanjang waktu, atau jika perlu beralih antara dua pengguna non-root.
Mekanisme yang sama ada untuk grup. Untuk grup, ada fitur tambahan yang tidak ada ketika sistem dirancang: proses dapat menjadi anggota dari sejumlah grup; ini adalah ID grup tambahan.
Tampilan basis data pengguna
Setelah pengguna diautentikasi, proses login beralih ke pengguna itu, tepat sebelum meluncurkan shell pengguna (atau program apa pun yang diminta pengguna). Tepat sebelum beralih ke pengguna yang diinginkan (dan kehilangan hak akses root), proses login beralih ke grup yang diinginkan.
Dalam versi unix awal, proses hanya bisa dalam satu kelompok. Grup ini adalah ID grup utama pengguna, disimpan dalam basis data pengguna (biasanya
/etc/passwd
). Grup ini menjadi ID grup nyata dan efektif dari shell atau program lain yang diluncurkan oleh proses login.Saat ini, suatu proses dapat dilakukan dalam beberapa grup, sehingga pengguna juga dapat berada dalam beberapa grup. Database grup (biasanya
/etc/group
) berisi daftar pengguna untuk setiap grup. Grup-grup ini menjadi ID grup tambahan untuk program yang diluncurkan oleh proses login.sumber
Banyak jawaban bagus lainnya di sini, tetapi jika Anda masih bingung seperti saya, inilah pendekatan lain. Harap dicatat bahwa saya hanya seorang siswa dalam hal ini, bukan seorang master , jadi jawaban ini adalah pekerjaan yang sedang berjalan, dan belum dianggap sebagai jawaban yang solid, setidaknya belum. Pertimbangkan jawaban ini v0.2.
Grup itu sederhana dan kompleks pada saat bersamaan.
Kunci ID yang digunakan di bawah:
Nama ID Pengguna dan Grup:
Bagaimana proses memperoleh ID:
1) Login mengautentikasi nama pengguna dan mengembalikan
LuID
danLgID
dari/etc/passwd
.2) Proses pertama mengatur efektif = nyata = masuk, yaitu
3) anak Forked mewarisi
RuID
,EuID
,RgID
, danEgID
, (& mungkin disimpan & supp), namun,Jika s u id bit (s) diatur pada file program baru untuk mengeksekusi, kemudian menetapkan efektif dari file:
EuID = FuID
Jika s g bit id (s) diatur pada file program baru untuk mengeksekusi, kemudian menetapkan efektif dari file:
EgID = FgID
Catatan: Opsi suid dan nosuid mount filesystem yang mendasarinya juga berlaku.
4a) Jika s u id digunakan untuk mengatur
EuID
, makaEuID
dapat sementara diubah (misalnya diturunkan dari root), tetapi pertama-tama nilai aslinya disimpanOuID
sehingga dapat dikembalikan nanti jika diinginkan.4b) Jika sg id digunakan untuk mengatur
EgID
, makaEgID
dapat sementara diubah (misalnya diturunkan dari root), tetapi pertama-tama nilai aslinya disimpanOgID
sehingga dapat dikembalikan nanti jika diinginkan.Saat file akan dibuat:
Untuk membuka untuk membaca:
Untuk membuka untuk menulis:
Untuk membuka eksekusi:
Ketika pesan perlu dikirim:
Referensi: kredensial pria
Ekstra: Ini adalah utilitas untuk mencetak file / etc / group Anda dengan cantik:
sumber