Di / etc / group apa arti dari bidang kedua?

18

/etc/groupFile sampel berisi entri berikut:

root:*:0:
adm:!:4:logcheck
antoine:x:1000:

Halaman manual yang saya baca (Debian & OSX) mengatakan bidang kedua adalah menyimpan kata sandi grup. Karena jarang digunakan, tanda bintang *atau a xbiasanya ditempatkan di dalamnya daripada dibiarkan kosong.

The shadowhalaman manual juga mengatakan bahwa bidang kedua ini harus menyimpan hasil dari cryptfungsi. Dan jika hasil yang tidak valid disimpan (seperti *atau !) itu berarti kata sandi tidak dapat digunakan sebagai metode otentikasi.

Apakah itu berlaku untuk groupfile juga? Mengapa saya berakhir dengan 3 karakter berbeda di groupfile saya semua memiliki arti yang sama? Bisakah saya mengubah semua dengan aman *?

Tonin
sumber
Apa yang akan Anda capai dengan mengubah semuanya *?
jordanm
Saya hanya melihat !yang digunakan untuk satu grup pada server tunggal dari 10+ yang saat ini saya kelola. Demi kesederhanaan dari beberapa skrip yang memeriksa, selalu memiliki karakter yang sama di sana akan membersihkan semuanya. Nah, kalau itu sebenarnya berarti sama, tentu saja.
Tonin

Jawaban:

28

Anda berpikir bahwa !, *atau xmemiliki makna khusus di sini, dan karena itu khawatir bahwa mungkin ada perbedaan di antara mereka.

Faktanya adalah bahwa karakter-karakter ini dipilih hanya karena mereka menonjol, paling tidak di mata Barat. Karakter-karakter ini berkonotasi dengan nilai yang hilang, atau pengecualian, atau peringatan. Anda dapat menempatkan di boogaboogasini dan memiliki efek yang persis sama.

Ini karena cara penanganan kata sandi pada sistem tipe Unix. Ketika sistem menerima entri kata sandi, hash dan membandingkannya dengan hash yang disimpan. Karenanya, yang penting di sini adalah Anda menggunakan beberapa karakter atau urutan karakter yang tidak mungkin berupa hash kata sandi yang valid. (Ini juga tidak boleh termasuk titik dua, karena alasan yang jelas.)

Meskipun tidak ada perbedaan antara karakter ini dari perspektif OS inti, ada beberapa konvensi:

  • Ketika pwconv(8)program Linux melihatnya x, itu berarti "Saya sudah memindahkan hash kata sandi publik ini ke file shadow password."

    Itu bukan kasus penting dalam praktik karena hari-hari konversi ke (atau, surga membantu Anda, dari ) kata sandi bayangan ada di belakang kami sekarang.

  • Jika Anda menggunakan usermod -Latau passwd -luntuk mengunci pengguna, !memiliki arti khusus /etc/shadowkarena itulah konvensi untuk "hancurkan hash ini sehingga tidak cocok lagi."

    Menambahkan karakter lain ke hash yang disimpan akan memecahnya juga. Melanggar konvensi ini hanya mencegah usermod -Uatau passwd -udari membuka login pengguna. Sama juga benarnya, karena Anda menguncinya dengan tangan dengan menambahkan karakter palsu, Anda dapat membukanya dengan tangan dengan menghapusnya.

    Namun, semua itu hanya hal-hal sepele sehubungan dengan pertanyaan ini. Tidak ada groupmod -Latau gpasswd -l, karenanya tidak ada !konvensi dalam /etc/group.

    Lebih trivia: jika Anda sedang akan account kunci pengguna dengan tangan, Anda harus tinggal jauh dari [A-Za-z0-9/\]set, karena mereka adalah karakter hukum untuk hash. Itulah salah satu alasan mengapa usermodmenggunakan di !sini x.

Saya tidak melihat ada yang salah dengan menormalkan semua /etc/groupbidang kata sandi Anda , jika itu membuat Anda merasa lebih baik. Dengan melakukannya, Anda sudah mengatakan bahwa Anda senang meretas file-file ini dengan tangan, jadi Anda mungkin bukan orang yang menggunakan alat yang peduli dengan perbedaan itu. Apapun, perubahan itu tidak akan berpengaruh pada operasi sistem sehari-hari.

Warren Young
sumber
Terima kasih atas jawaban Anda yang sangat lengkap. Saat ini sedang menulis skrip untuk memeriksa pengguna dan grup di server saya, saya juga ingin tahu apakah ada arang atau arang lainnya yang ditemukan di bidang itu. Dari jawaban Anda, dan detail yang tidak terlalu sepele, saya memiliki pandangan yang jauh lebih baik tentang ini. Terima kasih lagi!
Tonin
1
Untuk scripting, Anda mungkin harus menelepon getpwent(3)dan berteman. Perl memiliki pembungkus untuk ini di perpustakaan standarnya, sebagaimana seharusnya bahasa scripting terfokus sysadmin Unix lainnya. Jika Anda menggunakan bahasa tanpa pembungkus seperti itu, ini akan menjadi alasan yang baik untuk berdagang. :)
Warren Young
Jika Anda masih membaca hal-hal yang hampir berusia enam tahun ... Terima kasih atas jawabannya, saya melihat beberapa alasan historis orang menggunakan hal-hal seperti xdan *untuk menandai bidang kata sandi "yang tidak digunakan". Hanya ingin tahu meskipun ... halaman manual mengatakan bahwa bidang tersebut mungkin dibiarkan kosong (apa yang di bidang basis data dapat disebut NULL - terutama di Oracle yang mendefinisikan NULL dan string kosong menjadi sama). Jadi, kembali ke / etc / group: mengapa penggunaan xatau !atau *, bukan hanya meninggalkan lapangan kosong? Dua titik dua berturut-turut menonjol sama seperti karakter-karakter ini. Tidak penting - hanya ingin tahu
mathguy
1
@ mathguy: Bidang kata sandi kosong berarti "tidak ada kata sandi," tidak sama dengan bidang kata sandi yang berisi karakter yang tidak pernah cocok dengan kata sandi asli. Karena sebagian besar sistem Unix tidak menggunakan kata sandi grup, ini adalah perbedaan tanpa perbedaan di sana, tetapi Anda tidak ingin mengembangkan kebiasaan yang akan membawa Anda ke masalah, seperti pada kebanyakan sistem Linux ' /etc/shadow. Juga, saya menolak anggapan bahwa usus besar ganda sama jelasnya. Cepat, ada berapa bidang kosong di sini :::::::? Sekarang berapa banyak :x:*:!:x:*::? Jumlah titik dua yang sama, tetapi jawaban yang berbeda, saya percaya.
Warren Young