Harus satu-satunya pengguna *nix system memiliki dua akun?

Harus satu-satunya pengguna *nix (terutama Linux dan MacOS) memiliki dua akun, yang satu dengan sudo hak-hak istimewa dan satu tanpa? Tahun yang lalu saya membaca bahwa pada komputer pribadi anda, anda harus melakukan tugas-tugas harian anda sebagai user biasa dan beralih ke pengguna istimewa untuk tugas-tugas administrasi. Apakah ini benar?

Catatan: saya not mengacu pada apakah atau tidak anda harus login sebagai root untuk penggunaan sehari-hari. Yang's jelas ide yang buruk, tetapi harus anda sehari-hari menggunakan akun dapat menggunakan sudo?

Catatan kedua: saya secara khusus mengacu pada perangkat pribadi yang not digunakan sebagai server atau host fungsionalitas untuk pengguna jarak jauh.

Mengomentari pertanyaan (6)
Larutan

Updated secara dramatis setelah 69 upvotes, lihat jawaban sejarah untuk jawaban asli. Terima kasih untuk @JimmyJames untuk [diskusi][1].

Pertama, let's berbicara tentang ancaman model: apa yang anda mencoba untuk menghentikan penyerang potensial dari lakukan?

Ancaman model: pencurian identitas / ransomeware pada sistem pengguna tunggal

Umumnya untuk end-user sistem de facto ancaman model adalah pencurian identitas / ransomware. Jika penyerang memiliki akses ke dokumen dan/atau dapat menjalankan perintah shell seperti anda, itu's permainan berakhir. Dari perspektif itu, akses root doesn't mendapatkan penyerang apa-apa; mereka bisa mendapatkan apa yang mereka inginkan tanpa itu. Jika pencurian identitas / malware adalah satu-satunya hal yang anda're khawatir, maka itu doesn't tampak seperti itu hal-hal yang jauh apakah anda pengguna telah sudo kekuasaan, atau pernah apakah browser yang sedang berjalan sebagai root. (Saya juga harus menunjukkan bahwa malware / menghubungkan anda ke sebuah botnet dapat terjadi tanpa akses root sejak login script / penjadwalan cron job tidak memerlukan root). Randall Munroe di XKCD tampaknya setuju dengan pandangan ini: [![Otorisasi][2]][2] Terakhir, saya'll menambahkan disclaimer: Ya, saya'm sadar bahwa ini bertentangan dengan masyarakat umum berpendapat bahwa "keamanan yang lebih selalu lebih baik". It's tidak benar. Kadang-kadang keamanan yang lebih buruk, seperti terlalu rumit kebijakan password yang akhirnya memaksa orang-orang untuk menuliskan password mereka. Anda selalu harus melihat risiko dan memutuskan berapa banyak keamanan adalah benar-benar sesuai. Dalam hal ini ada's tidak ada salahnya untuk mengunci bawah akses root, tapi anda yang membuat hidup anda lebih rumit dan's tidak jelas bahwa anda're mendapatkan apa-apa dari itu.

Ancaman model: akses root atau sistem multi-user

Jika anda memiliki ancaman model di mana penyerang menginginkan sesuatu yang hanya root memiliki akses ke, atau ada lebih dari satu akun pengguna pada mesin, maka jawabannya benar-benar tergantung pada nix anda're bicarakan. Ini adalah cepat mendapatkan jauh dari komputer pribadi kasus dan ke server kasus, tapi aku'll membahas pula. Untuk linux, karena bug (*ahem fitur\) di Xorg sistem windowing, sehari-hari anda akun harus mungkin tidak memiliki sudo kekuasaan. Untuk sistem operasi yang don't menggunakan X, it's mungkin ok.

Linux (running X.org sistem jendela)

