Chặn một lệnh từ người dùng sudo


10

Tôi không cần một quản trị viên để thay đổi mật khẩu gốc của tôi. Tôi không muốn bất kỳ người dùng sudo nào thực hiện lệnh này:

sudo passwd $root

Tôi đã thử nó trong tập tin sudoers bằng lệnh sau:

%sudo ALL=(ALL) ALL, !/usr/bin/passwd $root

Làm thế nào tôi có thể chặn nó?


Bạn có nghĩa là bạn có nhiều hơn một người dùng có khả năng sudo trong hệ thống của bạn? Hay cái gì khác? Xin vui lòng, chỉnh sửa câu hỏi để cung cấp bất kỳ thông tin mới.
edwin

Câu trả lời:


15

Theo hướng dẫn sử dụng sudoers :

   It is generally not effective to "subtract" commands from ALL using the
   ’!’ operator.  A user can trivially circumvent this by copying the
   desired command to a different name and then executing that.  For
   example:

       bill        ALL = ALL, !SU, !SHELLS

   Doesn’t really prevent bill from running the commands listed in SU or
   SHELLS since he can simply copy those commands to a different name, or
   use a shell escape from an editor or other program.  Therefore, these
   kind of restrictions should be considered advisory at best (and
   reinforced by policy).

Đây là lý do tại sao chính sách sudoers của bạn không hoạt động.

Nếu bạn muốn ngăn người dùng lấy quyền root và thay đổi mật khẩu, hãy thử quy trình này:

  • Giả sử sudoers của bạn có chứa chỉ thị này:

     root    ALL=(ALL:ALL) ALL
     %sudo   ALL=(ALL:ALL) ALL
    
  • Giả sử tên người dùng của bạn là foo, các nhóm của anh ấy foosudo. groupsđầu ra lệnh là:

    foo sudo
    
  • Xóa người dùng fookhỏi sudonhóm: gpasswd -d foo sudosau này, người dùng fookhông thể chạy bất kỳ lệnh nào với sudo.

  • Chỉnh sửa tập tin sudoers. Sử dụng lệnh này:

    sudo visudo -f /etc/sudoers.d/foo
    
  • Xác định sự foocho phép của người dùng , ví dụ:

    foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
    

    Điều này có nghĩa là người dùng foocó thể chạy bất kỳ lệnh nào trong thư mục /usr/bin/ngoại trừ passwdsulệnh. Lưu ý: Nếu người dùng foomuốn thay đổi mật khẩu của mình, có thể chạy passwdlệnh mà không cần sudo.

  • Một ví dụ khác về sự foocho phép của người dùng :

    foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    

    Điều này có nghĩa là người dùng foocó thể chạy bất kỳ lệnh nào trong thư mục /usr/bin/và được phép thay đổi mật khẩu của bất kỳ ai ngoại trừ root trên TẤT CẢ các máy.

Bạn có thể xác định các nhóm lệnh bằng cách xác định Cmnd_Aliasesvà tạo "cấp độ quyền". Bạn có thể tìm thấy các ví dụ hữu ích trong phần VÍ DỤ của hướng dẫn sử dụng sudoers và đây là một liên kết hữu ích về cách sử dụng sudoers.


Tôi đã phải làm foo ALL=/usr/bin/*, !/usr/bin/passwdbất cứ ý tưởng tại sao đó là trường hợp?
clurect

-1

thêm bí danh lệnh thông qua visudo:

Cmnd_Alias PASSWD=/usr/bin/passwd
Cmnd_Alias SU=/bin/su

thêm các hạn chế thông qua visudo:

%nopasswdgroup ALL = ALL, !PASSWD, !SU

thêm người dùng vào nhóm được gọi là nopasswdgroup:

usermod -aG nopasswdgroup nopasswduser
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.