- Root menawarkan kawalan penuh, tetapi Ubuntu dan pengedaran lain mematikannya secara lalai untuk mengurangkan risiko.
- Sudo membolehkan anda meningkatkan keistimewaan berdasarkan kes demi kes dan menyimpan rekod siapa yang melaksanakan setiap arahan.
- Untuk aplikasi grafik, terdapat pembantu seperti kdesu, gksu, gksudo atau pkexec, yang boleh digunakan dalam pelancar .desktop.
- Keselamatan bergantung pada penggunaan keistimewaan paling minimum, mengelakkan skrip yang tidak dipercayai dan mengaudit akses yang dipertingkatkan.

Dalam Windows, ramai orang sudah biasa menekan Shift+Enter atau Shift+klik kiri untuk membuka program dengan keistimewaan tinggi daripada menu Mula. Dalam Linux, ini tidak selalunya mudah, kerana keselamatan bergantung pada root, sudo dan pembantu grafik , dan setiap persekitaran desktop mempunyai alatnya sendiri. Walaupun begitu, terdapat cara yang agak mudah untuk melancarkan aplikasi sebagai root daripada pelancar, pintasan atau menu aplikasi, walaupun penting untuk memahami apa yang diperlukan untuk berbuat demikian.
Kuncinya ialah pengguna root mempunyai kawalan mutlak ke atas sistem , dan pengedaran moden, terutamanya Ubuntu dan terbitannya, biasanya melumpuhkan log masuk langsung. Oleh itu, log masuk sebagai root bukanlah perkara biasa, tetapi sebaliknya meningkatkan keistimewaan sekali-sekala menggunakan `sudo` atau program grafik yang meminta kata laluan. Jika kita mahu ikon pelancar melancarkan aplikasi dengan keistimewaan tersebut, kita perlu mengubah suai arahan yang dilaksanakannya atau mencipta pelancar tertentu.
Apakah sebenarnya maksud menjalankan sesuatu sebagai root?

Dalam Linux, root ialah akaun dengan UID 0 dan keistimewaan tanpa had . Ia boleh membaca, mengubah suai atau memadam sebarang fail, memasang perisian, menukar konfigurasi kernel dan mengawal proses milik mana-mana pengguna. Ini menjadikannya alat yang sangat berkuasa, tetapi juga berisiko besar jika digunakan secara cuai. Kesalahan taip mudah dengan `rm` atau `mv` boleh menyebabkan sistem tidak dapat digunakan dan skrip berniat jahat yang dilaksanakan sebagai root boleh memasang pintu belakang, mengubah suai langkah keselamatan atau mencuri data tanpa sebarang kesan.
Dalam Ubuntu, akaun root tidak mempunyai kata laluan lalai dan log masuk langsung tidak dibenarkan. Falsafahnya ialah anda menggunakan akaun pengguna biasa anda dan menggunakan `sudo` untuk tugasan tertentu . `sudo` pada asasnya bermaksud menjalankan arahan sebagai pengguna lain, biasanya root, selepas mengesahkan dengan kata laluan anda sendiri jika anda tergolong dalam kumpulan `sudo`. Ini mengehadkan jumlah masa anda terdedah dan menyimpan rekod siapa yang melakukan apa.
Walau bagaimanapun, dalam situasi yang sangat spesifik, seperti memulihkan sistem yang rosak, bekerja dalam persekitaran terhad atau mengkonfigurasi perkhidmatan yang memerlukan akses berterusan, anda mungkin mempertimbangkan untuk mendayakan root buat sementara waktu. Cadangan umum adalah untuk melumpuhkannya semula sebaik sahaja keperluan timbul. Lebih sedikit masa yang anda luangkan sebagai root, lebih baik untuk kestabilan dan keselamatan mesin.
Risiko menggunakan root tanpa berhati-hati
Salah satu bahaya yang paling jelas ialah penghapusan fail penting secara tidak sengaja . Sebagai root, tiada sekatan kebenaran; arahan seperti `sudo rm -rf /` boleh memadam sistem tanpa amaran. Biasanya juga tiada tong kitar semula untuk penghapusan ini, jadi pemulihan mungkin memerlukan alat forensik yang kompleks atau pemasangan semula sistem yang lengkap.
Satu lagi risiko ialah menjalankan skrip yang tidak dipercayai. Jika anda menjalankan kod yang dimuat turun dari mana-mana tapak dengan keistimewaan yang tinggi, anda pada dasarnya memberikannya kunci rumah anda . Walaupun skrip itu kelihatan tidak berbahaya, ia mungkin mengandungi arahan yang merosakkan atau memasang perisian hasad dengan keistimewaan root. Oleh itu, adalah dinasihatkan untuk menyemak kod tersebut, menggunakan sumber rasmi, menyemak checksum dan mengujinya dalam mesin maya atau bekas sebelum menjalankannya dalam pengeluaran.
Terdapat juga isu kebolehkesanan. Apabila anda menggunakan `sudo`, sistem akan merekodkan arahan, pengguna yang mengeluarkannya dan masa untuk `/var/log/auth.log`, `/var/log/secure` atau `journalctl` . Jika anda log masuk secara langsung sebagai root, semuanya akan muncul sebagai root dan anda akan kehilangan keupayaan untuk mengetahui individu yang membuat setiap perubahan. Dalam persekitaran dengan berbilang pentadbir atau ISO 27001, PCI DSS atau piawaian pengauditan lain, kekurangan kebolehkesanan ini merupakan kelemahan yang ketara.
Cara untuk mendapatkan keistimewaan daripada terminal

Cara yang paling biasa dan disyorkan adalah dengan mendahului arahan tertentu dengan `sudo`. Contohnya, untuk mengemas kini pakej, memulakan semula perkhidmatan atau mengedit fail yang dilindungi, `sudo` akan meminta kata laluan pengguna anda, bukan kata laluan root, dan selepas mengesahkan anda, ia akan melaksanakan arahan dengan keistimewaan yang lebih tinggi. Jika anda perlu menjalankannya sebagai pengguna yang berbeza, anda boleh menggunakan `arahan sudo -u username` . Dan jika anda sedar anda terlupa menggunakan `sudo`, anda boleh mengulangi arahan terakhir dengan `sudo !! `.
Apabila anda akan melaksanakan beberapa tugas pentadbiran berturut-turut, adalah mudah untuk membuka shell root sementara. `sudo -i` mensimulasikan log masuk root penuh, memuatkan persekitaran root dan meletakkan anda dalam direktori utama. `sudo su` atau `sudo su -` juga berfungsi, walaupun `sudo -i` biasanya lebih dipercayai. Untuk keluar dari sesi ini, taip sahaja `exit`. Tidak digalakkan untuk membiarkan shell root terbuka tanpa pengawasan.
Sebaliknya, arahan `su` menukar pengguna. `su - root` atau ringkasnya `su -` juga menerima pakai pembolehubah persekitaran pengguna sasaran, manakala `su root` atau `su` tanpa tanda hubung mengekalkan sebahagian daripada persekitaran sebelumnya. Perbezaan ini menjelaskan ralat seperti `arahan tidak dijumpai`: arahan pentadbiran biasanya terletak di `/usr/local/sbin`, `/usr/sbin`, dan `/sbin`, laluan yang tidak selalunya muncul dalam PATH pengguna biasa. Jika anda menggunakan `su` tanpa tanda hubung, anda perlu menaip laluan penuh atau bertukar kepada `su -` untuk mewarisi PATH root.
Jika anda ingin mendayakan kata laluan untuk root, anda boleh berbuat demikian dengan `sudo passwd root` . Ubuntu tidak menggalakkan perkara ini, tetapi secara teknikalnya membenarkan root mempunyai kata laluan. Untuk mengunci akaun, gunakan `sudo passwd -l root` , dan untuk membuka kuncinya, gunakan `sudo passwd -u root`. Dalam SSH, akses root langsung dikawal oleh `PermitRootLogin` dalam `/etc/ssh/sshd_config`. Adalah lebih selamat untuk menetapkannya kepada `no` atau, paling banyak, `prohibit-password` untuk hanya membenarkan kata laluan SSH. Selepas itu, anda perlu memulakan semula perkhidmatan SSH.
Konfigurasikan baju sejuk dengan tepat
Fail `/etc/sudoers` menentukan siapa yang boleh menggunakan `sudo` dan untuk tujuan apa. Sebaiknya jangan mengeditnya secara manual; pendekatan yang betul adalah menggunakan `sudo visudo` , yang mengunci fail dan menyemak sintaks sebelum menyimpan. Peraturan asasnya berbentuk `host user=(target_user)`. Contohnya, `bob ALL=(ALL) ALL` membenarkan `bob` melaksanakan sebarang arahan sebagai root pada mana-mana mesin. Kumpulan juga boleh digunakan, seperti `%admin ALL=(ALL) ALL`.
Untuk memberikan kebenaran yang lebih halus, alias digunakan. `User_Alias ADMINS = alice, bob` mengumpulkan pengguna, dan `Cmnd_Alias LOCATE = /usr/sbin/updatedb` mengumpulkan arahan. Kemudian, `ADMINS ALL = LOCATE` digunakan supaya pengguna tersebut hanya boleh melaksanakan arahan tersebut. Alias seperti `NETWORKING` boleh dicipta untuk arahan seperti `route`, `ifconfig`, `ping`, `iptables`, dll. Ini menggunakan prinsip keistimewaan paling rendah tanpa memberikan akses root penuh kepada sesiapa pun.
Pilihan NOPASSWD membolehkan anda menjalankan arahan tertentu tanpa kata laluan, contohnya, `pi ALL=(ALL)`. NOPASSWD: ALL. Ini mudah, tetapi berbahaya jika disalahgunakan. Tambahan pula, setiap penggunaan `sudo` direkodkan, yang membantu mengaudit akses dan menyelesaikan masalah. Jika sesuatu rosak, menyemak log ini boleh menunjukkan perubahan terkini yang menyebabkan kegagalan tersebut.
Melancarkan aplikasi grafik sebagai root daripada pelancar

