Jika saya memahami filosofi Linux dengan benar, sudo
harus digunakan dengan hemat, dan sebagian besar operasi harus dilakukan sebagai pengguna yang kurang beruntung. Tapi itu sepertinya tidak masuk akal, karena saya selalu harus memasukkan sudo
, apakah saya mengelola paket, mengedit file konfigurasi, menginstal program dari sumber, atau apa pun yang Anda miliki. Ini bahkan bukan hal teknis, hanya apa saja yang dilakukan pengguna biasa.
Ini sangat mengingatkan saya pada Window's UAC, yang orang nonaktifkan, atau konfigurasikan untuk tidak memerlukan kata sandi (cukup klik). Selain itu, banyak pengguna Windows adalah akun administrator juga.
Juga, saya telah melihat beberapa orang menampilkan perintah yang memerlukan sudo
hak istimewa tanpa sudo
. Apakah mereka memiliki sistem yang dikonfigurasi sedemikian rupa sehingga sudo
tidak diperlukan?
sudo
untuk melakukan apa saja yang melibatkan perubahan sistem, jika Anda hanya mengoperasikan file / desktop Anda sendiri, Anda tidak memengaruhi orang lain sehingga tidak perlu hak istimewa yang lebih tinggi. Jika Anda menjalankan perintah istimewa tanpa sudo, Anda mungkin sudah menjadi pengguna super (yaitu, root) dan itu biasanya kurang disarankan daripada menggunakan sudo untuk tugassudo
saat Anda tidak seharusnya? Perintah Unix user biasa harus sebagian besar terdiri daricd
,ls
, memindahkan file, menyalin, menghapus, dan mengedit mereka memiliki akses ke. Jika perintah biasa tidak terdiri dari ini, Anda mungkin bukan pengguna Unix biasa.sudo !!
untuk menjalankan kembali perintah terakhir yang Anda ketikkan dengan sudo di depan.Jawaban:
Anda menyebutkan fungsi administrasi sistem ini
sebagai hal yang
Dalam sistem multiuser tipikal ini bukan tindakan pengguna biasa; seorang administrator sistem akan khawatir tentang ini. Pengguna biasa (bukan "di bawah hak istimewa") kemudian dapat menggunakan sistem tanpa khawatir tentang pemeliharaannya.
Pada sistem rumah, ya, Anda akhirnya harus mengelola sistem serta menggunakannya.
Apakah benar-benar kesulitan untuk digunakan
sudo
? Ingat bahwa jika itu hanya sistem Anda, tidak ada alasan mengapa Anda tidak dapat menggunakanroot
shell (sudo -s
- lihat posting ini untuk ikhtisar berbagai cara mendapatkan shell root) dan / atau konfigurasikansudo
untuk tidak meminta kata sandi.sumber
sudo
- itu seperti cek kewarasan.Sudo / Root digunakan setiap kali Anda melakukan sesuatu yang pengguna standar seharusnya tidak memiliki kemampuan melakukan untuk risiko merusak / mengubah konfigurasi sistem dengan cara yang biasanya tidak diizinkan oleh Administrator sistem.
Semua itu adalah fungsi admin secara teknis, dan dapat secara drastis merusak sistem Anda jika terjadi kesalahan. Dalam lingkungan perusahaan, sebagai Sysadmin, itu adalah hal-hal yang TIDAK AKU akan biarkan pengguna saya lakukan tanpa sepengetahuan saya, karenanya sudo.
Sebagai contoh, jika file paket / config dapat dimodifikasi tanpa peningkatan hak, maka akan sangat sederhana untuk sumber luar untuk hanya menjalankan kode jarak jauh yang dapat merusak / membahayakan sistem Anda. Dengan memaksa tindakan-tindakan tersebut untuk memerlukan akses root, itu memaksa Anda sebagai pengguna untuk membuat keputusan tentang apakah tindakan-tindakan tersebut terjadi atau tidak.
Ini sangat mirip
UAC
dengan windows, itu sebenarnya di mana windows mendapat ideUAC
.Kutipan yang Anda terima pertama kali menggunakan sudo sangat pas, dan sangat penting:
Terutama # 2, Pikirkan sebelum Anda mengetik. Itu adalah alasan penting sudo ada, ketika Anda mengetik perintah dan menendang kembali "harus menjadi root untuk melakukan tindakan ini" itu memaksa Anda untuk berhenti dan BERPIKIR tentang apa yang sebenarnya Anda lakukan.
sumber
Anda harus mengeksekusi perintah-perintah itu sebagai superuser, tetapi Anda tidak harus mengeksekusi menggunakan
sudo
. Sebagai contoh, Anda dapat menggunakansu
ataudoas
(pengganti OpenBSDssudo
), atau Anda dapat login sebagai root.Jadi jika mereka menampilkan perintah mereka di sini tanpa
sudo
mereka menganggap bahwa pembaca hanya akan menggunakan cara favoritnya untuk mengeksekusi perintah-perintah itu sebagai superuser.Ini tentu saja tidak berarti bahwa mereka dapat menjalankan perintah tersebut sebagai pengguna normal.
sumber
sudo -i
atau serupa untuk mendapatkan shell root dan kemudian mulai menjalankan perintah root Anda tanpa harus mengantaranya masing-masing dengansudo
# vi /etc/hosts
bukan prompt unprivileged$ vi /etc/hosts
(Bash akan mengikuti konvensi jika Anda menggunakan\$
dalamPS1
)Salah satu fitur keamanan yang ditawarkan oleh
sudo
adalah Anda dapat memiliki sistem tanparoot
kata sandi , sehinggaroot
pengguna tidak dapat masuk secara langsung. Ini menawarkan perlindungan tambahan bagi pengguna yang memilih kata sandi yang lemah - penyerang yang mencoba memaksa paksa kata sandi (melalui SSH atau yang lain) harus terlebih dahulu menentukan nama pengguna yang valid.Aspek lain adalah manajemen hak istimewa yang lebih halus. Pikirkan
make; sudo make install
vs lakukanmake; make install
sebagai root. Banyak hal yang bisa salah selamamake
. Alat yang dikonfigurasi dengan buruk dapat mencoba untuk menimpa file sistem yang penting, "bersihkan"/lib
daripada direktori saat ini, konsumsi semua RAM yang tersedia dan gantung sistem, dll.make install
Adalah tindakan sederhana kecil dengan kemungkinan yang jauh lebih kecil untuk kesalahan fatal.sumber
Intinya adalah bahwa secara historis suatu sistem benar-benar dimaksudkan untuk dibagikan oleh banyak pengguna yang baru saja masuk, melakukan beberapa hal dan kemudian keluar. Demikian perbedaan antara admin dan pengguna normal. Sistem seperti itu masih ada di laboratorium universitas dan Anda dapat merasakan perbedaannya dengan tajam jika Anda menggunakan komputer tersebut. PC rumah di mana Anda adalah satu-satunya pengguna dan kebetulan juga harus bertindak sebagai admin sebenarnya adalah pengembangan yang jauh di kemudian hari.
sumber
Komputer adalah alat. Mari kita coba analogi dengan alat lain, katakanlah wajan. Terkadang, Anda harus menjaga wajan Anda. Misalnya, Anda harus membersihkannya dengan sabun cuci piring. Apakah Anda akan mengatakan bahwa sabun cuci piring merupakan bahan wajib dari setiap resep yang Anda gunakan untuk penggorengan? Anda tidak akan pernah melihat "sabun cuci piring" terdaftar sebagai bahan dalam buku memasak. Itu diperlukan, tetapi persiapan alat adalah masalah lain, jadi buku memasak tidak menyebutkannya. Wajan harus dibersihkan, tetapi bukan untuk apa wajinya.
Ini sama untuk komputer Anda. Itu harus dikonfigurasi dan diurus, tetapi bukan untuk apa itu dibuat. Anda merawatnya, Anda mengkonfigurasinya, sehingga dapat bekerja dengan baik. Setelah ini selesai, Anda dapat menggunakannya, bukan sebagai administrator sistem, tetapi sebagai pengguna. Untuk itulah dibuat. Saat Anda seorang pengguna, Anda tidak perlu sudo lagi. Cukup gunakan alat yang Anda siapkan sebelumnya. Tentu saja, dari waktu ke waktu, Anda harus menggunakan hak root, sama seperti Anda harus membersihkan wajan sesering yang Anda gunakan untuk memasak.
Jadi tanpa melebih-lebihkan terlalu banyak, kita dapat mengatakan bahwa Anda tidak perlu sudo (atau kata sandi root) untuk menggunakan komputer Anda. Hanya untuk menyiapkan komputer Anda.
sumber
sudo
atau Anda hanya perlu master chef dan mengerjakannyasu
.Saya yakin itu karena Anda menggunakan perangkat lunak GUI untuk semua hal kecuali tugas administrasi sistem, atau Anda berbicara tentang server Linux, dalam hal ini sebagian besar akses secara alami akan menjadi administrasi sistem. Oleh karena itu mungkin terasa seperti melakukan apa saja di shell memerlukan
sudo
.Dimungkinkan juga untuk menggunakan shell untuk tugas sehari-hari Anda. Mengelola file pribadi Anda di
~
, mengedit file, mengobrol di IRC, menyusun kode, menjelajah web, semua itu bisa dilakukan dalam sebuah shell. Saya bahkan menggunakanbc
kalkulator masuk saya. Beberapa hal lebih mudah dilakukan melalui GUI, beberapa hal lebih mudah dilakukan melalui shell - bahkan jika Anda lebih suka menggunakan GUI, shell akan sering unggul dalam operasi batch dan otomatisasi (pikirkan skrip shell). Secara pribadi saya menggunakan mana yang terbaik untuk tugas yang ada.Dalam beberapa kasus itu ide yang baik untuk mengatur sistem Anda sehingga Anda tidak perlu menggunakannya
sudo
setiap waktu untuk operasi yang secara default memerlukan root tetapi tidak mungkin menyebabkan masalah. Salah satu contoh adalah bahwa saya bekerja dengan perangkat keras yang melibatkan penggunaan port serial, dan saya telah menyiapkan aturan udev untuk memberikan akses ke perangkat sebagai pengguna biasa saya tanpa harus menjadi root.Saya tidak berpikir itu ide yang baik untuk dikonfigurasi
sudo
agar tidak memerlukan kata sandi. Itu membuatnya terlalu mudah untuk mengacaukan seluruh sistem Anda dengan satu perintah salah ketik atau skrip berbahaya.Jika Anda perlu melakukan tugas yang benar-benar membutuhkan root sepanjang waktu, mengapa tidak membiarkan
sudo -s
shell root persisten berjalan di jendela terminal? Maka itu akan tersedia tanpa harus mengetikkan kata sandi, dan itu tidak mudah digunakan secara tidak sengaja. Saya bahkan mengatur shell prompt saya menjadi merah terang ketika di shell root.sumber
Kata sifat tersirat terkait dengan semua ini adalah bahwa mereka adalah perubahan sistem atau global . Anda harus mempertimbangkan asal-usul Unix sebagai sistem multi-pengguna 1 di mana beberapa pengguna akan menggunakan instalasi yang sama dari jarak jauh. Tidak masuk akal bagi satu pengguna awam untuk memperbolehkan mengubah pengaturan global untuk semua pengguna. Itu adalah sysadmin, akar, hak istimewa dan tanggung jawab.
Dalam pengaturan multi-pengguna Anda memiliki masing-masing perangkat lunak yang sudah diinstal sebelumnya dan konfigurasi seluruh sistemnya masing
/usr
-/etc
masing. Menyentuh lokasi ini akan memerlukan izin root. Tetapi karena perangkat lunak Unix ditulis dengan pemikiran multi-pengguna, Anda dapat mengkompilasi dan menginstal perangkat lunak di bawah$HOME
direktori 2 , dan memiliki file konfigurasi Anda sendiri di bawah rumah Anda, tempat Anda dapat mengedit file dengan bebas tanpa menjadi pengguna super.Selain menginstal perangkat lunak Anda sendiri di bawah rumah, sebagian besar perangkat lunak seluruh sistem akan membaca konfigurasi khusus pengguna
$HOME
segera setelah mereka pertama kali membaca konfigurasi/etc
. Ini memungkinkan Anda untuk menyesuaikan hampir semua hal tanpa harus pergiroot
.Dengan PC rumahan, dalam satu pengaturan pengguna utama, Anda dapat menggunakan
sudo
dan me-root jalan Anda ke hal-hal yang Anda sukai. Tapi itu kebiasaan untuk tidak menyentuh konfigurasi aplikasi/etc
tetapi selalu memberikan konfigurasi khusus pengguna di rumah. Dengan begitu Anda dapat mengizinkan manajer paket Anda untuk mereset konfigurasi sistem pada pembaruan. Menginstal perangkat lunak baru di seluruh sistem cukup baik dalam pengaturan pengguna tunggal; paket-paket distro tidak menggunakan alternatifnya jadi itu jalan keluar yang mudah.Saya akan membiarkan manajer paket saya menginstal hal-hal secara global tetapi semua hal yang dikompilasi-dari-sumber dan hal-hal buatan sendiri yang saya tinggalkan
$HOME
. Dan aku tidak perlu sudo untuk semua itu.Jika Anda memiliki file data, penyimpanan di luar Anda
$HOME
, silakanchown
atauchgrp
direktori ke nama Anda sehingga Anda dapat mengakses file tanpasudo
.[1] (sedikit ironis karena Unix dimaksudkan untuk menjadi versi 'pengguna tunggal' dari sistem operasi Multics)
[2] (jika sistem memungkinkan ini dengan tidak memasang partisi rumah sebagai noexec)
sumber
Dalam jenis sistem multiuser yang dirancang untuk UNIX (dan, menurut keturunan, Linux), ini bukan tindakan pengguna biasa . Seorang administrator sistem mungkin melakukan hal itu, tetapi bukan pengguna biasa, sehingga sistem meminta untuk memastikan bahwa sysadmin benar-benar ingin melakukan ini.
Tetapi bahkan dalam sistem rumah pengguna tunggal, ini bukan tindakan pengguna biasa . Orang biasanya harus melakukan ini ketika awalnya mengatur sistem, tetapi begitu selesai, pengguna biasa tidak harus melakukannya terlalu sering . Sebagian besar pengguna hanya bekerja pada file di dalam direktori home mereka (atau subdirektori dari itu), menggunakan program / paket yang sudah diinstal, dan Anda tidak perlu
sudo
untuk itu. Atau mereka mungkin bekerja di direktori khusus di tempat lain pada sistem yang telah disisihkan untuk tujuan itu, dan Anda perlusudo
mengaturnya, tetapi Anda biasanya hanya perlu melakukannya sekali.Mengapa itu penting? Karena "pengguna tunggal" adalah istilah yang keliru: Anda bukan satu-satunya pengguna mesin Anda, meskipun Anda mungkin satu-satunya pengguna manusia . Bahkan pada instalasi Linux rumahan yang khas, banyak program yang diatur untuk menggunakan mesin dengan berbagai cara sendiri, sering mensimulasikan sesuatu yang mungkin dilakukan manusia jika mereka memiliki waktu dan perhatian untuk dicadangkan: cadangan, pembaruan, pemindaian malware, dan Suka. Sebagian besar waktu, penggunaan itu benar-benar jinak, tetapi bahkan untuk beberapa di antaranya, masih bijaksana untuk memastikan bahwa pengguna benar-benar ingin melakukan ini. Dan ketika kasus-kasus itu muncul, itulah gunanya
sudo
. Komputer hanya memeriksa untuk memastikan itu benar-benar Anda yang ingin melakukan apa yang seseorang (mungkin Anda, mungkin program) mengatakan Anda lakukan. Dan itu bahkan tidak masuk ke kemungkinan malware, yang tentu saja Anda tidak ingin menyamar sebagai Anda.sumber
Ini mungkin tidak biasa seperti yang diwakili tetapi biasanya terjadi ketika sesuatu yang santai secara internal memerlukan panggilan sistem istimewa yang lebih umum untuk mencapai hasilnya, misalnya:
umount
adalah perintah serius karena Anda dapat meng-unmount banyak hal dengannya.ifup
, dll) hanya untuk pengguna super.Sistem umumnya berkembang untuk mengurangi jumlah kasus seperti itu. Stik USB dapat dipasang pengguna sekarang dan jaringan dapat dihubungkan pengguna. Tetapi tidak selalu seperti ini.
sumber
Asumsi: ini adalah sistem Anda dan data Anda.
Anda hanya perlu mempertimbangkan risiko menghapus data secara tidak sengaja atau merusak OS Anda vs kemudahan melakukan hal-hal tanpa mengetik
sudo
setiap saat.Saya secara rutin masuk dan bekerja sebagai root di server rumah saya karena
saya bisalebih mudah.Anda akan diberitahu bahwa Anda dapat meluncurkan senjata nuklir jika Anda tidak pergi melalui santo suci
sudo
tetapi kenyataannya adalah bahwa hari ini orang memilikiroot
kekuatan (*) pada banyak perangkat (TV Anda, ponsel Anda, pemanggang roti Anda, Windows Anda (seperti Anda sebutkan)). Linux tidak berbeda di sini, walaupun banyak yang suka berpikir sebaliknya.BTW
UAC
tidak menjadi model setelahsudo
peran utamanya (selain membuat hidup Anda sengsara) untuk memastikan bahwa Anda akan melihat kapan malware ingin melakukan sesuatu atas nama Anda.(*)
root
Kekuatan didefinisikan sebagai kapasitas untuk mengeluarkan data penting. Pepatah "dengan kekuatan besar datang masalah besar" (atau apa pun itu) berlaku.Jika asumsi saya salah maka Anda masih perlu mempertimbangkan risiko di atas tetapi ada lebih banyak variabel (pekerjaan Anda, foto yang diambil oleh pasangan Anda dan disimpan di laptop yang sama, ...)
sumber
rm -rf ~/
tanpa izin khusus. Di sisi lain, Anda tidak dapat menutup ponsel atau TV tanpa me-rootingnya terlebih dahulu.Untuk membela orang yang menulis pertanyaan awal, saya memiliki pertanyaan yang sama di tahun-tahun sebelumnya, tetapi saya mengambil pendekatan yang berbeda.
Sebagian besar jawaban di sini hanya dapat dimainkan dalam satu lingkaran, karena semuanya tetap menekankan poin yang sama tentang sudo dan root. Biarkan saya menambahkan perspektif berbeda ke topik ini:
Cara saya mempelajari Unix DAN Linux dari dalam ke luar adalah dengan menggunakan salah satu komputer saya sebagai "kelinci percobaan." Saya akan menginstal SCO Linux, dan akhirnya Solaris dan kemudian Linux lama kemudian, semuanya dengan gembira bereksperimen sebagai root sehingga saya bisa membaca dan / atau menjelajahi hierarki direktori dan semua file dengan akses yang tidak dibatasi, juga membuat akun "pengguna biasa" di rumah saya kotak multi-user yang tumbuh, meskipun saya adalah satu-satunya pengguna. Dan saya senang saya melakukannya dengan cara itu. Saya belajar banyak tentang "Unix Philosophy" dan cara Unix dimaksudkan untuk digunakan dalam percobaan saya.
Saya mengalami ledakan belajar tentang keamanan, dan juga menjalankan perintah berbahaya dengan mengetikkan rm -rf / * di terminal sebagai root. (JANGAN MELAKUKAN INI! ITU AKAN MENYEMBUNYIKAN SISTEM ANDA !!) Saya melakukan hal-hal seperti ini dan banyak perintah lainnya, hanya untuk melihat apa yang akan terjadi secara real-time. Saya melakukan hal-hal ini mengetahui konsekuensi sebelumnya, namun saya masih belajar banyak dengan melakukannya. Saya menggunakan SCO Unix PANJANG bahkan sebelum web ada (ya, saya setua itu!) Dan bereksperimen dengan cara ini sangat berharga bagi pembelajaran saya.
Jadi yang saya katakan adalah jika Anda tidak keberatan melakukan instalasi ulang ketika ada masalah, gunakan su atau login sebagai root semua yang Anda inginkan dan konfigurasikan / retas! Anda akan belajar banyak dari itu dengan melakukannya.
Ingatlah bahwa saran yang telah banyak diulangi diulangi untuk alasan yang baik: Protokol praktik terbaik telah berkembang selama beberapa dekade karena compsec telah berkembang, dan Anda HARUS memperhatikannya, bahkan sebagai pengguna rumahan / tunggal sistem Anda . Dengan melakukan itu, kebersihan / kebiasaan sysadmin yang baik akan menjadi kebiasaan Anda.
Hanya beberapa makanan untuk dipikirkan tentang topik su dan sudo. Selamat melakukan peretasan!
sumber