Có gì sai khi luôn luôn root?


83

Tôi có cảm giác đây là một câu hỏi ngu ngốc, nhưng đây là điều mà tôi đã tự hỏi một lúc.

Tôi có một VPS và đây là liên doanh linux lớn đầu tiên của tôi. Tôi là người duy nhất có quyền truy cập vào nó. Câu hỏi của tôi là, có gì sai khi chỉ đăng nhập bằng root thay vì tạo tài khoản và cấp cho họ quyền truy cập sudo? Nếu một sudoer có thể làm mọi thứ root có thể, thì sự khác biệt là gì? Nếu một hacker có thể bẻ khóa mật khẩu của tôi vào tài khoản không phải root của tôi, thì anh ta cũng có thể thực thi các lệnh sudo, vậy làm thế nào để tin tặc bẻ khóa tài khoản root của tôi ít nhiều?


28
Tôi cũng nhận xét rằng nếu bạn không quen thuộc với "Cách thức Unix", đây không phải là một câu hỏi ngu ngốc. Bạn sẽ nhận được một phần thưởng cho suy nghĩ để đặt câu hỏi ngay từ đầu với tư cách là quản trị viên Linux mới.
Bart Silverstrim

Và tôi muốn bình luận cho một số câu trả lời. Đặc biệt là những người nói rằng "bạn có thể làm hỏng công cụ gốc". Tôi không nghĩ đó là điểm ... "rm -rf /" giống như "sudo rm -rf /". Vấn đề nằm ở chỗ những thứ như "sudo rm" không hoạt động, nhưng "sudo startMyApp trên cổng thấp" hoạt động.
Zlatko

Điều gì là sai với không bao giờ được?
Ostendali

Câu trả lời:


70

Nếu bạn đã đăng nhập bằng root, bạn có thể dễ dàng xóa sạch các thư mục hoặc làm một cái gì đó khi nhìn lại thực sự bị câm trên hệ thống chỉ bằng một ngón tay, trong khi là một người dùng, bạn thường phải đặt thêm một vài chu kỳ tinh thần vào những gì bạn Đang gõ trước khi làm điều gì đó nguy hiểm.

Ngoài ra, bất kỳ chương trình nào bạn chạy với quyền root là quyền root, nghĩa là nếu ai đó hoặc thứ gì đó khiến bạn chạy / biên dịch / duyệt trang web nguy hiểm và muốn làm hỏng hệ thống của bạn, chẳng hạn như trojan hoặc phần mềm độc hại khác, nó có quyền truy cập đầy đủ vào hệ thống và có thể làm những gì nó muốn, bao gồm quyền truy cập vào các cổng TCP dưới 1024 (vì vậy nó có thể biến hệ thống của bạn thành một người gửi lại mà bạn không biết).

Về cơ bản, bạn đang yêu cầu sự cố mà việc đăng nhập như chính mình có thể ngăn chặn. Tôi đã biết nhiều người cuối cùng rất vui vì họ có mạng lưới an toàn đó trong một khoảnh khắc bất cẩn.

EDIT: Ngoài ra còn có vấn đề root được biết đến nhiều nhất, do đó, một mục tiêu dễ dàng, cho các kịch bản và hack. Các hệ thống vô hiệu hóa tài khoản và thay vào đó buộc người dùng sử dụng sudo có nghĩa là mọi nỗ lực bẻ khóa root từ ssh hoặc khai thác cục bộ vào tài khoản đều đập đầu vào tường. Họ sẽ phải đoán / bẻ khóa mật khẩu tên người dùng. Đó là bảo mật thông qua che khuất ở một mức độ nào đó nhưng thật khó để tranh luận rằng nó không cản trở hầu hết các cuộc tấn công kịch bản.


25
+1 - Sử dụng "sudo" làm cho việc thực thi các chương trình như là một hành động công khai. Đây không phải là vấn đề "ngăn chặn tin tặc", đó là vấn đề khiến bạn có thói quen làm việc như một người dùng không có đặc quyền và biến việc gọi đặc quyền gốc thành một hành động có chủ đích, công khai.
Evan Anderson

2
Tôi bắt đầu tự hỏi liệu Evan có thực sự là một AI không.
Bart Silverstrim

11
Sudo cũng thêm một dấu vết kiểm toán. Là ai, cái gì và khi nào được ghi lại khi chạy như sudo. Tệp nhật ký nào có thể thay đổi theo distro nhưng các phân phối RedHat có xu hướng sử dụng / var / log / safe và Ubuntu sử dụng /var/log/auth.log... Tôi không chắc liệu điều này có đúng với tất cả các phân phối dựa trên Debian không.
3dinfluence

3
+1 - không chỉ là quyền để tạo ra công cụ hoặc làm công cụ, mà còn là quyền để phá hủy. Đăng nhập với quyền root (hoặc tương đương trên bất kỳ HĐH nào khác cho vấn đề đó) giống như đi bộ mang theo súng với sự an toàn. Bạn có thể không bao giờ cố ý chạm vào kích hoạt đó, nhưng bạn có tin tưởng bản thân mình làm điều đó không?
Maximus Minimus

