Tôi muốn chạy sudo với mật khẩu của mình làm tham số để tôi có thể sử dụng nó cho một tập lệnh. Tôi đã thử
sudo -S mypassword execute_command
nhưng không có bất kỳ thành công. Bất kỳ đề xuất?
Tôi muốn chạy sudo với mật khẩu của mình làm tham số để tôi có thể sử dụng nó cho một tập lệnh. Tôi đã thử
sudo -S mypassword execute_command
nhưng không có bất kỳ thành công. Bất kỳ đề xuất?
sudo
đúng cách để nó không hỏi mật khẩu cho một số chương trình / người dùng / nhóm nhất định để tránh những vụ hack bẩn như vậy.
Câu trả lời:
Công tắc -S làm cho sudo đọc mật khẩu từ STDIN. Điều này có nghĩa là bạn có thể làm
echo mypassword | sudo -S command
để chuyển mật khẩu cho sudo
Tuy nhiên, các đề xuất của những người khác không liên quan đến việc chuyển mật khẩu như một phần của lệnh, chẳng hạn như kiểm tra xem người dùng có phải là root hay không có lẽ là ý tưởng tốt hơn nhiều vì lý do bảo mật
sudo chmod -R 0100 myScriptFolder
:? Điều đó sẽ không giải quyết được các vấn đề bảo mật (miễn là không ai sử dụng máy tính của bạn làm root ngoài bạn)?
Bạn có thể đặt s
bit cho tập lệnh của mình để nó không cần sudo
và chạy dưới dạng root (và bạn không cần viết mật khẩu gốc của mình trong tập lệnh):
sudo chmod +s myscript
+s
là bit setuid. +t
là bit dính.
echo -e "YOURPASSWORD\n" | sudo -S yourcommand
echo -e "YOURPASSWORD\n" | sudo -S "run -x"
. Nó nói sudo: run -x: command not found
. Bất kỳ ý tưởng làm thế nào để giải quyết vấn đề này?
Một lựa chọn là sử dụng cờ -A để điều khiển. Điều này chạy một chương trình để yêu cầu mật khẩu. Thay vì hỏi, bạn có thể có một tập lệnh chỉ xuất ra mật khẩu để chương trình có thể tiếp tục.
# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi