TL; DR: Chỉ làm những thứ gốc khi bạn phải. sudo
làm cho điều này khá dễ dàng. Nếu bạn bật đăng nhập gốc, bạn vẫn có thể tuân theo quy tắc này, bạn chỉ cần cẩn thận để làm như vậy. Mặc dù việc kích hoạt đăng nhập gốc không thực sự không an toàn nếu được thực hiện đúng, bạn không cần bật đăng nhập gốc vì bạn có sudo
.
Thực sự có hai câu hỏi liên quan ở đây.
- Tại sao việc đăng nhập với quyền root cho việc sử dụng máy tính hàng ngày của một người là xấu (duyệt web, email, xử lý văn bản, chơi game, v.v.)?
- Tại sao Ubuntu mặc định vô hiệu hóa đăng nhập gốc hoàn toàn và sử dụng
sudo
và polkit để cho phép quản trị viên chạy các lệnh cụ thể như root?
Tại sao không chạy mọi thứ như root, mọi lúc?
Hầu hết các câu trả lời khác bao gồm điều này. Nó đi xuống:
- Nếu bạn sử dụng quyền hạn gốc cho các nhiệm vụ không yêu cầu chúng và cuối cùng bạn sẽ làm điều gì đó bạn không muốn làm, bạn có thể thay đổi hoặc làm hại hệ thống của mình theo cách bạn không muốn.
- Nếu bạn chạy một chương trình với quyền root khi bạn không cần và cuối cùng nó sẽ làm điều gì đó mà bạn không muốn làm - ví dụ, do lỗ hổng bảo mật hoặc lỗi khác - nó có thể thay đổi hoặc gây hại hệ thống của bạn theo cách bạn không muốn.
Đúng là ngay cả khi không làm mọi thứ như root, bạn có thể gây hại. Ví dụ: bạn có thể xóa tất cả các tệp trong thư mục chính của mình, thường bao gồm tất cả các tài liệu của bạn, mà không cần chạy bằng root! (Hy vọng bạn có bản sao lưu.)
Tất nhiên, là root, có những cách bổ sung để vô tình phá hủy những dữ liệu tương tự. Ví dụ: bạn có thể chỉ định of=
đối số sai cho một dd
lệnh và ghi dữ liệu thô qua các tệp của bạn (điều này khiến chúng trở nên khó khăn hơn, nếu bạn chỉ xóa chúng).
Nếu bạn là người duy nhất sử dụng máy tính của bạn, tác hại bạn chỉ có thể gây ra khi root có thể không thực sự cao hơn tác hại bạn có thể làm với các đặc quyền người dùng thông thường của mình. Nhưng đó vẫn không phải là lý do để mở rộng rủi ro của bạn để bao gồm các cách bổ sung để làm rối hệ thống Ubuntu của bạn.
Nếu việc chạy bằng tài khoản người dùng không phải root đã ngăn bạn thực hiện quyền kiểm soát máy tính của chính mình, thì điều này tất nhiên sẽ là một sự đánh đổi tồi tệ . Nhưng nó không-- bất cứ khi nào bạn thực sự muốn thực hiện một hành động với quyền root, bạn có thể làm như vậy với sudo
và các phương thức khác .
Tại sao không làm cho nó có thể đăng nhập như root?
Ý tưởng rằng khả năng đăng nhập với quyền root vốn không an toàn là một huyền thoại. Một số hệ thống có tài khoản root được bật theo mặc định; các hệ thống khác được sử dụng sudo
theo mặc định và một số được cấu hình với cả hai.
- Ví dụ, OpenBSD , được coi là hệ điều hành đa năng an toàn nhất trên thế giới, được vận chuyển với tài khoản gốc được kích hoạt để đăng nhập dựa trên mật khẩu, cục bộ.
- Các hệ điều hành được kính trọng khác thực hiện điều này bao gồm RHEL , CentOS và Fedora .
- Debian (từ đó Ubuntu xuất phát ) để người dùng quyết định cách tiếp cận nào sẽ được cấu hình, trong quá trình cài đặt hệ thống.
Không sai khách quan khi có một hệ thống kích hoạt tài khoản root, miễn là
- bạn vẫn chỉ sử dụng nó khi bạn thực sự cần, và
- bạn hạn chế quyền truy cập vào nó một cách thích hợp.
Thông thường người mới hỏi làm thế nào để kích hoạt tài khoản root trong Ubuntu. Chúng ta không nên che giấu thông tin này từ họ, nhưng thông thường khi mọi người hỏi điều này bởi vì họ có ấn tượng sai lầm rằng họ cần kích hoạt tài khoản root. Trên thực tế, điều này gần như không bao giờ cần thiết, vì vậy khi trả lời những câu hỏi như vậy, điều quan trọng là chúng tôi giải thích điều đó. Kích hoạt tài khoản root cũng giúp bạn dễ dàng tự mãn và thực hiện các hành động với quyền root không yêu cầu quyền root. Nhưng điều này không có nghĩa là cho phép tài khoản root tự nó không an toàn.
sudo
khuyến khích và giúp người dùng chạy các lệnh như root chỉ khi họ cần. Để chạy một lệnh như root, gõ sudo
, một khoảng trắng, và sau đó là lệnh. Điều này rất thuận tiện và nhiều người dùng thuộc mọi cấp độ kỹ năng thích phương pháp này.
Nói tóm lại, bạn không cần kích hoạt thông tin đăng nhập gốc vì bạn có sudo
. Nhưng miễn là bạn chỉ sử dụng nó cho các tác vụ quản trị yêu cầu, thì nó cũng an toàn không kém để bật và đăng nhập với quyền root, miễn là nó chỉ theo những cách sau:
Tuy nhiên, rủi ro bảo mật được thêm đáng kể phát sinh nếu bạn đăng nhập bằng root theo những cách sau:
Đồ họa. Khi bạn đăng nhập bằng đồ họa, toàn bộ nhiều thứ sẽ chạy để cung cấp giao diện đồ họa và cuối cùng bạn sẽ chạy nhiều ứng dụng hơn dưới dạng root để sử dụng giao diện đó cho mọi thứ. Điều này đi ngược lại nguyên tắc chỉ chạy các chương trình là root thực sự cần quyền root. Một số chương trình này có thể chứa lỗi, bao gồm cả lỗi bảo mật.
Hơn nữa, có một lý do không bảo mật để tránh điều này. Đăng nhập bằng đồ họa dưới dạng root không được hỗ trợ tốt - như loevborg đề cập , các nhà phát triển môi trường máy tính để bàn và các ứng dụng đồ họa thường không kiểm tra chúng là root. Ngay cả khi họ làm như vậy, đăng nhập vào môi trường máy tính để bàn đồ họa dưới dạng root không được người dùng thử nghiệm alpha và beta trong thế giới thực, vì hầu như không ai thử nó (vì lý do bảo mật đã giải thích ở trên).
Nếu bạn cần chạy một ứng dụng đồ họa cụ thể như root, bạn có thể sử dụnggksudo
hoặc sudo -H
. Điều này chạy các chương trình gốc ít hơn nhiều so với khi bạn thực sự đăng nhập bằng đồ họa với tài khoản root.
Từ xa. Các root
tài khoản có thể có hiệu lực làm bất cứ điều gì, và nó có cùng tên trên thực tế tất cả các hệ thống Unix-like. Bằng cách đăng nhập bằng root thông qua ssh
hoặc các cơ chế từ xa khác, hoặc thậm chí bằng cách định cấu hình các dịch vụ từ xa để cho phép nó , bạn sẽ dễ dàng hơn cho những kẻ xâm nhập, bao gồm các tập lệnh tự động và phần mềm độc hại chạy trên botnet, để có quyền truy cập thông qua sức mạnh vũ phu, tấn công từ điển (và có thể một số lỗi bảo mật).
Có thể cho rằng rủi ro không quá cao nếu bạn chỉ cho phép đăng nhập gốc dựa trên khóa và không đăng nhập bằng mật khẩu .
Theo mặc định trong Ubuntu, không có thông tin đăng nhập gốc đồ họa cũng như đăng nhập từ xa thông qua SSH, ngay cả khi bạn cho phép đăng nhập bằng root . Đó là, ngay cả khi bạn kích hoạt đăng nhập root, nó vẫn chỉ được kích hoạt theo những cách an toàn hợp lý.
- Nếu bạn chạy một máy chủ ssh trên Ubuntu và không thay đổi
/etc/sshd/ssh_config
, nó sẽ chứa dòng PermitRootLogin without-password
. Điều này vô hiệu hóa đăng nhập gốc dựa trên mật khẩu, nhưng cho phép đăng nhập dựa trên khóa. Tuy nhiên, không có khóa nào được cấu hình theo mặc định, vì vậy trừ khi bạn thiết lập một khóa, điều đó cũng sẽ không hoạt động. Hơn nữa, đăng nhập root từ xa dựa trên khóa ít tệ hơn nhiều so với đăng nhập root từ xa dựa trên mật khẩu, một phần vì nó không tạo ra nguy cơ tấn công từ điển và tấn công từ điển.
- Mặc dù các mặc định sẽ bảo vệ bạn, tôi nghĩ vẫn nên kiểm tra cấu hình ssh của bạn, nếu bạn sẽ kích hoạt tài khoản root. Và nếu bạn đang chạy các dịch vụ khác cung cấp đăng nhập từ xa, như ftp, bạn cũng nên kiểm tra chúng.
Túm cái vạy lại là:
- Chỉ làm công cụ root khi bạn cần;
sudo
giúp bạn làm điều đó, trong khi vẫn cung cấp cho bạn toàn bộ quyền lực bất cứ lúc nào bạn muốn.
- Nếu bạn hiểu cách thức hoạt động của root và sự nguy hiểm của việc lạm dụng nó, việc kích hoạt tài khoản root không thực sự có vấn đề từ góc độ bảo mật.
- Nhưng nếu bạn hiểu điều đó, bạn cũng biết rằng bạn gần như chắc chắn không cần phải kích hoạt tài khoản root .
Để biết thêm thông tin về root và sudo
, bao gồm một số lợi ích bổ sung sudo
mà tôi chưa đề cập ở đây, tôi rất khuyến nghị RootSudo trong wiki trợ giúp Ubuntu.