Hanya ingin tahu, saya ingin tahu mengapa, ketika saya login sebagai root, saya tidak di / home / pengguna lagi. Apa alasannya dan apa yang dilakukan direktori root ?
Saya bukan pengguna tingkat lanjut. Harap jawab dengan kata-kata sederhana atau berikan tautan yang memberikan penjelasan sederhana dan jelas. Saya menggunakan Ubuntu 16.04 dan saya login sebagai root oleh sudo -i
. Seperti yang dijelaskan di sini , sudo -i
telah / root sebagai rumah. Saya ingin tahu alasannya; apakah ada untungnya berada di sana? Dan tidak di ~ seperti pengguna sudo -s
.
home
direktori pribadinya , tetapi yang ini dinamairoot
sudo -s
untuk berada di direktori pengguna yang sama.man sudo
akan menjawab pertanyaan itu. Sederhananyauser -i
adalah menggunakan pengaturan pengguna root, tetapisudo -s
pengaturan pengguna saat ini.Jawaban:
Anda tidak masuk sebagai root dengan menjalankan a
sudo
perintah. Anda memulai sebuah shell dengan hak akses root.Jika Anda ingin tetap berada di direktori home user saat ini, Anda dapat menggunakannya
sudo -s
sebagai gantinyasudo -i
perintah.cd ~
akan membawa Anda ke direktori yang sama seolah-olah Anda tidak berada dalam shell dengan hak akses root. Secara harfiah/home/$USER
.Saat Anda menggunakan
sudo -i
, sistem bertindak seolah-olah Anda masuk sebagairoot
pengguna. Karena inimembawa Anda ke direktori home pengguna root
/root
./root
direktori adalah direktori home untukroot
pengguna.Perbedaan utama adalah bahwa file pengaturan shell seperti
.bashrc
digunakan dari/root
dalam kasussudo -i
, dan dari pengguna normal dalam kasussudo -s
.sumber
.bashrc
digunakan dari sana dalam shell tertentu. Dalam kebanyakan kasus tidak ada banyak perbedaan./home
tidak tersedia, masalahnya tidak ada. Maka Anda benar-benar masuk sebagai root.Alasan mengapa rumah
root
pengguna adalah/root
dan bukan/home/root
karena biasanya/home
adalah titik mount ke partisi / volume / disk yang terpisah ... (karena berbagai alasan, seperti ruang disk, atau jarak jauh, ...)Jika karena suatu alasan pemasangan
/home
akan gagal, Anda masih dapat terhubungroot
dan berada di/root
direktori home Anda untuk menyelidiki dan memperbaiki hal-halSelain itu, untuk pemeliharaan, pengaturan awal, pengubahan ukuran, ... Anda akan terhubung sebagaimana
root
dan harus dapat meng-unmount / mengirim kembali/home
sumber
root memiliki / root sebagai rumahnya dan ketika Anda beralih ke root itu akan membuat Anda berakhir di rumahnya. Itulah sifat dari
sudo -i
.sudo -s
melakukan hal yang sama tetapi tidak mengganti direktori. Manual untuk sudo :Pengguna root harus menjadi bagian dari sistem. Ketika Anda meletakkan / home pada partisi yang berbeda dan root adalah bagian dari / home Anda akan mengalami masalah serius jika partisi tersebut tidak me-mount. Untuk alasan yang sama kami juga punya
dan
Ketika Anda meletakkan / usr di partisi dan / usr tidak me-mount Anda masih memiliki sistem yang berfungsi.
sumber
sudo -i
vssudo -s
?Sistem file Linux disusun dengan cara tertentu. Biner penting ada
/bin/
, file boot loader ada/boot/
, sebagian besar file perangkat ada/dev/
, mount point untuk media yang bisa dilepas ada/media/
, dll ...Lihat https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard .
Beberapa detail kecil mungkin berbeda dari distro ke distro (misalnya
/usr/bin/
vs./usr/local/bin/
), tetapi secara umum hampir semua distro Linux mengikuti struktur direktori yang sama.Untuk menjawab pertanyaan Anda:
Direktori rumah pengguna berada di
/home/
. Pada prinsipnya, Linux adalah sistem operasi multi-pengguna. Anda mungkin hanya memiliki satu akun pengguna di laptop Anda dengan direktori home-nya/home/<username>/
, tetapi jika Anda melihat/home/
pada server Linux bersama, Anda akan melihat banyak direktori rumah: satu untuk setiap akun pengguna. Idenya adalah bahwa setiap pengguna sistem memiliki izin menulis hanya di direktori home mereka sendiri. Jika nama penggunabob
Anda, Anda dapat membaca dan menulis dan menghapus file/home/bob/
tetapi Anda tidak dapat menyentuh apa pun di/home/alice/
atau di/var/log/
.root
berbeda.root
adalah pengguna administratif dan memiliki hak istimewa menulis di mana saja pada sistem (dan dapat bertindak sebagai pengguna sistem apa pun). Jadi masuk akal bahwaroot
memiliki direktori home khusus/root/
karenaroot
bukan pengguna biasa. Selain itu,/root/
hanya direktori biasa tanpa sihir khusus, meskipun sangat mungkin (bahkan mungkin) bahwa utilitas sistem bergantung pada/root/
rumah penggunaroot
.Ketika Anda menjalankan
sudo -i
di terminal, Anda beralih dari menjadi misalnya user biasabob
untuk menjadiroot
. Perhatikan bahwa sakelar ini hanya memengaruhi jendela terminal tempat Anda mengetiksudo -i
. Untuk manajer file Anda, Anda masihbob
dan jika Anda membuka jendela terminal lain Anda masihbob
di sana. Dalam konteks ini simbol~
adalah singkatan untuk direktori home pengguna saat ini. Untukbob
~
cara/home/bob/
tetapi untukroot
~
cara/root/
.Saya harap ini menjelaskan hal-hal untuk Anda.
sumber
/
. Lokasi standar dapat diubah karena alasan keamanan (setiap orang harus dapat membuat daftar file/
, sehingga siapa pun dapat melihat dotfile apa yang dimiliki oleh pengguna root.Saya melihat semua orang menjawab apa yang terjadi ketika Anda masuk sebagai root (Anda mendapatkan ~ direktori yang tidak ada di / home) tetapi tidak ada yang mengatakan mengapa. Inilah alasannya:
Jika seluruh struktur / rumah menjadi tidak dapat digunakan dan Anda harus memperbaikinya, atau jika Anda perlu merealokasi / rumah karena kehabisan ruang, Anda harus melakukannya entah bagaimana. Anda tidak dapat masuk sebagai pengguna mana pun yang memiliki ~ in / home, karena Anda akan macet segera setelah Anda mencoba melakukan apa pun. Jadi pengguna root memiliki hir ~ di tempat lain.
sumber
hir
itu salah ketik. Terima kasih atas semua informasinya! Saya merekomendasikan tetap mempertahankan pemformatan kode, tapi itu terserah Anda.Anda bilang Anda bukan pengguna tingkat lanjut, jadi saya akan mencoba menulis jawaban langkah demi langkah.
Ketika Anda menggunakan Linux, Anda harus mengingat beberapa hal penting:
Linux adalah sistem multi-pengguna. Itu dipahami seperti itu dari awal, mengikuti filosofi Unix (perhatikan pendekatan berbeda yang diambil oleh Windows, yang dipahami sebagai sistem pengguna tunggal)
Sebagai sistem multi-pengguna, Linux memiliki kemampuan untuk memisahkan file-file milik masing-masing pengguna dalam sistem. Cara Linux melakukannya adalah dengan memberikan subfolder di dalam
/home/
direktori kepada setiap pengguna . Setiap file pengguna dimiliki olehnya, dan hanya dia yang dapat membukanya, memodifikasinya, atau mengizinkan pengguna lain untuk menggunakannya. Sebaliknya, setiap file dalam sistem file milik pengguna, dan pengguna tersebut memiliki kekuasaan atas siapa yang dapat melihat atau menggunakan file itu. Seperti disebutkan dalam jawaban lain, pada awalnya pengguna dapat menempatkan file mereka di mana saja dalam sistem, tetapi pada beberapa titik menjadi jelas bahwa hal-hal harus diatur dengan lebih baik, dan/home/
("rumah slash") menjadi tempat di mana file pengguna seharusnya.Namun, ada file-file yang dibutuhkan oleh sistem itu sendiri dan / atau setiap pengguna tunggal dalam sistem: binari, file perangkat, file sistem, dan sebagainya (ingat: di Linux, dan dalam sistem mirip-unix lainnya, semuanya adalah file) . Ini secara global diperlukan file disimpan di berbagai tempat di sepanjang filesystem, yang diselenggarakan di berbagai folder dalam root filesystem :
/
. Juga, file-file yang dibutuhkan secara global ini bukan milik pengguna sistem tertentu, tetapi milik sistem itu sendiri ... tetapi itu bisa membingungkan: siapa yang memiliki binari? Siapa yang memberi izin pada file yang dibutuhkan secara global ini?Karena setiap file dalam sistem "membutuhkan pemilik", harus ada "pengguna khusus" yang dapat mengelola file yang dibutuhkan secara global. Selain itu, "pengguna khusus" ini dapat melakukan hal-hal yang tidak dapat dilakukan oleh pengguna lain dalam sistem: ia dapat membuat pengguna lain untuk sistem. Pengguna ini disebut "pengguna super" (untuk kita manusia) atau "root" (untuk sistem).
Sekarang, pengguna super ini adalah pengguna lain dari sistem, tetapi memiliki kekuatan (dan tanggung jawab) jauh di atas yang dimiliki pengguna lain: pemeliharaan, misalnya. Jadi wajar untuk berpikir bahwa "root" membutuhkan tempat untuk meletakkan barang-barangnya, tetapi itu tidak harus bingung dengan barang-barang milik pengguna lain. Jadi, alih-alih memiliki subfolder di bawah ini
/home/
, "root" memiliki ruang khusus di sistem file:/root/
(disebut "slash-root"). Ingat: "root" adalah pengguna yang sangat istimewa, jadi perlu tempat khusus dan istimewa untuk meletakkan barang-barangnya.Sekarang, Ubuntu tidak memiliki akun root yang diaktifkan secara default, sehingga pengguna "normal" harus memiliki otoritas atas sistem secara keseluruhan. Di situlah
sudo
("beralih pengguna dan lakukan") perintah masuk: itu memungkinkan pengguna normal (sebelumnya termasuk dalam daftar "sudoers") untuk melakukan perintah seolah-olah dia adalah pengguna lain, misalnya "root".Akhirnya,
-i
opsi itu berarti "mensimulasikan login awal". Itu berartisudo
akan membaca data "profil pengguna target" sebelum menjalankan perintah yang diberikan. Jika Anda tidak memberikan perintah, makasudo
akan memulai instance shell dengan profil (root) pengguna target ... dan itu dimulai dengan pindah ke folder "home" dari "target user". Jadisudo -i
akan memindahkan Anda ke folder home root (/root/
).Saya harap ini membantu Anda memahami apa yang terjadi
sudo -i
.EDIT
Saya pikir saya meninggalkan sesuatu yang tidak diklarifikasi, jadi saya akan menambahkannya di sini:
Saya katakan di atas: "di Linux, semuanya adalah file". Dan saya sungguh-sungguh! Dokumen dan gambar Anda adalah file, tetapi juga terminal (yang dapat Anda akses dengan menekan [CTRL] + [ALT] + [Fn]), dan drive fisik, dan keyboard Anda, misalnya. Sistem seperti unix bekerja dengan membaca atau menulis data dari / ke file, dan mengarahkan aliran data ke / dari file yang sesuai dalam sistem, yang mewakili file yang sedang Anda kerjakan, dan input kunci yang Anda ketikkan, dan output yang Anda lihat di layar. Beberapa file ini dapat digunakan secara langsung oleh pengguna, tetapi beberapa yang lain tidak bisa; misalnya, Anda tidak dapat membaca atau menulis langsung ke hard drive, tetapi Anda harus membiarkan Linux menautkan folder yang normal dan dapat dijelajahi, ke file perangkat (di bawah
/dev/
) yang mewakili hard drive Anda.Sistem file Linux dapat menjangkau beberapa drive fisik . Contoh sederhana adalah ketika Anda mencolokkan pen drive USB: Linux dapat memasang drive itu (pemasangan adalah proses dimana sistem menghubungkan folder standar, di mana Anda dapat melihat file di shell atau navigator file, ke file perangkat di
/dev/
) dan Anda dapat bekerja dengannya, dan setelah selesai, Anda meminta Linux untuk menurunkan drive dan kemudian menghapusnya dari port USB. Yang penting di sini adalah siklus "mount - unmount" ini memengaruhi * sistem file yang sama "yang Anda gunakan sehari-hari: Anda tidak membuat sistem file baru setiap kali Anda menambah atau menghapus drive fisik, tetapi Anda menambahkan drive fisik itu ke sistem file ( lagi, bandingkan filosofi ini dengan pendekatan Wndows).Karena sistem file dapat menjangkau beberapa drive fisik, menjadi jelas bahwa file sistem yang berbeda dapat ditulis ke dalam drive fisik yang berbeda. Satu drive dapat menyimpan binari sistem (
/bin/
) dan yang lain dapat menyimpan file pengguna (/home/
dan turunannya). Dalam pengaturan multi-drive, sudah biasa/home/
menulis dalam drive fisik yang berbeda daripada/root/
, jadi, jika sistem rusak dan pengguna tidak dapat masuk karena drive tempat/home/
berhenti bekerja, root dapat. (Ini sederhana ... banyak hal perlu disalin ke setiap drive fisik untuk memungkinkan root untuk login jika tidak ada pengguna lain yang bisa, tetapi ini dapat memberi Anda ide umum).Dan
~
karakter tilde ( ) itu menunjukkan direktori home dari pengguna saat ini . Jika Anda masuk sebagai "bob", maka Andacd ~
akan dibawa ke sana/home/bob/
, tetapi jika Anda masuk sebagai "root", maka Andacd ~
akan dibawa ke/root/
tl; dr Jadi sekarang saya pikir semuanya dikatakan:
"root" adalah pengguna khusus, dengan kekuatan dan tanggung jawab jauh di atas pengguna lain
"/ root /" adalah tempat "root" dapat menyimpan barang-barangnya, tanpa risiko dikacaukan dengan barang-barang lain milik pengguna normal. Folder ini dapat ditulis ke drive fisik yang berbeda dari
/home/
.sudo -i
memulai shell yang mensimulasikan login root, dan itu menyiratkan pindah ke folder home root. Seperti halnya pengguna lain,cd ~
akan membawa Anda ke direktori home Anda, tetapi, jika Anda root, itu akan menjadi/root/
Jika sistem diinstal di drive fisik yang berbeda, root dapat login dan mencoba untuk memperbaiki hal-hal bahkan jika drive lain dalam sistem gagal.
sumber
Alasan utama direktori home root diperlakukan berbeda:
Ketika ada masalah, Anda harus dapat melakukan tugas-tugas pemulihan sistem segera setelah Anda berhasil me-mount sistem file /.
Tergantung pada pengaturan Anda, direktori home pengguna mungkin berada pada sistem file yang berbeda atau bahkan mungkin dipasang di jaringan.
Untuk masuk sebagai root (mis. Masukkan nama root dan kata sandi root pada prompt login) dari konsol Anda hanya perlu satu sistem file terpasang.
(Ini juga mengapa utilitas inti berada di / bin dan / sbin bukan / usr / bin atau / usr / sbin - semua yang ada di / usr dapat dibuang.)
sumber