Tại sao chúng ta cần sử dụng visudo thay vì trực tiếp sửa đổi tệp sudoers?


83

Tôi hiểu rằng nếu bạn muốn sửa đổi ai có thể sử dụng sudovà họ có thể làm gì với nó mà bạn nên sử dụng visudo. Tôi biết tôi không nên trực tiếp sửa đổi tập tin / etc / sudoers.

Cái gì visudomà trực tiếp sửa đổi tập tin không làm gì? Cái mà có thể sai lầm?

Câu trả lời:


104

visudokiểm tra cú pháp tập tin trước khi thực sự ghi đè sudoerstập tin.

Nếu bạn sử dụng một trình soạn thảo đơn giản, làm rối cú pháp và lưu ... sudosẽ (có thể) sẽ ngừng hoạt động và, vì /etc/sudoerschỉ có thể sửa đổi bởi root, bạn bị mắc kẹt (trừ khi bạn có cách khác để lấy quyền root).

Ngoài ra, nó đảm bảo rằng các chỉnh sửa sẽ là một hoạt động nguyên tử. Việc khóa này rất quan trọng nếu bạn cần đảm bảo không ai khác có thể làm hỏng các thay đổi cấu hình được xem xét cẩn thận của bạn. Để chỉnh sửa các tệp khác dưới dạng root bên cạnh /etc/sudoersđó là sudoeditlệnh cũng bảo vệ chống lại các xung đột chỉnh sửa đó.


3
Wow, không bao giờ biết về sudoedit. Nó không hoạt động trên OS X vì vậy tôi cho rằng đó là một công cụ GNU? Dù sao, thông tin mát mẻ ở đây. Tôi luôn luôn chỉnh sửa thủ công và không bao giờ gặp sự cố - Bây giờ tôi hiểu rằng đó chỉ là may mắn và công cụ có thể giúp ngăn chặn thảm họa. Cảm ơn!
Harvest

2
@Harv. Không có GNU sudovà OS X nào có công cụ GNU. Vì sudo lần đầu tiên được tạo ra như một ứng dụng nguồn mở, có lẽ không có lý do gì cho việc chúng được triển khai nhiều. sudosudoeditlà cùng một lệnh, sudohành xử như sudo -ekhi được gọi là sudoedit. Tôi tin rằng chỉ có OS X quên thêm sudoedit -> sudoliên kết, nhưng bạn vẫn có thể sử dụng sudo -ehoặc gọi sudovới argv [0] được đặt sudoeditđể có hành vi tương tự.
Stéphane Chazelas

Thật thú vị, visudosử dụng nano theo mặc định.
Tim

3
@Tim: Mặc định "thực" là vi, nhưng nó có thể được cấu hình để sử dụng cái khác. Vì vậy, nano thực sự có thể là mặc định trên distro / setup của bạn. Xem trang người đàn ông .
Mat

2
@ AngularInDepth.com, hậu quả khá rõ ràng. Nếu bạn lưu tệp sudoers không hợp lệ, thì hệ thống sẽ không thể phân tích cú pháp. Vì vậy, nếu tôi thực hiện sudo vim /etc/sudoersvà thực hiện cú pháp, thì tôi sẽ không thể sudo vim /etc/sudoerssửa nó lần nữa. Thực tế, tất cả khả năng nâng cao đặc quyền thông qua sudo sẽ bị mất do hệ thống sẽ không thể phân tích cú pháp tệp.
Spencer D

23

Từ trang visudo man:

visudo khóa tệp sudoers chống lại nhiều chỉnh sửa đồng thời, cung cấp kiểm tra độ tỉnh táo cơ bản và kiểm tra lỗi phân tích cú pháp. Nếu tệp sudoers hiện đang được chỉnh sửa, bạn sẽ nhận được một tin nhắn để thử lại sau.

Cũng kiểm tra câu trả lời này từ serverfault .

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.