Jika saya membuat akun pengguna di Ubuntu bernama root
, apakah secara otomatis memiliki izin root? Hancurkan sistem? Menyebabkan kesalahan dalam matriks? Apa yang akan terjadi?
permissions
root
users
Raja yang Terlupakan
sumber
sumber
Jawaban:
Nama pengguna harus unik, jadi, seperti yang disebutkan oleh jawaban Owen Hines , Anda tidak akan dapat membuat pengguna ini. Namun, titik kunci di sini adalah bahwa kekuatan pengguna super (semua izin yang memungkinkan) tidak diberikan oleh nama pengguna
root
, tetapi oleh UID.Pengguna dengan UID 0 adalah pengguna super.
Jadi, jika pengguna dengan UID 0 memiliki nama yang berbeda, dan Anda membuat pengguna yang dipanggil
root
, mereka tidak akan memiliki status khusus.Saya merujuk Anda ke wiki tag root !
sumber
root
. Bukan ide bagus, tapi mungkin. Jadi seseorang dapat, misalnya, membuat akun pengguna super yang disebutgod
dengan uid0
, dan pengguna normal disebutroot
dengan uid1000
atau nomor lain.Itu tidak akan membiarkan Anda karena sudah ada
root
pengguna.Tapi, seperti yang dikatakan Florian Diesch dalam komentar:
sumber
chown root file
?Pertama-tama caranya, seperti yang telah dinyatakan orang lain, Anda mengubah pengguna dengan UID 0 menjadi sesuatu yang lain. Kemudian Anda dapat membuat pengguna normal dengan nama root dan UID lebih tinggi dari 1000. Ini akan berfungsi "baik". Semua izin dan fungsi sistem inti menggunakan UID dan bukan nama pengguna. Sebenarnya ini adalah langkah pertama yang baik dalam pengerasan sistem Linux. (jauh lebih baik untuk menonaktifkan root, tetapi sebelum sudo kita biasa melakukan ini).
Sekarang apa yang akan terjadi.
Sebagian besar waktu tidak ada. Semua panggilan sistem yang berkaitan dengan otorisasi atau otentikasi menggunakan UID (yang saya ketahui). Dan sudah seperti itu selama beberapa waktu. Sistem Anda akan terus berjalan seperti biasa. Alat sistem akan mencerminkan nama pengguna baru, tetapi terus bekerja secara normal. Dengan kata lain "root" dalam konvensi dan tidak diatur dalam batu.
Yang mengatakan, saya yakin ada beberapa alat dan program yang ditulis dengan buruk. Program yang memeriksa variabel lingkungan $ USER dapat bertindak salah. Biasanya ini adalah skrip dan proyek kecil, tetapi Anda bisa menghabiskan waktu melacak satu komit buruk itu, 6 tahun lalu di fdisk yang terus membuat Anda sakit kepala.
Ini adalah sesuatu yang biasa saya lakukan sepanjang waktu. Itu adalah langkah yang mudah, dan berada di bawah aturan "nama pengguna yang tidak dapat diprediksi". Ada JAUH cara yang lebih baik untuk mencapai tujuan yang sama hari ini.
sumber
Seperti yang dijelaskan orang lain, UID = 0 memberi pengguna "kekuatan super", bukan nama pengguna yang menjadi "root". Jadi jika Anda entah bagaimana berhasil membuat pengguna lain yang disebut "root" (setelah mengganti nama / menghapus yang asli) - status super pengguna akan bergantung pada UID yang Anda berikan.
Yang juga mengarah pada ide lain yang menarik: sangat mungkin untuk memiliki beberapa pengguna dengan UID yang sama (yang membuat mereka pada dasarnya pengguna yang sama dari sudut izin sistem file tetapi memungkinkan untuk memiliki direktori berbeda, misalnya, shell dan direktori rumah). Bahkan, beberapa sistem mirip UNIX memiliki akun superuser lain yang disebut toor (root backwards) yang memungkinkan untuk memiliki dua akun pengguna super dengan pengaturan yang berbeda.
sumber
Cara membuat 'root' ke-2:
Ya, secara teori, tidak boleh ada dua pengguna dengan nama pengguna atau ID yang sama. Dan utilitas standar sangat mudah dan tidak akan membuat pengguna seperti itu untuk Anda. Tetapi Anda selalu dapat mengedit / etc / passwd secara manual.
Sebagai contoh, saya lakukan:
Seperti yang Anda lihat, kami root sekarang! Ya, itu bukan root asli (bukan uid = 0), tapi itu sama empat huruf. Mengesankan dan tidak berguna.
Cara membuat 'root' kedua yang lebih baik:
Anda juga dapat melakukan modifikasi lainnya. Biarkan nama pengguna apa adanya, (namaAnda atau root2) tetapi ubah uid.
(lihat, bidang UID dan GID adalah nol) Sekarang Anda memiliki pengguna biasa (non-root), dengan nama pengguna yang hampir tidak mencurigakan (atau membuat nama pengguna 'johndoe' untuk efek yang lebih baik), tetapi pada kenyataannya, pengguna ini memiliki kekuatan super!
Seperti yang Anda lihat, pengguna biasa tidak dapat menggunakan fdisk di / dev / sda, tetapi root2 dapat melakukan apa saja!
Trik sederhana ini kadang digunakan setelah sistem diretas untuk menyediakan backdoor. Bahkan jika root nyata akan mengubah kunci / kata sandinya, hacker masih akan memiliki kontrol penuh atas sistem melalui pengguna lain dengan uid = 0.
Bagaimana matriks bekerja
Sebenarnya, baik nama pengguna 'root', maupun uid = 0 tidak bersifat magis dengan sendirinya. Ini hanya masalah konvensi. Dan itu tidak selalu benar. (lihat pertanyaan ini: Apakah akun root selalu memiliki UID / GID 0? ) Kode kernel ajaib. Sebenarnya, kode userspace sendiri - tidak dapat melakukan apa pun yang dapat dilakukan root. Bahkan jika dijalankan sebagai root! Kekuatan root ada di kernel. mis. jika Anda melakukan "cat / etc / shadow" (hanya root yang biasanya dapat melakukan ini), program / bin / cat memanggil fungsi libc open () yang masih berupa kode userspace, dan fungsi open () ini melakukan pemanggilan sistem ke kernel. Kemudian kernel sendiri yang memutuskan apa yang harus dilakukan. Sebagai contoh, kernel dapat mengizinkan beberapa operasi jika pengguna yang efektif memiliki id == 0.
Secara teori, jika Anda akan mengubah beberapa kode di kernel dan menangani pengguna 'www-data' secara berbeda - beberapa operasi mungkin hanya diizinkan untuk pengguna 'www-data' (dan bahkan tidak di-root).
sumber
Sebagian besar alat 'ramah pengguna' akan memeriksa hal ini dan tidak akan membiarkan Anda membuat akun dengan nama pengguna yang sudah diambil.
Jika Anda melewati ini, dan secara manual menambahkan akun root kedua ke / etc / passwd dan / etc / shadow Anda, yang mana yang akan digunakan, saya kira akan tergantung jika Anda meletakkannya sebelum atau setelah yang asli. Seperti semua akun pengguna pada sistem unix, ia juga akan memiliki akses superuser hanya jika UID-nya nol, terlepas dari namanya.
sumber