Apakah akan selalu ada sepasang UID dan GID yang sama?

11

Saya harus mengubah kepemilikan file / direktori menggunakan. chmodSaya tahu hanya nama pengguna pemilik tetapi ingin mengubah nama grup default secara bersamaan. Pada tahap ini nama grup belum diputuskan jadi saya menempatkan sama dengan nama pengguna

chown -R username:username path_to_dir

Perintah dapat berjalan untuk berbagai sistem / pengguna, Jadi yang menjadi perhatian saya adalah, apakah linux selalu memiliki pasangan nama pengguna (pengguna): nama pengguna (grup) ATAU pada titik tertentu ini group_name default mungkin memberikan kesalahan.

Meskipun saya sudah mulai menemukan GID dari milik pengguna

id username | tr '(=)' ':' | awk -F: '{print $3}

Tapi untuk ilmu saya ingin tahu. Hingga saat ini analisis terhadap /etc/passwd /etc/groupsbeberapa pengguna seperti "shutdown, stop, sync, opeartor" semua pengguna telah terdaftar dalam grup juga.

EDIT 1: id -gn nama pengguna juga merupakan opsi yang baik

Akaks
sumber
3
Dalam contoh kedua, apakah Anda mencari id -g username?
user1686
1
Atau id -gn usernameyang mencetak nama, bukan ID.
Cristian Ciupitu
Di Linux, ada juga banyak "grup perangkat" - mis. disk, mem, kmem, audio, video, dll. - yang tidak memiliki pengguna yang sesuai.
Baard Kopperud

Jawaban:

20

Tidak ada jaminan bahwa nama grup = usernameakan ada.

Skenario yang paling umum adalah bahwa administrator sistem menggunakan Linux menciptakan pengguna baru secara lokal pada sistem tanpa spesifikasi eksplisit untuk grup, yang berarti bahwa grup akan dibuat secara default sama dengan nama pengguna dan menetapkan pengguna untuk memiliki GID default untuk grup yang baru dibuat.

Ini tidak berarti bahwa administrator sistem lain akan mengikuti prosedur ini dan jika Anda memasukkan layanan penamaan lain ke dalam campuran seperti NIS atau LDAP, grup yang ditugaskan untuk default kemungkinan tidak akan sama dengan GID baru dengan nama grup yang sama dengan nama pengguna.

Jadi Anda tidak harus mengandalkan fakta bahwa nama pengguna = groupname

Karlson
sumber
Mungkin juga tergantung tidak hanya pada kebijakan admin lokal, tetapi pada alat yang disertakan dengan berbagai distribusi. Banyak situs hanya akan menerima default yang digunakan oleh alat yang disediakan. Sementara sebagian besar distribusi yang saya gunakan selama bertahun-tahun dikirimkan dengan useraddskrip yang secara default membuat grup dengan nama yang sama, tidak semua memiliki. Terakhir kali saya menggunakannya (bertahun-tahun yang lalu), skrip kreasi pengguna slackware secara default memiliki satu grup usersyang semua anggotanya dijadikan anggota. docs.slackware.com/slackbook:users menyarankan ini mungkin masih menjadi masalahnya.
Jules
11

Meskipun idiom grup pribadi pengguna sering digunakan dalam sistem Linux modern, * nix sebenarnya tidak memerlukan grup primer unik untuk setiap pengguna, dan sangat mungkin bagi beberapa akun pengguna untuk berbagi grup utama yang umum seperti usersatau staff.

Bahkan dalam kasus di mana idiom UPG diberlakukan, tidak ada alasan khusus bahwa GID numerik dari UPG tertentu harus sama dengan UID pemilik, meskipun sebagian besar alat pembuatan akun akan mencoba untuk menetapkan UID dan GID secara berurutan, jika mereka mau. tersedia. ID dapat dengan mudah keluar dari langkah jika pengguna dan / atau kelompok perlu dibuat konsisten di beberapa sistem (misalnya untuk mengakomodasi pangsa NFS yang sudah ada sebelumnya).

Steeldriver
sumber
6

Seperti yang telah ditunjukkan oleh Ramesh secara default, UID dan GID sama untuk pengguna biasa. Namun ini tidak selalu terjadi sehingga Anda tidak boleh membuat asumsi seperti ini dapat mendatangkan malapetaka ke sistem Anda. Menetapkan izin file / folder ke grup yang salah agak berantakan, bukan?

