Giới hạn người dùng thực thi các lệnh chọn lọc (Linux)


14

Làm cách nào tôi có thể giới hạn người dùng của mình chỉ thực hiện các lệnh chọn lọc. Tôi có một người dùng tomc trong nhóm tomc. Tôi cần người dùng này là người dùng sudo và sau đó bị hạn chế bash. Tôi đã thử theo mã trong /etc/sudoerstệp, nhưng nó không hoạt động vì người dùng có thể thực thi các lệnh khác như mkdir,rm

%tomc ALL=/bin/bash,/usr/bin/vim /*

3
Mặc dù việc sử dụng sudo có thể bị hạn chế đối với các lệnh cụ thể, nhưng điều này có thể khó khăn và đòi hỏi sự tin tưởng. Nếu bạn không tin tưởng người dùng, thì việc cung cấp cho họ bất kỳ quyền truy cập sudo nào là một ý tưởng tồi. Nó sẽ cung cấp cho họ quyền root hoặc cung cấp cho họ một ứng dụng tập trung để tấn công để có được quyền root. Để ai đó chạy sudo bashlà tương đương trong hầu hết các cách để có mật khẩu gốc. Từ trình sudo bashbao, họ có thể chạy bất kỳ lệnh quản trị viên nào, cài đặt hoặc xóa phần mềm, xóa người dùng và thư mục, v.v.
Paul

@Paul Bạn có thể gợi ý cho tôi những lựa chọn tốt hơn và thiết thực cho việc này không?

Đầu tiên, đây là chủ đề trên stack overflow. Những nơi tốt hơn để hỏi bao gồm superuser, hoặc Askubfox, hoặc linux & unix. Đầu tiên hãy tìm ra chính xác những gì bạn muốn cho phép tomc làm. tomc nên được phép làm _____ nhưng không phải ____. Rồi hỏi. Sudo dành cho các lệnh yêu cầu root (admin) private. Anh ta có thể chạy bash mà không cần chạy nó bằng root.
Paul

Câu trả lời:


18

Bạn có thể đang đi sai hướng này. Thay vì cung cấp cho người dùng một bash shell 'bị hạn chế', bạn chỉ nên cấp cho họ quyền truy cập vào các lệnh mà họ sẽ cần để chạy như root. Ví dụ: trong tệp sudoers của bạn:

tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log

Hãy cẩn thận với việc cho phép người dùng chạy vim với quyền root. Vim có rất nhiều tính năng tích hợp, như thoát ra khỏi shell và khả năng chạy các lệnh từ bên trong vim. Tùy thuộc vào phân phối của bạn, bạn có thể có sudoeditsẵn. Điều này hoạt động giống như một Vim bình thường, ngoại trừ nó được thiết kế để xử lý thoát vỏ và như vậy.


7
Cả hai dòng này đều an toàn. Như bạn đã đề cập,vimcó thể chạy các lệnh shell tùy ý. Và dòng thứ hai có thể sẽ cho phépless /var/log/myapp/../../../etc/shadow! Theo thí nghiệm của tôi sử dụng sudo một cách an toàn là khó ! Nhưng nếu bạn có thể tránh*s và sử dụngsudoeditthay vìvimsau đó bạn có thể ổn.
joeytwiddle

Tránh *là không đủ! Sau khi vào lessnhư rootngười dùng, hãy thử gõ !tail /var/log/secure. Cảm giác đó thế nào? Nghiên cứu các NOEXECthẻ. Nhưng hãy ghi nhớ thông điệp của @ joeytwiddle: sudo an toàn thực sự khó.
Bruno Bronosky

3

Trên Synology Diskstation của tôi chạy DSM 6, chỉ người dùng quản trị viên mới có thể ssh một cách nhất quán (người dùng không phải quản trị viên có shell là / sbin / nologin trong / etc / passwd - bạn có thể đặt này thành / bin / sh để tạm thời cho phép ssh, nhưng khi khởi động lại tập tin / etc / passwd được đặt lại). Vì lý do này, một số loại hạn chế sudo là cần thiết cho một tài khoản mà nếu không thì chỉ tồn tại để thực thi eg / sbin / poweroff. Các dòng sau trong / etc / sudoers hoạt động với tôi:

# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff

Dịch: không cho phép tất cả các lệnh, sau đó chỉ cho phép lệnh mong muốn (không yêu cầu mật khẩu trong trường hợp này).

Với cấu hình này, sudo yêu cầu mật khẩu và sau đó không thành công cho các lệnh khác ngoài danh sách trắng:

guestx@ds:~$ sudo su -
Password: 
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
guestx@ds:~$ 
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.