Bagi program dengan antara muka grafik, hanya menggunakan `sudo` biasanya tidak berfungsi dengan baik kerana tiada terminal untuk meminta kata laluan. Di sinilah pembantu grafik memainkan peranan . Dalam KDE, terdapat `kdesu` : jika anda tahu arahan mana yang melancarkan aplikasi, anda boleh menjalankan `kdesu that_command`. Pilihan `Run Command` dalam menu KDE juga membolehkan anda melancarkan aplikasi sebagai pengguna lain dengan memasukkan kelayakan mereka. Dalam persekitaran GNOME dan GTK , `gksu` dan `gksudo` digunakan secara meluas ; ini adalah bahagian hadapan untuk `sudo` atau `su`. Contohnya, `gksu synaptic` atau `gksudo gparted` buka aplikasi dan minta kata laluan.
Dalam sistem moden, gksu sama ada tidak digalakkan atau tidak digunakan lagi. Alternatif biasa ialah pkexec , berdasarkan PolicyKit, yang membolehkan program berjalan dengan keistimewaan mengikut dasar yang ditetapkan. Banyak pelancar semasa menggunakan pkexec untuk tugas pentadbiran. Ideanya sama: pengguna tidak perlu membuka terminal, tetapi sistem mengesahkan kebenaran secara terkawal.
Untuk mencipta pintasan dalam pelancar, anda perlu mengedit fail .desktop . Baris `Exec` ialah kuncinya. Jika anda mahu ia dijalankan sebagai root, anda boleh menggunakan sesuatu seperti `Exec=gksu /path/to/program`, `Exec=kdesu /path/to/program`, atau `Exec=pkexec /path/to/program`. Jika anda menggunakan `sudo` secara langsung, anda memerlukan pelancar tersebut mempunyai `Terminal=true` atau mengkonfigurasi askpass grafik. Anda juga boleh cuba menekan Alt+F2 dan menaip pembantu dan nama program, contohnya, `gksu synaptic`. Dalam KDE, `kdesu synaptic` atau pilihan untuk dijalankan sebagai pengguna lain melakukan fungsi yang serupa.
Terdapat alternatif klasik yang dipanggil consolehelper , pembalut untuk aplikasi GUI. Anda mencipta pautan simbolik, contohnya, /usr/bin/xterm-root yang menghala ke /usr/sbin/consolehelper. Kemudian anda mengkonfigurasi PAM dengan mencipta /etc/pam.d/xterm-root dengan rangkuman auth, akaun dan sesi daripada config-util. Seterusnya, anda mentakrifkan /etc/security/console.apps/xterm-root dengan USER=root dan PROGRAM=/usr/bin/xterm. Apabila anda menjalankan xterm-root, consolehelper akan meminta pengesahan PAM dan melancarkan xterm sebagai root. Jika anda menghadapi ralat "Sambungan Xlib ke :0.0 ditolak oleh pelayan", menjalankan xhost local:root mungkin membantu.
Walau apa pun, membuka aplikasi grafik sebagai root mempunyai kelemahan: ia mencampurkan pembolehubah persekitaran, boleh memecahkan bas sesi, menjejaskan Wayland atau X11 dan mencipta fail milik root dalam direktori utama anda. Sebaiknya gunakannya hanya untuk alat pentadbiran tertentu dan tutupnya sebaik sahaja anda selesai. Jangan layari internet atau buka dokumen yang mencurigakan sebagai root , kerana sebarang eksploit akan mewarisi keistimewaan penuh.
Contoh biasa tugasan yang memerlukan akses root
Banyak operasi harian memerlukan keistimewaan yang lebih tinggi. Mengurus pakej dengan apt, zypper, dnf atau yum selalunya memerlukan sudo. Contohnya, `sudo apt update` , `sudo apt install firefox`, atau `sudo zypper install docker-ce`. Perkara yang sama berlaku untuk perkhidmatan sistem: `sudo systemctl restart apache2`, `sudo systemctl restart ssh`, atau `sudo systemctl restart nginx`. Untuk mengubah suai akaun pengguna, gunakan `sudo usermod`, dan untuk menukar pemilikan fail, gunakan `sudo chown`. Mengedit konfigurasi kritikal, seperti `/etc/ssh/sshd_config`, juga memerlukan keistimewaan root jika dilakukan dengan nano, vim atau gedit.
Anda tidak memerlukan `sudo` untuk arahan yang hanya membaca maklumat atau tidak mengubah suai sistem, seperti `zypper repos` atau `systemctl status NetworkManager`. Menggunakan `sudo` untuk semua perkara secara kebiasaan adalah amalan yang buruk. Perkara yang bijak untuk dilakukan ialah meningkatkan keistimewaan hanya apabila tugas memerlukannya dan kemudian bertukar kembali kepada pengguna biasa secepat mungkin.
Amalan terbaik apabila bekerja dengan keistimewaan yang tinggi

