Saya telah menginstal Ubuntu menggunakan GUI, memberi saya kata sandi dan segalanya. Saya tidak begitu ingat prosesnya. Namun, yang membuat saya khawatir adalah saya tidak tahu kata sandi berikut:
$ su
Password: <the only password I've ever created on this machine>
su: Authentication failure
Aku hanya tidak tahu harus berbuat apa. Saya tidak dalam kesulitan, tetapi saya hanya ingin tahu apa yang terjadi di sini. Saya juga dapat mengunci diri dari direktori:
starkers@ubuntu:~/Desktop$ mkdir foobs
starkers@ubuntu:~/Desktop$ sudo chmod 777 -R foobs
sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700
[sudo] password for starkers: <the only password I've ever created on this machine>
starkers@ubuntu:~/Desktop$ cd foobs
bash: cd: foobs: Permission denied
Saya hanya sedikit bingung. Bagaimana saya bisa mengunci diri seperti ini? Saya pikir sudo
adalah perintah utama di sini. Tapi saya membuat foobs
file seterbuka mungkin melalui chmod
, jadi mengapa itu mengunci saya?
chmod -R 777 whatever
, kecuali jika Anda ingin menimbulkan risiko keamanan yang sangat besar.666
?chmod
bahwa itu hanya mengubah file yang Anda maksudkan./var/lib/sudo
diatur ke dunia yang dapat ditulisi. Ini seharusnya tidak terjadi dan Anda harus mencoba mencari tahu mengapa itu terjadi.Jawaban:
Secara default,
root
akun superuser ( ) dinonaktifkan dan tidak memiliki kata sandi. Anda dapat membuatnya dengan menjalankan:Anda kemudian dapat masuk sebagai root dengan menjalankan
su
menggunakan kata sandi ini.Adapun
chmod
, perintah yang benar adalah:Anda juga bisa menggunakan:
untuk login sebagai root menggunakan kata sandi Anda (tanpa membuat kata sandi root seperti dijelaskan di atas).
sumber
sudo su
. Ini juga memberikan hak su permanen di terminal.sudo su
, karena akan merusak lingkungan dan hal-hal akan pecah. alih-alih gunakansudo -i
.1. Mengapa Anda tidak memiliki kata sandi root
Meskipun Anda dapat membuat kata sandi untuk akun pengguna super yang memungkinkan Anda untuk masuk sebagai root
su
, perlu disebutkan bahwa ini bukan cara biasa dalam melakukan sesuatu dengan Ubuntu (atau semakin, distribusi lain juga). Ubuntu memilih untuk tidak memberikan login root dan kata sandi secara default karena suatu alasan. Sebagai gantinya, instalasi Ubuntu default akan digunakansudo
untuk memberikan hak superuser. Secara default Ubuntu menginstal orang yang menginstal OS diberi izin "sudo" secara default.Siapa saja yang memiliki izin "sudo" penuh dapat melakukan sesuatu "sebagai superuser" dengan menunggu
sudo
perintah mereka. Misalnya, untuk menjalankanapt-get dist-upgrade
sebagai pengguna super, Anda dapat menggunakan:Anda akan melihat penggunaan sudo ini cukup banyak di mana saja Anda membaca tutorial tentang Ubuntu di web. Ini merupakan alternatif untuk melakukan ini.
Dengan sudo, Anda memilih di muka mana pengguna memiliki akses sudo. Tidak perlu bagi mereka untuk mengingat kata sandi root, karena mereka menggunakan kata sandi mereka sendiri. Jika Anda memiliki banyak pengguna, Anda dapat mencabut akses pengguna super seseorang hanya dengan menghapus izin sudo mereka, tanpa perlu mengubah kata sandi root dan memberi tahu semua orang kata sandi baru. Anda bahkan dapat memilih perintah mana yang diizinkan dilakukan pengguna dengan menggunakan sudo dan perintah mana yang dilarang untuk pengguna itu. Dan terakhir, jika ada pelanggaran keamanan, dalam beberapa kasus dapat meninggalkan jejak audit yang lebih baik yang menunjukkan akun pengguna mana yang dikompromikan.
Sudo membuatnya lebih mudah untuk melakukan perintah tunggal dengan hak superuser. Dengan
su
, Anda secara permanen jatuh ke shell pengguna super yang harus keluar menggunakanexit
ataulogout
. Hal ini dapat menyebabkan orang yang tinggal di shell pengguna super lebih lama dari yang diperlukan hanya karena lebih nyaman daripada keluar dan masuk lagi nanti.Dengan sudo, Anda masih memiliki opsi untuk membuka shell superuser permanen (interaktif) dengan perintah:
... dan ini masih dapat dilakukan tanpa kata sandi root, karena
sudo
memberikan hak superuser padasu
perintah.Dan demikian pula, alih-alih
su -
untuk shell login Anda dapat menggunakansudo su -
atau pintasannyasudo -i
.Namun ketika melakukannya Anda hanya perlu menyadari bahwa Anda bertindak sebagai superuser untuk setiap perintah. Ini adalah prinsip keamanan yang baik untuk tidak bertahan sebagai pengguna super lebih lama dari yang diperlukan, hanya untuk mengurangi kemungkinan secara tidak sengaja menyebabkan kerusakan pada sistem (tanpanya, Anda hanya dapat merusak file yang dimiliki pengguna Anda).
Hanya untuk memperjelas, Anda dapat , jika Anda memilih, memberikan pengguna root kata sandi yang memungkinkan login sebagai root seperti yang dijelaskan dalam jawaban @ Oli, jika Anda secara khusus ingin melakukan hal-hal dengan cara ini. Saya hanya ingin memberi tahu Anda tentang konvensi Ubuntu lebih suka
sudo
dan memberi tahu Anda bahwa ada alternatif.2. Masalah dengan perintah chmod 777 -R Anda
Pertanyaan Anda juga memiliki bagian kedua: masalah Anda dengan perintah
sudo chmod 777 -R foobs
.Pertama, peringatan berikut menunjukkan masalah keamanan yang berpotensi serius pada mesin Anda:
Ini berarti bahwa pada tahap tertentu, Anda telah ditetapkan
/var/lib/sudo
untuk dapat ditulis oleh dunia. Saya membayangkan Anda telah melakukan ini pada tahap tertentu menggunakan perintah sepertisudo chmod 777 -R /
. Sayangnya, dengan melakukan ini, Anda mungkin telah merusak hampir semua izin file di seluruh sistem Anda. Tidak mungkin bahwa ini akan menjadi satu-satunya file sistem penting yang izinnya telah diubah agar dapat ditulis oleh dunia. Pada dasarnya Anda memiliki sistem yang mudah diretas sekarang, dan satu-satunya cara mudah untuk mendapatkannya kembali adalah menginstal ulang.Kedua, perintah yang Anda gunakan:
Saat memanipulasi file dalam direktori home Anda, dalam hal ini dalam
~/Desktop
, Anda seharusnya tidak perlu menggunakannyasudo
. Semua file yang Anda buat di direktori home Anda harus dapat dimodifikasi oleh Anda (dan jika tidak, sesuatu yang lucu sedang terjadi).Juga, Anda harus sepenuhnya menyadari konsekuensi dari mengubah izin file secara massal, seperti melakukannya secara rekursif atau pada sejumlah besar file. Dalam hal ini, Anda mengubah dengan hati-hati mengatur izin file agar dapat ditulis oleh dunia. Setiap pengguna lain, atau perangkat lunak server kereta pada mesin, mungkin memiliki akses mudah untuk menimpa semua file dan direktori ini.
Ini hampir pasti bahwa
chmod 777 -R [dir]
itu tidak solusi yang tepat untuk masalah apa pun yang Anda coba selesaikan (dan seperti yang saya sebutkan di atas, ada bukti bahwa Anda telah melakukannya untuk sistem file di / var / lib juga, dan saya berasumsi banyak lainnya tempat).Beberapa aturan dasar praktis:
Jika Anda hanya mengacaukan file Anda sendiri di direktori home Anda, desktop dll, Anda seharusnya tidak perlu menggunakan
sudo
atau hak pengguna super. Jika Anda melakukannya, itu adalah tanda peringatan bahwa Anda melakukan sesuatu yang salah.Anda tidak boleh secara manual memodifikasi file sistem yang dimiliki oleh paket. Pengecualian: kecuali jika Anda melakukannya secara khusus dengan cara didokumentasikan oleh paket-paket itu, seperti dengan memodifikasi konfigurasi mereka di
/etc
. Ini berlaku juga untuk mengubah izin file. Jika tutorial atau upaya untuk memperbaiki masalah memerlukansudo
atau hak pengguna super, dan itu bukan hanya perubahan ke konfigurasi di / etc /, itu adalah tanda peringatan bahwa Anda melakukan sesuatu yang salah.sumber
sudo -i
lebihsudo su
.sudo -i
(atausudo su -
) tidak secara universal lebih baik tetapi hanya berbeda - ini meluncurkan shell login yang mensimulasikan lingkungan login pengguna root, yang mengeksekusi, misalnya,.profile
file atau.login
file pengguna root. Ini lebih baik jika Anda ingin lingkungan di shell lebih seperti shell login root daripada shell interaktif yang terjadi pada hak pengguna super. Mungkin lebih baik menggunakan shell berbasis login jika menggunakan shell, tapi itu bisa diperdebatkan: intinya adalah bahwa Ubuntu terutama dirancang untuk digunakansudo
untuk menjalankan perintah dengan hak superuser.