Maksud saya, jika dua pengguna memiliki nama yang sama, bagaimana sistem tahu bahwa mereka sebenarnya pengguna yang berbeda ketika memberlakukan izin file?
Keraguan ini muncul di benak saya ketika saya mempertimbangkan untuk mengubah nama rumah saya /home/old-arch
sebelum menginstal ulang sistem (saya /home
memiliki partisi sendiri dan saya tidak memformatnya), sehingga saya dapat memiliki yang baru, murni /home/arch
. Saya bertanya-tanya apakah sistem baru akan memberi saya izin lama pada file saya atau apakah itu akan mengenali saya sebagai berbeda arch
.
permissions
users
authentication
multiuser
Arch Stanton
sumber
sumber
ls -n
./home/old-arch
sebelum menginstal ulang sistem (saya/home
memiliki partisi sendiri dan saya tidak memformatnya), sehingga saya dapat memiliki yang baru, yang masih asli/home/arch
. Saya bertanya-tanya apakah saya akan mempertahankan izin yang sama pada file saya, atau apakah sistem akan mengenali saya sebagai berbedaarch
.Jawaban:
Di Unix, pengguna diidentifikasi oleh ID mereka (uid), yang harus unik (dalam lingkup sistem lokal). Jadi, bahkan jika memungkinkan untuk membuat 2 pengguna yang berbeda dengan nama yang sama (adduser di sistem saya menolak untuk melakukan ini, lihat pertanyaan ini untuk informasi lebih lanjut. Dapat memisahkan akun unix yang berbagi nama pengguna tetapi memiliki kata sandi yang terpisah? ), Mereka perlu mendapatkan uids berbeda. Meskipun Anda mungkin dapat memanipulasi file yang berisi informasi pengguna agar sesuai dengan kriteria Anda, setiap program didasarkan pada asumsi bahwa uids adalah unik pada sistem, sehingga pengguna tersebut akan identik.
EDIT: Jawaban lain menunjukkan kasus di mana Anda memiliki 2 nama pengguna yang berbeda untuk uid yang sama - sejauh yang menyangkut sistem, ini seperti memiliki dua nama yang berbeda untuk pengguna yang sama, jadi konstruksi seperti ini harus dihindari jika mungkin , kecuali Anda secara khusus ingin membuat alias untuk pengguna di sistem (lihat pertanyaan alias pengguna unix di serverfault untuk informasi lebih lanjut tentang teknis).
Sistem menggunakan cairan ini untuk menegakkan izin file. Uid dan gid (id grup) dari pengguna yang dimiliki file tersebut dituliskan ke dalam metadata file tersebut. Jika Anda membawa disk ke komputer lain dengan pengguna berbeda yang secara acak menggunakan uid yang sama, file tersebut tiba-tiba akan menjadi milik pengguna ini di sistem itu. Mengetahui bahwa uids biasanya tidak lebih dari 16-bit integer pada sistem unix, ini menunjukkan bahwa uids tidak dimaksudkan untuk menjadi unik secara global, hanya unik dalam ruang lingkup sistem lokal.
sumber
Jika Anda memaksa ada beberapa pengguna dengan nama pengguna yang sama, maka akan ada banyak entri
/etc/{shadow,passwd}
dengan nama yang sama:Jika Anda mencoba masuk sebagai pengguna itu, Anda akan masuk sebagai pertandingan pertama.
Tidak akan ada cara untuk masuk sebagai pengguna kedua dengan nama yang sama.
Perhatikan bahwa Linux melacak pengguna dengan cairan mereka, bukan dengan nama pengguna mereka.
Akan tetapi, memiliki dua nama pengguna yang berbeda menjadi ID pengguna yang sama. Pertimbangkan versi lain dari
/etc/passwd
:Perhatikan bahwa untuk kedua nama pengguna
a
danb
, kolom ketiga adalah 1001 - itulah ID pengguna / uid. Sekarang, jika penggunaa
atau penggunab
masuk (bahkan dengan kata sandi yang berbeda), keduanya akan menjadi "pengguna 1001", dan ditampilkan sebagai penggunaa
dari perspektif OS. Di sini juga, entri yang cocok pertama adalah yang dikembalikan (dalam kebanyakan kasus):Keduanya
a
danb
bersifat uid1001
dan akan memiliki akses ke sumber daya yang tersedia untuk uid1001
.sumber
useradd
akan cocok jika Anda mencoba untuk menambahkan pengguna yang sudah ada, jadi dengan 'memaksa' di sini Andy cukup banyak berarti 'mengedit secara manual/etc/passwd
dan/etc/shadow
yang sangat banyak Jangan Coba Ini Di Wilayah Rumah.setuid
dengan UID kedua? Atau bahkansudo -u '#<uid>' bash
?Jika Anda memiliki sistem pengguna tunggal dan melakukan instal ulang dengan distribusi yang sama, atau serupa, sangat mungkin bahwa akun pengguna Anda akan memiliki id pengguna yang sama, dan karenanya menjadi pengguna yang sama dari perspektif kernel. Sebagai contoh, pengguna yang dibuat selama instalasi adalah UID 1000 pada sistem Debian sejauh yang saya ingat. Sistem lain mungkin menggunakan beberapa nomor lain, tetapi sangat mungkin menjadi bilangan bulat kecil yang sama pada setiap pemasangan.
Hal yang sama berlaku untuk pengguna lain juga (jika Anda punya) karena UID biasanya dialokasikan secara berurutan. Pengguna ketiga yang dibuat cenderung memiliki UID yang sama dengan pengguna ketiga yang dibuat di sistem lain. Anda harus mengambil langkah-langkah sebelumnya untuk memastikan bahwa UID tidak digunakan kembali pada kedua sistem.
Untuk alasan yang sama, apa pun yang menggunakan NFS harus memiliki basis data pengguna bersama.
Tetapi dalam hal ini, karena ini adalah sistem pribadi Anda, Anda dapat masuk sebagai root dan menjalankannya
chown newuser. -R /home/olduser
meskipun UIDnya berbeda.(Sistem Windows berbeda, mereka menghasilkan string ID gondrong yang lebih acak. Di sana, jika Anda memindahkan disk ke komputer lain, file akan terlihat dimiliki oleh pengguna yang tidak dikenal, dan Anda tidak akan memiliki akses tanpa menggunakan kekuatan administrator.
Juga, saya katakan "kemungkinan" banyak di atas. Tidak ada yang tahu apakah beberapa distribusi berperilaku berbeda. Linux Modern juga mendukung 32-bit UID, jadi sementara itu tidak hampir selama Windows SID, masih ada beberapa ruang untuk digunakan jika seseorang ingin memiliki misalnya UID acak. Namun, biasanya tidak banyak gunanya. Administrator sistem seharusnya mengetahui disk apa yang mereka lampirkan pada sistem dan untuk menyesuaikan kepemilikan file yang sesuai, atau membuat mountpoint tidak dapat diakses oleh pengguna lain.)
sumber
Unix adalah sistem yang sangat tua, era di mana kapasitas penyimpanan sangat kecil, dan semuanya - juga file sebagai pengguna - diidentifikasi dengan angka . Nama-nama datang kemudian , setelah penyimpanan tumbuh sedikit.
Sebuah kebajikan dari sistem ini adalah bahwa namanya hanya label tersambung ke pegangan nyata: ID numerik. Jadi Anda dapat memiliki beberapa nama untuk satu pengguna (dalam pengeditan / etc / passwd secara langsung), serta beberapa nama untuk satu file (berguna untuk menyimpan file hanya sekali, tetapi melihatnya di beberapa lokasi).
Batas adalah sistem untuk pengguna, dan partisi untuk file.
Saya katakan itu hanya untuk memperjelas, untuk menjelaskan mengapa semuanya itu .
Saya harus mengakui bahwa saya tidak pernah mencoba cara yang berlawanan - nama yang sama dengan ID yang berbeda - saya selalu berpikir itu tidak mungkin. Apakah itu? Bukan sebagai bug?
sumber