Apa yang dimaksud GID?

14

Apa sebenarnya GID?

Saya telah mencarinya di Google dan inilah yang dikatakan linux.about.com :

Nomor identifikasi kelompok untuk proses tersebut. Nomor grup yang valid diberikan /etc/group, dan di bidang /etc/passwdfile GID . Ketika suatu proses dimulai, GID-nya diatur ke GID dari proses induknya.

  • Tapi apa artinya itu?

Izin yang saya miliki untuk folder saya saat ini di 0755

Saya mengerti jika saya mengatur UID untuk Pemilik 4755

Dan jika saya menetapkan GID Grup, itu akan menjadi 2755

Jika saya mengatur Bit Lengket untuk Orang Lain, itu akan menjadi 1755

  • Apakah penting untuk mengatur izin itu?
Kevdog777
sumber

Jawaban:

27

Setiap proses dalam UNIX-seperti sistem, seperti setiap file, memiliki pemilik (user, baik yang nyata atau sistem "pseudo-user", seperti daemon, bin, man, dll) dan pemilik grup. Pemilik grup untuk file pengguna biasanya adalah grup utama pengguna, dan dengan cara yang serupa, setiap proses yang Anda mulai biasanya dimiliki oleh ID pengguna Anda dan oleh ID grup utama Anda.

Namun, kadang-kadang, perlu memiliki hak yang lebih tinggi untuk menjalankan perintah tertentu, tetapi tidak diinginkan untuk memberikan hak administratif penuh. Misalnya, passwdperintah tersebut memerlukan akses ke file kata sandi bayangan sistem, sehingga dapat memperbarui kata sandi Anda. Jelas, Anda tidak ingin memberikan hak istimewa root setiap pengguna, hanya saja mereka dapat mengatur ulang kata sandi mereka - yang pasti akan menyebabkan kekacauan! Sebagai gantinya, perlu ada cara lain untuk memberikan sementara hak istimewa kepada pengguna untuk melakukan tugas tertentu. Itulah gunanya bit SETUID dan SETGID. Ini adalah cara untuk memberitahu kernel untuk sementara meningkatkan hak pengguna, selama eksekusi perintah yang ditandai. Biner SETUID akan dieksekusi dengan hak istimewa dari pemilik file yang dapat dieksekusi (biasanyaroot), dan biner SETGID akan dieksekusi dengan hak istimewa grup dari pemilik grup dari file yang dapat dieksekusi. Dalam kasus passwdperintah, yang merupakan milik rootdan SETUID, itu memungkinkan pengguna normal untuk secara langsung mempengaruhi isi file kata sandi, dengan cara yang terkendali dan dapat diprediksi, dengan mengeksekusi dengan hak akses root. Ada banyak lainnya SETUIDperintah pada UNIX-seperti sistem ( chsh, screen, ping, su, dll), yang semuanya memerlukan peningkatan hak untuk beroperasi dengan benar. Ada juga beberapa SETGIDprogram, di mana kernel mengubah sementara GID proses, untuk memungkinkan akses ke file log, dll. sendmailAdalah utilitas seperti itu.

Tujuan sticky bitmelayani sedikit berbeda. Penggunaannya yang paling umum adalah untuk memastikan bahwa hanya akun pengguna yang membuat file yang dapat menghapusnya. Pikirkan tentang /tmpdirektori. Ini memiliki izin yang sangat liberal, yang memungkinkan siapa pun untuk membuat file di sana. Ini bagus, dan memungkinkan proses pengguna untuk membuat file-file sementara ( screen, ssh, dll, keep informasi negara di /tmp). Untuk melindungi file temp pengguna, /tmpsetel bit lengket, sehingga hanya saya yang bisa menghapus file saya, dan hanya Anda yang bisa menghapus file Anda. Tentu saja, root dapat melakukan apa saja, tetapi kita harus berharap bahwa sysadmin tidak gila!

Untuk file normal (yaitu, untuk file yang tidak dapat dieksekusi), ada sedikit gunanya mengatur bit SETUID / SETGID. SETGID pada direktori pada beberapa sistem mengontrol pemilik grup default untuk file baru yang dibuat dalam direktori itu.

D_Bye
sumber
2
Ah luar biasa, terima kasih untuk itu. Jadi karena itu, Bit Lengket itu seperti izin pribadi (pengguna)? Jawaban itu sangat jelas dan mudah dipahami.
Kevdog777
1
Terima kasih! Bit sticky memberikan sedikit perlindungan untuk file dalam direktori dengan izin liberal. Ini tidak benar-benar spesifik untuk pengguna tertentu, karena tingkat perlindungan yang sama diberikan untuk semua file, tidak peduli siapa pemiliknya. Ini adalah cara untuk memungkinkan siapa saja membuat file, dan untuk memastikan hanya pemiliknya yang dapat menghancurkannya.
D_Bye
+1, D_bye, bisakah Anda membagikan contoh untuk bit setgid yang ditetapkan pada direktori. Terima kasih
Ankit
1
@Ankit Di bawah Solaris (dan hampir pasti yang lain - saya hanya menggunakan * BSD dan Solaris), jika bit setgid diatur pada direktori, setiap file baru yang dibuat di bawah direktori itu akan memiliki pemilik grup yang sama dengan direktori itu sendiri, dan tidak akan mewarisi grup utama (pengguna yang menjalankan) proses pembuatan.
D_Bye
3

