Cú pháp sudoers thích hợp để thêm người dùng là gì?


50

Theo các ý kiến ​​trong /etc/sudoers(Fedora 13):

## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.

Hai câu hỏi liên quan của tôi:

  1. ALL=(ALL) ALLnghĩa là gì trong dòng sau:

    root  ALL=(ALL)   ALL
    
  2. Tôi đã thử nghiệm hai dòng này nhưng tôi không thể tìm ra chúng khác nhau về mặt chức năng như thế nào:

    superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    

Tôi đã đọc hướng dẫn nhưng đặc tả cú pháp rất khó theo dõi. Tôi đã nhận ra rằng (ALL) ALLphần đó là thông số kỹ thuật của lệnh và thẻ nhưng tôi vẫn không thể hiểu được.

Câu trả lời:


91

Lưu ý: Tôi đang trả lời 1. , vì Ignacio đã trả lời 2 ..

Trong sudomục sau :

superadm  ALL=(ALL)   ALL

có bốn lĩnh vực:

  • Người đầu tiên chỉ định người dùng sẽ được cấp đặc quyền cho một số lệnh.
  • Cái thứ hai hiếm khi được sử dụng. Đây là danh sách các tên máy chủ lưu trữ sudo này sẽ có hiệu lực. Trên các thiết lập tiêu chuẩn, chỉ có một máy chủ lưu trữ có liên quan (localhost), vì vậy trường này thường được để lại là ALL.
  • Trường thứ tư là danh sách các lệnh superadmsẽ có thể chạy với các đặc quyền nâng cao. ALLcó nghĩa là tất cả các lệnh. Mặt khác, sử dụng danh sách các lệnh được phân tách bằng dấu phẩy.
  • Trường thứ ba (trường được viết (…)là tùy chọn) chỉ định người dùng (và nhóm) nào mà superadmngười dùng sẽ có thể chạy các lệnh sau dưới dạng. ALLcó nghĩa là họ có thể chọn bất cứ điều gì (không bị hạn chế). Nó lĩnh vực này được bỏ qua, nó có nghĩa tương tự như (root).

Thí dụ:

alan   ALL = (root, bin : operator, system) /bin/ls, /bin/kill

Ở đây, alanđược phép chạy hai lệnh /bin/ls/bin/killdưới dạng root(hoặc bin), có thể với các đặc quyền bổ sung operatorhoặc systemnhóm.

Vì vậy, alancó thể chọn chạy lsnhư binngười dùng và với operatorcác đặc quyền nhóm như thế này:

sudo -u bin -g operator /bin/ls /whatever/directory

Nếu -uđược bỏ qua, nó giống như -u root. Nếu -gđược bỏ qua, không có đặc quyền nhóm bổ sung được cấp.


1
Chà, đó có lẽ là câu trả lời hay nhất từ ​​trước đến nay ...
David Betz

1
Tôi đã quan sát thấy rằng một ký \ntự dòng mới là bắt buộc ở cuối mục trong sudoers hoặc /etc/sudoers.d/your_file_name
ramonrails

Ngoài ra, bạn có thể sử dụng ký tự đại diện trong tên máy chủ, tên đường dẫn và đối số dòng lệnh. Thích /bin/cat /var/log/messages.?hoặc /bin/ls /var/log/*biết thêm thông tin ở đây
Alex

9

Từ sudoers(5)trang man, phần MÔ TẢ , tiểu mục Runas_Spec :

Các Runas_List đầu tiên chỉ mà người dùng các lệnh có thể được chạy như qua sudo's -ulựa chọn.

...

Nếu không có Runas_Spec được chỉ định, lệnh có thể được chạy rootvà không nhóm nào có thể được chỉ định.

Vì vậy, không có sự khác biệt về chức năng khi cố gắng chạy các lệnh như root, tức là khi không sử dụng -uvới sudo. Sự khác biệt quan trọng khi cố gắng chạy các lệnh như những người dùng khác; cái sau sẽ ngăn chặn điều này, nhưng cái trước sẽ cho phép nó.

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.