Một lợi ích khác của việc sử dụng visudo -f
như được đề cập trong một số câu trả lời là có một tùy chọn tương ứng -c
hoặc --check
xác minh rằng bạn không có thông tin không hợp lệ trong tệp sudoers.d hoặc bất kỳ tệp nào khác mà bạn có thể muốn đặt trong sudoers.d. Điều này thực sự tiện dụng trong các trường hợp được đề cập với các công cụ tự động, vì bạn có thể chạy ví dụ
sudo visudo -c -q -f /home/myuser/mysudoers && \
sudo chmod 600 /home/myuser/mysudoers && \
sudo cp /home/myuser/mysudoers /etc/sudoers.d/mysudoers
Điều này âm thầm kiểm tra tệp (không có đầu ra do -q) và chỉ khi điều đó KHÔNG trả về lỗi (thoát 1 có nghĩa là tệp sudoers không hợp lệ) thì nó sẽ sao chép tệp vào sudoers.d, bằng cách này bạn có thể tạo tệp và làm việc với nó mà không phải làm cho đúng ngay lần đầu tiên (sử dụng sudo visudo -f /etc/sudoers.d/myfile
phải thành công hoặc loại bỏ nội dung nếu bạn không sửa nó).
Ngoài ra, một lời cảnh báo liên quan đến những tuyên bố này từ các câu trả lời khác.
Theo kinh nghiệm của tôi, các quy tắc về các tệp trong thư mục này lỏng lẻo hơn so với / etc / sudoers. Điều này đã bao gồm:
Những sai lầm trong tập tin không khiến sudo thất bại. Tuy nhiên, các tập tin đã bị bỏ qua. Quy tắc cho phép xuất hiện ít nghiêm ngặt hơn. Tôi cho phép nhóm áp dụng để đọc các tập tin. Tôi không tin rằng có thể với / etc / sudo.
Các tệp trong /etc/sudoers.d được yêu cầu tuân thủ cùng một cú pháp như / etc / sudoers, bởi vì dưới vỏ bọc, hệ thống chỉ đơn giản ghép tất cả các tệp với cái cuối cùng trong "chiến thắng" nếu có nhiều mục nhập giống nhau thiết lập số ít.
Nếu các quyền không chính xác khủng khiếp (có thể ghi thế giới) trên các tệp trong /etc/sudoers.d/ thì chúng bị bỏ qua, đây có thể là nguyên nhân khiến các tệp không hợp lệ bị bỏ qua, nếu không bạn có thể phá vỡ nghiêm trọng sudo
lệnh bằng cách có một sudoers không hợp lệ. d tập tin với quyền chính xác.
Bạn có thể cho phép các tệp sudoers có thể đọc được trên thế giới, nếu bạn vô tình cho phép 'khác' quyền ghi bạn cần sudo như một người dùng khác hoặc từ thiết bị đầu cuối gốc chạy lệnh này. Điều này cũng có thể phá vỡ nếu tập tin được sở hữu bởi một người khác ngoài root: root.
sudo chmod 644 /etc/sudoers.d/mysudoers
sudo chown root:root /etc/sudoers.d/mysudoers
Tôi chỉ xác nhận rằng nếu tôi chạy chmod o+w /etc/sudoers.d/vagrant
tôi không còn có thể là người dùng mơ hồ, nó sẽ nhắc tôi nhập mật khẩu và sau đó không thành công.
Khi tôi chạy sudo -l
để xem các quyền lệnh được áp dụng như một người dùng sudo hợp lệ khác, tôi cũng nhận được một cảnh báo về các quyền của tệp. Đây là lệnh tương tự mà tôi đã sử dụng để xác nhận rằng người dùng 'vagrant' bị mất sudo khi tôi áp dụng o+w
quyền cho tệp cho người dùng quyền sudo đó.