Điểm:0

Có thể cho phép NOPASSWD trên bí danh của lệnh yêu cầu sudo không?

lá cờ in

Tôi đã thêm bí danh này:

alias shutdown2h='sudo shutdown -h +120'

mà tôi muốn chạy mà không cần phải nhập mật khẩu nhưng cũng không cần thêm NOPASSWD cho toàn bộ lệnh tắt máy.

Có thể thêm bí danh vào tệp sudoers bằng NOPASSWD hoàn toàn không? Tôi đã thử nó với vị trí của lệnh ~/.bash_aliases/shutdown2h đã cho tôi một lỗi cú pháp. Hoặc là có một cách khác?

Cám ơn rất nhiều!

waltinator avatar
lá cờ it
Luôn dán tập lệnh của bạn vào `https://shellcheck.net`, trình kiểm tra cú pháp hoặc cài đặt `shellcheck` cục bộ. Hãy biến việc sử dụng `shellcheck` thành một phần trong quy trình phát triển của bạn. Cũng đọc `man sudoers visudo`. Vì `bí danh` được thay thế bằng phần mở rộng của trình bao gốc trước khi thực thi, nên `shutdown2h` không được thực thi, `sudo shutdown -h +120` thì có.
Điểm:3
lá cờ it

Bạn muốn đảm bảo rằng người dùng của bạn không thể thay đổi những gì được phép chạy. Ví dụ: bằng cách cố gắng thêm tập lệnh do người dùng của bạn sở hữu (~/.bash_aliases/shutdown2h) để được chạy với quyền root thông qua sudo không có mật khẩu, bạn sẽ cho phép chạy bất kỳ lệnh tùy ý nào. Đơn giản chỉ cần chỉnh sửa tập tin đó và chạy nó. Nó sẽ giống như việc cho phép người dùng chạy bất kỳ lệnh nào thông qua sudoers. Ví dụ: người dùng sẽ chỉnh sửa tệp để đọc hiện nay thay vì -h +120 và tắt máy ngay lập tức.

Thay vào đó, sẽ tốt hơn nếu thêm một tập lệnh do người dùng root sở hữu vào hệ thống, có thể là trong /usr/local/bin/. Ví dụ, /usr/local/bin/shutdown2h, mọi người đều có thể thực thi được, nhưng chỉ có thể ghi được bằng root. Bằng cách này, bạn đảm bảo rằng người dùng chỉ có thể chạy tập lệnh cụ thể và họ không thể thay đổi tập lệnh đó để chạy tập lệnh khác. Đường dẫn bạn đặt tập lệnh phải nằm trong $PATH, cái mà /usr/local/bin nên ở trong theo mặc định.

  1. Tạo kịch bản
Sudo vim /usr/local/bin/shutdown2h

#!/bin/bash
tắt máy -h +120
  1. Cho phép thực thi tập lệnh
Sudo chmod +x /usr/local/bin/shutdown2h
  1. Cho phép NGƯỜI DÙNG chạy tập lệnh cụ thể
sudo visudo

# Thêm mục này
NGƯỜI DÙNG TẤT CẢ=(TẤT CẢ) NOPASSWD: /usr/local/bin/shutdown2h

Bây giờ, người dùng của bạn có thể chạy sudo shutdown2h mà không bị hỏi mật khẩu và chắc chắn rằng người dùng đó sẽ chỉ có thể chạy tắt máy -h +120 không có mật khẩu.

Ngoài ra, khi làm sudoers các mục nhập, hãy đảm bảo cung cấp đường dẫn đầy đủ đến tập lệnh/tập lệnh thực thi và không sử dụng bất kỳ lối tắt nào như ~/ hoặc $HOME.

Alin Anca avatar
lá cờ in
Cám ơn rất nhiều!
vanadium avatar
lá cờ cn
" có lẽ trong /usr/bin/": tạo `/usr/local/bin`

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.