Saya pikir maksud Anda bit "SGID" dari sebuah file, yang tidak sama dengan GID-nya.

Berikut adalah file khas di komputer saya (output ls-l):

-rw-r----- 1 bristol    users 16 2012-07-23 11:36 file.txt
abbbcccddd <-- See explanation below.

Jika Anda melihat 10 simbol pertama,

(a) -: Ini hanya file lama biasa (yang bertentangan dengan direktori, symlink, pipa dll ...)

(B) rw-: Pemilik dapat membaca dan menulis file ini, tetapi tidak menjalankannya. Pemiliknya adalah "bristol" seperti yang dapat Anda lihat di baris selanjutnya.

(c) r--: Anggota grup yang dimiliki file ini ("pengguna" dalam contoh) selain pemilik dapat membaca, tetapi tidak menulis atau mengeksekusi file ini.

(d) ---: Orang lain tidak dapat mengakses file ini sama sekali (kecuali tentu saja root).

Kolom GID adalah bidang yang memberi tahu Anda dari grup mana file ini dimiliki - dalam hal ini "pengguna".

Bidang yang mungkin Anda maksudkan, berdasarkan deskripsi Anda, adalah bit SGID, dan inilah penjelasan yang lebih baik daripada yang bisa saya kemukakan:

http://www.codecoffee.com/tipsforlinux/articles/028.html

Versi singkatnya adalah: jika file yang dapat dieksekusi memiliki bit SGID yang ditetapkan, maka siapa pun yang tidak ada dalam grup tetapi dapat mengeksekusi file ini untuk sementara mendapatkan hak grup ini ketika program sedang dieksekusi.

Misalnya, jika Anda memiliki grup "spool" yang dapat membaca dan menulis file di direktori print spooler, Anda tidak ingin sembarang orang mengacaukan direktori ini tetapi Anda ingin mereka dapat mencetak file, Anda dapat membuat beberapa program pencetakan atau skrip memiliki grup "spool" dan mengatur bit SGID dan ketika ada yang meluncurkan program ini, program sekarang dapat menulis ke direktori spooler tanpa orang yang menjalankannya mendapatkan akses penuh.

Bristol
sumber
Itu bagus, terima kasih untuk itu. Saya mengerti bagian izin, (bagian abbbcccddd) - tapi thatnk you :)
Kevdog777
Saya baru saja melihat izin saya di folder tmp ini drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp. Apa artinya abbbcccddt(huruf 't')? - Saya mengerti bahwa "d = direktori", "rwx = baca, tulis, jalankan"; tapi saya belum pernah melihat 't' di akhir sebelumnya. Apakah itu izin khusus untuk folder tmp?
Kevdog777
T kecil adalah "executable (x) dan sticky bit set". Lihat penjelasan di atas untuk alasan mengapa hal ini biasa di / tmp.
Bristol
3

GID adalah, seperti yang Anda temukan, nomor ID grup. Ini hanyalah cara yang mudah bagi OS untuk mengekspresikan grup (pengguna) yang terkait dengan sesuatu (suatu proses, file, dll.); alih-alih pengidentifikasi string yang berpotensi panjang, itu dapat dinyatakan sebagai nomor ukuran tetap.

Dalam nilai izin file empat digit oktal (misalnya, 0755), digit ketiga menentukan izin grup untuk file tersebut. Jika Anda menghilangkan digit pertama, itu adalah digit kedua yang menentukan izin grup. Perhatikan bahwa file dan direktori diperlakukan sama dalam hal ini, tetapi arti sebenarnya dari setiap bit izin agak tidak intuitif dalam kasus direktori.

Kedua konsep tersebut saling terkait, tetapi melayani tujuan yang sangat berbeda.

Adapun pertanyaan Anda "apakah penting untuk mengatur izin itu?"; mereka selalu diatur ke sesuatu , tetapi karena dalam kebanyakan kasus digit awal adalah 0 ("tidak ada yang istimewa"), ia cenderung dihilangkan untuk singkatnya. Apakah Anda perlu menentukan beberapa nilai lain sepenuhnya tergantung pada pola penggunaan untuk file atau direktori yang dimaksud.

sebuah CVn
sumber