3
mh: / tôi đội chiếc mũ cao bồi của anh ấy, gạt bỏ sự an toàn trên khẩu súng lục của anh ấy, mở một cốc bia, lẩm bẩm một cái gì đó càu nhàu một cái gì đó về pansies, và sau đó đăng nhập vào gốc.
Kyle Brandt

29

Nếu bạn không cho phép một thằng ngốc đăng nhập vào máy chủ của mình dưới quyền root, thì đừng bao giờ tự chạy bằng root. Trừ khi bạn có thể nói rằng bạn chưa bao giờ là một thằng ngốc. Không, thật sao? Bạn chắc chắn? :)

Lợi ích: giảm khả năng bạn là root một thằng ngốc đồng thời.


6
+1 - "Lợi ích: giảm khả năng bạn là root và một thằng ngốc đồng thời." Tôi hoàn toàn thích điều này.
Evan Anderson

+1 cho triết lý của Scott Adams rằng mọi người đều là một thằng ngốc. :) Vâng, điều đó có nghĩa là bạn và tôi cũng vậy.
Ernie

Hoàn toàn - đây là một trong những câu hỏi quan trọng của tôi trong các cuộc phỏng vấn xin việc - lần cuối bạn làm gì? Mọi người đều có, bạn chỉ cần đọc các chủ đề ở đây về "sysadmin fubar thú vị nhất" hoặc bất cứ điều gì. Nếu ai đó sẽ không thừa nhận đã mắc một lỗi ngớ ngẩn thực sự ít nhất một lần trong đời, có lẽ có rất nhiều lý do bạn không muốn làm việc với họ.
Tom Newton

9

Lý do chính là sai lầm. Nếu bạn luôn root, lỗi đánh máy đơn giản có thể thực sự làm hỏng hệ thống. Nếu bạn chỉ đăng nhập bằng root hoặc sử dụng sudo để làm những việc yêu cầu, bạn sẽ giảm thiểu rủi ro mắc lỗi nguy hiểm.


9

Khi bạn root, bạn trở nên lười biếng về các quyền, vì bạn có quyền truy cập mọi thứ mọi lúc, bạn không quan tâm khi mọi thứ là 777 hoặc 644 hoặc bất cứ điều gì. Vì vậy, nếu bạn đã từng cho phép bất kỳ ai khác vào hệ thống của mình mà bạn không muốn có quyền truy cập vào mọi thứ, thì việc bất ngờ trở thành một khó khăn thực sự để làm cho người khác sử dụng máy an toàn.


5
Điều này được gọi là "thối gốc".
kmarsh

1
Tôi thích thuật ngữ đó, "thối gốc". Thật vậy, việc chạy bằng root mọi lúc có thể biến các máy * nix thành các máy giống Windows 95 kỳ dị mà không có sự bảo mật của nhiều người dùng. (Tôi nhớ một máy SCO, cách đây nhiều năm, nơi mọi người dùng trên ứng dụng kế toán được chia sẻ. Đang chạy bằng root vì "nó khiến vấn đề cấp phép biến mất".> Thở dài <)
Evan Anderson

Tôi nhớ nhận được một lời giải thích như vậy - họ có một công cụ danh sách gửi thư chạy bằng root, cùng với sendmail. Câu trả lời của tôi là "Các vấn đề về quyền cũng đã biến mất đối với các tin tặc."
duffbeer703

7

Có một vài dự đoán chính đằng sau việc không đăng nhập bằng root: 1) Mật khẩu root không bao giờ được gửi qua mạng tại thời điểm đăng nhập 2) Không có cách nào để biết ai đã làm gì nếu nhiều người dùng đăng nhập như cùng một tài khoản (root hoặc khác). 3) Vô tình làm điều gì đó 'ngu ngốc'


3

Đó là nhiều hơn để bảo vệ chính bạn để bạn có cơ hội thứ hai để xem xét các lệnh đặc quyền cao hơn mà bạn đang cố gắng chạy, tương tự như UAC trong Windows. Thật dễ dàng để vô tình làm một cái gì đó như rm -rf /khi đăng nhập bằng root.

Ngoài ra, bạn có khả năng truy xuất nguồn gốc. Đây không phải là một vấn đề lớn trong tình huống của bạn khi bạn là người duy nhất (về mặt lý thuyết) ban hành các lệnh nhưng khả năng đăng nhập và theo dõi lại cho một cá nhân là một thành phần quan trọng trong nhiều hình thức phân tích.


Truy xuất nguồn gốc là rất quan trọng trong các hệ thống có nhiều hơn một người làm việc như một sysadmin. Nó không chỉ là mong muốn mà nó được ủy thác bởi các chế độ quy định.
APC

Tôi đã làm điều này vào thứ Sáu. thay vì xóa "/ dump / thư mục /" Tôi đã xóa thư mục /. Một dấu gạch chéo hôi thối nhắc nhở tôi về lý do tại sao chúng ta không đăng nhập bằng root.
oneodd1

2

Sự khác biệt chủ yếu là:
bạn không thể làm điều gì xấu một cách tình cờ.
mã "ác" đó không thể chiếm lấy hệ thống.
Lưu ý: mã ác không nhất thiết có nghĩa là bất cứ ai cũng đã truy cập vào hệ thống.