[Di sini's sebuah artikel yang bagus][3] yang menunjukkan anda bagaimana untuk log semua penekanan tombol pada gui linux menggunakan mesin sederhana yang user-tanah (non-root) perintah shell. Secara ringkas: $ xinput daftar menunjukkan anda semua yang terhubung manusia-perangkat input $ xinput tes <id> mulai bergema semua penekanan tombol pada perangkat yang dipilih. Aku diuji dan saya mendapatkan log password yang saya ketik sudo di jendela terminal. Jika aku mengunci komputer saya kemudian ketika saya masuk kembali, saya melihat log password saya mengetik pada layar kunci. Rupanya ini bukan bug dalam X, it's fitur. Benar, aku'm akan pergi bersembunyi di bawah tempat tidur saya sekarang. Jadi ya, ini mendukung gagasan bahwa setiap pengguna yang login ke dalam gui dengan tidak harus memiliki sudo kekuasaan karena itu's sepele untuk login password anda dan kemudian menjadi akar. Saya kira anda harus memiliki account khusus untuk sudo mkdir dan beralih ke terminal TTY (ctrl+alt+#) bila anda ingin menggunakansudo`. Apakah atau tidak ini adalah layak khawatir tentang anda: secara pribadi, semua data yang saya pedulikan adalah yang sudah ada di akun pengguna saya, tapi saya mungkin akan mengubah laptop saya setup karena saya'm keamanan nerd. Perhatikan bahwa dalam tes saya, saya tidak mampu keylog seluruh pengguna. Melakukan "Beralih Akun" di gui, atau startx di new terminal tty tampaknya peluncuran yang terisolasi contoh X. Terima kasih untuk @MichaelKjöenyebab keriting untuk pengamatan ini:

Yang's salah satu hal yang Wayland [sistem windowing dirancang untuk menggantikan X] benar-benar mencoba untuk memperbaiki (lihat poin-poin pada keamanan). Ingat bahwa X11 berawal pada saat ancaman model yang sangat berbeda dari apa yang sekarang ini. Untuk sysadmin: ini memperkuat kebiasaan hanya berinteraksi dengan Linux kotak melalui ssh, tidak pernah menggunakan GUI.

Mac OSX

I'm tidak OSX ahli, tapi aku tahu bahwa itu tidak menggunakan Xorg server jadi saya akan berasumsi bahwa Apple's GUI menangani ini dengan baik, tapi saya akan senang untuk orang yang lebih ahli dari saya untuk menimbang.

Windows

I'm tidak ahli Windows baik, tapi saya percaya bahwa User Account Control (UAC) fitur yang diperkenalkan di Windows 7 membahas hal ini dengan memiliki admin meminta render di secure desktop dan masukan bus terisolasi dari desktop biasa.

Komentar (9)

Dalam kebanyakan situasi, membutuhkan password dengan sudo cukup perlindungan yang cukup.

Perbedaan utama antara su ing untuk akun lain dansudo mkdir: untuk mendapatkan hak-hak istimewa adalah bahwa dengan sudo anda memasukkan password yang sama yang anda gunakan untuk log in. Jika anda ancaman model mengasumsikan bahwa penyerang memiliki password akun anda, maka anda're sudah cukup dalam kesulitan, lebih dari yang lain password pada akun root akan melindungi anda dari.

Komentar (4)

Saya telah menemukan bahwa memiliki dua account pada sistem unix adalah penting untuk alasan berikut:

Jika aku pernah mengacaukan saya .bashrc atau login / terminal file setup saya bisa masuk ke sitution di mana aku bahkan tidak bisa log in. Jadi saya benar-benar borked. Ini adalah situasi terburuk yang bisa dibayangkan seperti yang anda bisa't berbuat banyak jika anda bisa't log in.

Satu-satunya cara saya bisa memperbaiki hal ini pada beberapa komputer memiliki login yang lain yang memungkinkan saya untuk masuk dan menggunakan sudo, memperbaiki file startup untuk account utama saya. Saya kemudian log out dari akun saya'2' dan kembali ke my account reguler.

Kadang-kadang saya might dapat menggunakan boot dari USB pilihan tapi jujur saya merasa mampu untuk login ke akun yang lain, menggunakan sudo dan memperbaiki kesalahan saya .bashrc kemudian logout dan kembali ke akun yang lain semua bisa dilakukan dalam beberapa detik dengan kedua login dan jauh lebih menakutkan / asing dari USB boot untuk memperbaiki pilihan bagi saya. Tentu saja YMMV (jarak Tempuh Anda Mungkin Sangat)

Komentar (6)

I'm menggunakan setup ini, tetapi alasan melampaui sistem tunggal.

Jika anda ingin backup yang memberikan perlindungan terhadap ransomeware (dan anda don't ingin menganggap tidak ada-satu akan menulis ransomeware untuk Linux), anda harus membuat cadangan untuk sistem eksternal yang membuat beberapa revisi.

Namun, saya belum't got a dedicated workstation/terminal untuk administrasi server backup. Log in sebagai pengguna terpisah untuk hal ini (tidak menggunakan su) menyediakan satu lapisan perlindungan di sini. Jika saya login normal memiliki sudo hak istimewa, ada'a masih menjadi penahan kecepatan, tapi itu akan menjadi cukup tipis (ketidakjelasan, dan malware akan memiliki untuk menangkap sudo password).

Komentar (0)

Apa manfaat dari sudo ?

Anda don't perlu berbagi password root dengan setiap pengguna untuk melakukan beberapa jenis tugas administrasi pada sistem anda sendiri.

Otentikasi secara otomatis berakhir setelah waktu yang singkat (15 menit) dan anda dapat mengatur timestamp_timeout=0 bawah /etc/sudoers untuk membuat sudo password berakhir setiap 0 (nol) detik. Ini berarti bahwa setiap kali anda menggunakan sudo, anda akan diminta untuk password.

Apa kerugian dari sudo :

Ketika seorang pengguna menggunakan password yang lemah itu akan memungkinkan seorang penyerang untuk cepat crack password pengguna dan meningkatkan privilage untuk mendapatkan akses root

Root password dapat terkunci secara default di beberapa distro linux seperti Ubuntu. Mengapa?

Karena di hadapan root akun , seorang penyerang akan mencoba pertama kali brute-force password root. Ini akan menjadi lebih rumit jika akar akun dinonaktifkan .

Pengguna dapat mengubah kepemilikan file sistem dengan mengetahui password root atau merusak sistem anda dengan menjalankan sebuah program berbahaya.

Komentar (1)

Semua pengguna PC harus memiliki setidaknya admin lokal, tetapi akal sehat ini dilindungi password (pengguna Android note ini.). Tergantung pada penggunaan saya tidak melihat alasan mengapa tidak bisa ada hanya satu akun. Ini adalah kasus untuk Puppy Linux dan telah cukup berhasil selama bertahun-tahun. Namun itu lebih baik untuk memiliki dua tingkat perlindungan dan terpisah /sbin folder untuk saat-saat kita canggung dan/atau bodoh. Ini adalah satu hal untuk pantat dial seseorang, itu adalah hal lain untuk pantat menghapus direktori. Malas pengguna hanya akan menambah semua yang mereka butuhkan untuk file sudoers. Privilege escalation umumnya bergantung pada memiliki akses ke beberapa akun di tempat pertama, jadi kita kontrol ini. Account pada server dan peralatan harus dibenarkan, dan kami peduli tentang kami workstation yang digunakan sebagai de facto alat terhadap kita. Intinya adalah, untuk banyak PC's ada tidak ada lain pengguna nyata.

Komentar (0)

Setiap mesin membutuhkan account admin, apapun OS. Ok, kebanyakan Linux rasa sembunyi user root dengan memberikan sebuah inexistant password - dalam arti bahwa setiap masukan akan kembali palsu - tapi root memang ada dan memiliki user id 0.

Bahwa admin akun dapat mengubah apa pun di sistem anda, termasuk hal-hal yang tidak diperbolehkan untuk pengguna normal. Garis pertahanan di sini, adalah bahwa jika seorang penyerang mendapatkan akses ke user root kebetulan (*) dia bisa dengan mudah menginstal backdoor untuk bisa mendapatkan lagi di akan. Dan anda tidak akan melihat kecuali anda consitently menganalisis keamanan sistem (log, perubahan dalam sistem file, ...) pada basis reguler.

Jika seorang penyerang mendapatkan akses ke non root account secara kebetulan, ia hanya akan mampu membuat perubahan pada apa yang dapat diakses oleh akun ini. Ok, dia bisa mengubah password jika ia berhasil mendapatkan shell, tapi anda pasti akan melihat waktu berikutnya anda mencoba untuk login!

Yang berarti bahwa pertahanan garis tidak menggunakan root adalah hanya terhadap serangan yang jauh - jika seseorang yang memiliki akses fisik ke mesin, ia dapat membaca segala sesuatu yang tidak sangat dienkripsi dan write/erase benar-benar segala sesuatu - termasuk database password untuk menambahkan akun admin lainnya. Satu-satunya pengecualian di sini adalah bahwa jika seluruh disk terenkripsi, satu-satunya tindakan yang mungkin dilakukan adalah untuk menghapus segalanya dan segar re-install.

Tapi saya mengakui bahwa bahkan jika saya tahu bahwa sudo adalah sebuah perangkat lunak yang besar dan dapat digunakan untuk memungkinkan berbutir halus izin. Aku tidak suka sangat banyak default Linux cara di mana sudo bisa melakukan apa-apa, karena itu lebih rentan terhadap ini:

  • penyerang memperoleh akses ke non root shell diperbolehkan untuk sudo
  • ia mengubah kata sandi akun
  • dia sudoes sebagai root dan menginstal backdoor (atau versi modifikasi dari su yang meminta tidak ada password - sepele untuk menulis)
  • dia istirahat master password file dan pergi

Waktu berikutnya anda mencoba untuk login, anda akan melihat bahwa anda tidak bisa, gunakan prosedur pemulihan untuk menemukan bahwa password master yang rusak, membangun kembali atau re-install dari versi arsip dan jika anda tidak hati-hati menganalisis sistem, tidak pernah melihat pintu belakang.


Ketika saya mengatakan mendapatkan akses secara kebetulan, maksud saya di non reproductible cara, misalnya, jika menggunakan kerentanan ketika anda tersambung ke sebuah situs berbahaya. Kecuali penyerang menginstal backdoor, ia hanya akan mendapatkan akses lagi ketika anda kembali ke situs tersebut, yang mungkin atau tidak terjadi.

TL/DR: pendapat Saya adalah bahwa setiap mesin harus memiliki minimal 2 rekening: satu non priviledged satu untuk penggunaan normal, dan administratif untuk tugas-tugas administratif.

Komentar (0)

Aren't backup solusi untuk masalah ini? Membuat cadangan seluruh hard drive secara teratur tampak seperti ide yang baik pada umumnya untuk berbagai alasan, kemungkinan mengacaukan .bashrc adalah salah satu dari mereka.

Komentar (2)