Prinsip keistimewaan paling rendah harus menjadi panduan segala-galanya. Gunakan `sudo` untuk arahan individu apabila boleh, elakkan shell root yang berterusan melainkan benar-benar perlu, dan keluar sebaik sahaja anda selesai. Jangan jalankan skrip daripada sumber yang tidak diketahui sebagai root; semak kod terlebih dahulu, muat turun daripada repositori rasmi atau projek yang bereputasi, sahkan checksum dan uji dalam persekitaran terpencil jika anda mempunyai sebarang keraguan. Dos skeptisisme yang sihat adalah satu kebaikan apabila berurusan dengan kod pihak ketiga yang mempunyai keistimewaan penuh.
Anda juga dinasihatkan untuk mengkonfigurasi sudoer secara terperinci, tidak hanya bergantung pada kumpulan sudo untuk semuanya, dan memastikan log diaudit. Jika anda mentadbir pelayan, semak `/var/log/auth.log`, `/var/log/secure` atau `journalctl -xe` untuk mengesan penyalahgunaan. Dalam persekitaran berbilang pengguna, mengetahui siapa yang melaksanakan setiap arahan adalah penting untuk akauntabiliti dan pematuhan dengan peraturan keselamatan.
Dayakan dan lumpuhkan root dengan kepala
Jika anda memutuskan untuk mendayakan akses root, tetapkan kata laluan dengan `sudo passwd root`, gunakannya hanya untuk tugasan penting, dan kemudian kunci semula akaun tersebut. Untuk melumpuhkan log masuk SSH langsung, edit `sshd_config` dan tetapkan `PermitRootLogin no` atau `prohibit-password`, kemudian mulakan semula SSH. Untuk mengunci akaun secara setempat, gunakan `sudo passwd -l root`. Untuk membuka kuncinya, gunakan `sudo passwd -u root`. Langkah-langkah ini mengurangkan permukaan serangan dan mencegah serangan brute-force terhadap akaun yang paling berkuasa.
Dalam kebanyakan kes, jawapan praktikal kepada soalan awal adalah ya: anda boleh melancarkan program daripada pelancar dengan keistimewaan root menggunakan pembantu grafik seperti kdesu, gksu, gksudo atau pkexec, atau dengan mencipta fail .desktop dengan arahan yang sesuai. Walau bagaimanapun, ini bukanlah sesuatu yang anda harus biarkan tersedia untuk sebarang aplikasi. Adalah lebih baik untuk mempunyai pelancar pentadbiran tertentu dengan nama yang jelas dan menggunakannya hanya apabila perlu.
Kesimpulannya, root bukanlah mainan, dan sudo wujud untuk memperkasakan anda tanpa mengubah setiap klik menjadi risiko kekal. Jika anda perlu melancarkan aplikasi grafik sebagai pengguna super, utamakan pembantu yang memerlukan kata laluan, sahkan bahawa aplikasi itu benar-benar memerlukannya, dan hadkan penggunaannya kepada tugas pentadbiran. Dengan cara ini, anda menikmati kemudahan pelancar tanpa mengorbankan keselamatan yang menjadikan Linux begitu kuat.