Các sudo -A
(SUDO_ASKPASS) tùy chọn rõ ràng nguyên nhân sudo để mất thời gian chờ (ví dụ, timestamp_timeout) thiết lập.
Tôi muốn sử dụng tùy chọn sudo -A nhưng tôi muốn giữ lại thời gian chờ mặc định (ví dụ: 15 phút trên Ubuntu) trong tập lệnh bash. Tôi muốn hỏi mật khẩu người dùng một cách an toàn và trong hộp thoại GUI, nhưng tôi chỉ muốn nhắc một lần cho tập lệnh của mình (không phải hơn 50 lần).
Hơn nữa, tôi không muốn chạy toàn bộ tập lệnh của mình với tư cách là người dùng root vì tôi chỉ nghĩ đó là một ý tưởng tồi. Hơn nữa, các tệp được tạo bởi tập lệnh của tôi có quyền sở hữu sai trong trường hợp này.
Tùy chọn sudo -A sẽ hoạt động với tôi nếu nó giữ thời gian chờ mặc định.
Từ hướng dẫn sudo:
Lựa chọn: ‑A
Thông thường, nếu sudo yêu cầu mật khẩu, nó sẽ đọc nó từ thiết bị đầu cuối của người dùng. Nếu tùy chọn ‑A (Askpass) được chỉ định, chương trình trợ giúp (có thể là đồ họa) được thực thi để đọc mật khẩu của người dùng và xuất mật khẩu cho đầu ra tiêu chuẩn. Nếu biến môi trường SUDO_ASKPASS được đặt, nó chỉ định đường dẫn đến chương trình trợ giúp. Mặt khác, nếu /etc/sudo.conf chứa một dòng chỉ định chương trình hỏi, giá trị đó sẽ được sử dụng. Ví dụ:
# Path to askpass helper program
Path askpass /usr/X11R6/bin/ssh-askpass
BTW, kdesudo có cùng một vấn đề - nó yêu cầu mật khẩu mỗi lần nó được gọi, ngay cả khi chỉ một giây sau trong cùng một tập lệnh.
Tôi đang sử dụng Kubfox 12.04 64 bit.
Dưới đây là ví dụ làm việc đầy đủ của tất cả các phần của giải pháp. Nó bao gồm một tập lệnh bash, tập lệnh "myaskpass" như được đề xuất ở đây và tập tin ".desktop". Toàn bộ mọi thứ phải là GUI 100% (hoàn toàn không có tương tác đầu cuối), vì vậy tệp .desktop là điều cần thiết (afaik).
$ cat myaskpass.sh
#!/bin/bash
kdialog --password "Please enter your password: "
exit 0
$ cat askpasstest1.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Comment=SUDO_ASKPASS tester1
Exec=bash /home/user/test/askpasstest1.sh
GenericName=SUDO_ASKPASS tester1
Name=SUDO_ASKPASS tester1
NoDisplay=false
Path[$e]=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
Categories=Application;Utility;
X-KDE-SubstituteUID=false
X-KDE-Username=
Và một kịch bản thử nghiệm chính nó. Điều này sẽ yêu cầu mật khẩu của bạn hai lần khi sử dụng giải pháp này.
#!/bin/bash
sudo -k
SUDO_ASKPASS="/home/user/test/myaskpass.sh" sudo -A touch filemadeas_askpass1
touch filemadeas_regularuser1
SUDO_ASKPASS="/home/user/test/myaskpass.sh" sudo -A touch filemadeas_askpass2
touch filemadeas_regularuser2
ls -la filemadeas* > /home/user/test/fma.log
kdialog --title "Files Created" --textbox /home/user/test/fma.log 640 480
sudo rm filemadeas_*
rm fma.log
exit 0
kdesudo
chịu đựng cùng một vấn đề tôi mô tả ở trên. Tôi đã thử nghiệm sudo -A
như một giải pháp thay thế kdesudo
và tốt hơn cho tình huống của tôi, nhưng nó không giải quyết được vấn đề thời gian chờ (ít nhất là cho đến nay).
gksudo
một lựa chọn ở đây? linux.die.net/man/1/gksudo