sudo không hoạt động trên một số lệnh nhất định


15

Tôi có một vấn đề khá kỳ lạ với sudoDebian 8. Người dùng không thể thực thi một số lệnh trong /etc/sudoers.d. Tôi sử dụng Chef để phân phối cấu hình, vì vậy tất cả các tệp được tạo tự động.

Thí dụ:

Cấu hình này hoạt động tốt

root@server:~# cat /etc/sudoers.d/nginx 
# This file is managed by Chef.
# Do NOT modify this file directly.

user  ALL=(root) NOPASSWD:/usr/sbin/nginx

Và điều này thất bại:

root@server:~# cat /etc/sudoers.d/update-rc.d 
# This file is managed by Chef.
# Do NOT modify this file directly.

user  ALL=(root) NOPASSWD:/usr/sbin/update-rc.d

user@www42:~$ sudo update-rc.d 
[sudo] password for user: 
Sorry, user user is not allowed to execute '/usr/sbin/update-rc.d' as root on server.

Điều gì có thể sai?

Chẩn đoán:

Mar  5 12:12:51 server sudo:    user : command not allowed ; TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/sbin/update-rc.d
Mar  5 12:14:25 www42 su[1209]: pam_unix(su:session): session closed for user user

root@server:~# sudo --version
Sudo version 1.8.10p3
Configure options: --prefix=/usr -v --with-all-insults --with-pam --with-fqdn --with-logging=syslog --with-logfac=authpriv --with-env-editor --with-editor=/usr/bin/editor --with-timeout=15 --with-password-timeout=0 --with-passprompt=[sudo] password for %p:  --disable-root-mailer --with-sendmail=/usr/sbin/sendmail --with-rundir=/var/lib/sudo --mandir=/usr/share/man --libexecdir=/usr/lib/sudo --with-sssd --with-sssd-lib=/usr/lib/x86_64-linux-gnu --with-selinux --with-linux-audit
Sudoers policy plugin version 1.8.10p3
Sudoers file grammar version 43

Câu trả lời:


28

Vấn đề là dấu chấm trong update-rc.d(trong /etc/sudoers.d/update-rc.d); từ man sudo:

Lệnh #includedir có thể được sử dụng để tạo thư mục sudo.d mà trình quản lý gói hệ thống có thể thả các quy tắc sudoers vào như một phần của cài đặt gói. Ví dụ: đã cho:

#includedir /etc/sudoers.d

sudo sẽ đọc từng tệp trong /etc/sudoers.d, bỏ qua tên tệp kết thúc bằng ~ hoặc chứa a. ký tự để tránh gây ra sự cố với trình quản lý gói hoặc tệp tạm thời / trình sao lưu.


3
Đó là 2 quyết định thiết kế đáng ngờ trong sudoers. Sử dụng #như một nhận xét và là một phần của chỉ thị cũng như bỏ qua các tập tin. Thật thú vị (khó chịu) visudo -f some.file không cảnh báo rằng nó có khả năng bị bỏ qua khi thoát. Albatross kỳ quặc có thể được làm dịu bằng một upvote đơn giản.
user9517 được hỗ trợGoFundMonica

1
@istheEnglishway hoàn toàn đồng ý. Nhưng hải âu kỳ quặc vẫn còn kỳ quặc.
MadHatter hỗ trợ Monica

Bỏ qua các tệp có ~ (hoặc, thực sự là các tệp có một số tiện ích mở rộng) thực sự là một ý tưởng rất tốt, vì bạn chắc chắn không muốn cấu hình cũ trong tệp sao lưu hoạt động sau khi chỉnh sửa. Và có lẽ bạn không muốn kiểm tra thủ công nếu trình chỉnh sửa trên máy đó có để lại tệp sao lưu hay không. Mặc dù tất nhiên, điều này có thể được thực hiện bằng cách chỉ bao gồm các tệp có phần mở rộng được liệt kê trong danh sách trắng (ví dụ *.cf) nhưng sau đó có thể tính năng này đã được thêm vào sau đó và một số người dùng sẽ phàn nàn về việc buộc phải sử dụng tiện ích mở rộng đã đặt.
ilkkachu

Đối với dấu băm đang được sử dụng cả trong các bình luận và trong các chỉ thị, có ai muốn kiểm tra xem tính tương thích ngược có phải là lý do đằng sau không?
ilkkachu

5

Hãy thử và chạy sudo -llđể có được danh sách các lệnh / config áp dụng cho người dùng của bạn.

Nếu (có vẻ như là trường hợp) mệnh đề update-rc.d của bạn không hiển thị, bạn có thể xem xét điều chỉnh công thức nấu ăn của mình để triển khai một tệp sudoers.d cho mỗi người dùng, thay vì nhiều tệp.

Bạn cũng có thể xem xét nếu một tệp sudoers liên quan đến nhóm có thể được bảo hành.

Câu trả lời của câu hỏi này có thể giúp: https://askubfox.com/questions/246455/how-to-give-nopasswd-access-to-multipl-commands-via-sudoers

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.