Tôi đã nhận thấy rằng những ngày này, mã độc thường có nghĩa là các bot spam, có thể chạy như bất kỳ người dùng nào.
Ernie

Nếu bạn nghĩ về một loại virus (cố gắng phá hủy một cái gì đó) hoặc rootkit, thì phần mềm độc hại sẽ phức tạp hơn rất nhiều nếu bạn không phải là một root.
StampedeXV

2

Bạn nên luôn luôn sử dụng các tài khoản có mức đặc quyền thấp nhất có thể. Luôn luôn chạy theo root để khuyến khích những thói quen xấu và sự lười biếng sẽ khiến cuộc sống trở nên khó chịu khi bạn làm việc với nhiều người dùng hoặc phơi bày một cái gì đó với mạng công cộng / bán công khai.

Ngoài ra, hãy nhớ rằng việc bẻ khóa mật khẩu chỉ là một kịch bản thỏa hiệp - và cũng không phải là kịch bản phổ biến nhất. Bạn có nhiều khả năng trở thành nạn nhân của lỗ hổng trình duyệt hoặc lỗ hổng trong một số trình nền chạy trên hệ thống của bạn.

Hãy suy nghĩ về mã mà bạn sử dụng mà không cần suy nghĩ. Ví dụ, cổng Adobe Flash của Linux, vốn là một đống phân mà chỉ có thể sử dụng được trong quá khứ tương đối gần đây. Làm thế nào an toàn để bạn nghĩ rằng mã là? Bạn có muốn điều đó có thể kiểm soát toàn bộ hệ thống của bạn không?


2

Nó có thể ngăn chặn các cuộc tấn công vũ phu SSH. Mỗi unix có một tài khoản 'root'. Tuy nhiên, bên ngoài không rõ tên người dùng 'sudo' của bạn là gì. Do đó, nếu ai đó muốn thử sức mạnh, họ biết có tài khoản root và có thể sẽ thử. Tuy nhiên, họ không biết bắt đầu từ đâu nếu bạn đang sử dụng sudo.



1

Lời khuyên của tôi là hãy cố gắng sử dụng root mọi lúc; bạn sẽ sớm khám phá lý do tại sao bạn không nên :)


1

Ngay cả khi tôi không tin tưởng vào "bảo mật bằng cách che khuất", chắc chắn có một lợi thế để sử dụng thông tin đăng nhập tùy chỉnh thay vì đăng nhập gốc đã từng tồn tại. Do đó, bạn cũng có thể định cấu hình SSH để ngăn chặn đăng nhập root.

Như những người khác đã nói, root có thể làm mọi thứ mà không cần bất kỳ xác nhận nào. Vì vậy, sử dụng một người dùng không có đặc quyền có thể ngăn ngừa lỗi và lỗi chính tả ngu ngốc.

Một lập luận khác có lợi cho nhiều tài khoản người dùng là chạy các phần mềm khác nhau dưới những người dùng khác nhau. Làm điều này, nếu một lỗ hổng bảo mật được khai thác trong một ứng dụng, người khai thác chỉ có thể truy cập các tệp và tài nguyên có thể truy cập được đối với người dùng đang chạy.

Một điểm cuối cùng cho việc không sử dụng root: tiêu thụ tài nguyên. Root không có giới hạn về dung lượng bộ nhớ, thời gian xử lý, trình xử lý tệp hoặc dung lượng đĩa anh ta có thể sử dụng. Trên rất nhiều hệ thống tập tin, có các khối dữ liệu chỉ dành riêng cho root. Vì vậy, một người dùng bình thường không bao giờ có thể sử dụng chúng để lấp đầy đĩa của bạn. Lệnh ulimit cũng có thể được sử dụng để hạn chế số lượng bộ xử lý bộ nhớ và tệp mà người dùng có thể sử dụng. Nhưng nếu bạn là root (hoặc một ứng dụng đang chạy dưới quyền root), không có gì ngăn cản bạn thay đổi giới hạn này.


0

Vâng, tôi đồng ý với bạn và tôi nghĩ đó là một câu hỏi về bảo vệ chống lại lỗi của con người và đôi khi chống lại các chương trình độc hại. Điều tồi tệ mà tôi chưa bao giờ thấy là sử dụng root làm tài khoản gnome mặc định.
Tôi nghĩ rằng hầu hết người dùng làm điều đó là người dùng Windows gần đây đã chuyển sang Linux hoặc Unix. Cố gắng sao chép việc sử dụng đặc quyền của Quản trị viên để root.


0

Không có gì sai khi đăng nhập bằng root. Nó giúp phát triển bộ nhớ cơ để chỉ gõ các lệnh an toàn và thúc đẩy tính chính xác của suy nghĩ khi thực hiện các hành động có hậu quả lớn. Tôi rất khuyên bạn nên làm việc như root để có được quản trị hệ thống tốt hơn.

bạn cũng có thể làm những thứ tuyệt vời như ping -i 0.2 -c 1000 example.com

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.