Jadi, jawaban singkatnya: tidak, UID tidak selalu sama dengan GID. Namun, /etc/passwdberisi UID dan GID dari grup default di baris yang sama sehingga agak mudah untuk mengekstraknya.

Erathiel
sumber
"secara default UID dan GID adalah sama untuk pengguna biasa" - sebenarnya, pernyataan ini hanya benar jika Anda menambahkan "pada beberapa distribusi Linux populer". Ya, Ubuntu et al. lakukan dengan cara ini, tetapi saya akan menganggap grup "pengguna" yang umum lebih merupakan default.
jstarek
Ya, jika kami bertujuan 100% tepat maka Anda benar. Kita mungkin perlu menambahkan selusin lebih banyak 'seandainya' untuk tidak pernah melewatkan satu pun pengecualian. Semua distro berbasis Debian saya (LMDE, Crunchbang, Debian murni) berperilaku seperti ini dan satu CentOS 6.5 yang saya miliki juga. Pikiran Anda bahwa karena tidak perlu bagi saya untuk menambahkan sejumlah besar pengguna saya cenderung menggunakan adduserdaripada useradddan default di /etc/adduser.confditetapkan untuk USERGROUPS=yesmembuat grup untuk setiap pengguna baru. Kelompok-kelompok ini biasanya (tidak selalu,) memiliki GID yang sama dengan UID pengguna untuk siapa mereka diciptakan.
Erathiel
2

Dari tautan ini , saya melihat informasi di bawah ini.

ID pengguna (UID) adalah bilangan bulat positif unik yang ditetapkan oleh sistem operasi mirip-Unix untuk setiap pengguna. Setiap pengguna diidentifikasi ke sistem dengan UID-nya, dan nama pengguna umumnya hanya digunakan sebagai antarmuka untuk manusia.

UID disimpan, bersama dengan nama pengguna terkait dan informasi spesifik pengguna lainnya, dalam /etc/passwdfile, yang dapat dibaca dengan perintah cat sebagai berikut:

cat /etc/passwd

Bidang ketiga berisi UID, dan bidang keempat berisi ID grup (GID), yang secara default sama dengan UID untuk semua pengguna biasa.

EDIT

Namun, seperti yang ditunjukkan @Karlson, tidak benar bahwa UID akan sama dengan GID secara default.

Pernyataan ini benar hanya jika tidak ada grup biasa yang ditambahkan secara terpisah dan tidak ada grup yang secara eksplisit ditentukan pada setiap kreasi pengguna . Secara default gid untuk pengguna yang ditambahkan berikutnya = max(gid) + 1. Tidak ada korelasi antara UID dan GID yang diperlukan oleh sistem * NIX apa pun yang kebetulan terjadi pada beberapa kasus.

Lebih banyak referensi

http://www.thegeekstuff.com/2009/06/useradd-adduser-newuser-how-to-create-linux-users

Ramesh
sumber
Pernyataan terakhir benar-benar salah. UID = GID hanya dalam kasus ketika pengguna baru dibuat pada sistem lokal dan GID tidak secara eksplisit ditugaskan ke grup yang ada.
Karlson
Tidak, itu tidak sepenuhnya salah, karena dengan jelas mengatakan "secara default". Beberapa klarifikasi akan sangat dihargai di sini.
Erathiel
1
@ Erathiel Secara default GID sama dengan GID yang ditetapkan pada saat pembuatan pengguna. Jika pengguna dibuat secara lokal dan tanpa menentukan GID di -gflag pada useraddprogram, akan membuat grup untuk Anda dan kecuali terjadi pergeseran GID, itu akan = UID. Namun, jika metode pembuatan tidak diketahui, Anda tidak dapat mengandalkan kenyataan bahwa ini akan menjadi masalah:uid=123456(ME) gid=777(ABC) groups=777(ABC)
Karlson
Pada beberapa sistem, useradd juga membuat grup dengan nama yang sama untuk akun tersebut. Tergantung pada rasa Linux.
Pete
@ Karson, saya tidak pernah menyebutkan itu akan selalu sama. Jelas ditentukan bahwa secara default itu sama dengan UID untuk semua pengguna biasa .
Ramesh