Tôi có thể làm su
với su <username>
và nó yêu cầu mật khẩu của tôi. Có một tham số mật khẩu để su
tôi không được nhắc nhập mật khẩu không?
ví dụ su <username> -p <password>
superuser
đây, superuser.com/questions/67765/
Tôi có thể làm su
với su <username>
và nó yêu cầu mật khẩu của tôi. Có một tham số mật khẩu để su
tôi không được nhắc nhập mật khẩu không?
ví dụ su <username> -p <password>
superuser
đây, superuser.com/questions/67765/
Câu trả lời:
Nếu bạn muốn viết một tập lệnh chạy như một người dùng khác, một cái gì đó như thế này hoạt động, mặc dù nó sẽ xuất ra từ "mật khẩu" mà không có dòng mới để chuẩn
su - username <<!
enterpasswordhere
enter commands to run as the new user
!
nếu bạn có một người dùng có tên là fred với mật khẩu 1234 và muốn lấy một thư mục chính của fred như fred, không có chuỗi mật khẩu được hiển thị, nó sẽ trông như thế
su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
su: must be run from a terminal
.
Tôi tin rằng, không có và nó sẽ không phải là một ý tưởng tốt. Đây là lý do tại sao:
Nếu bạn viết một mật khẩu trong một lệnh như thế su <username> -p <password>
, nó sẽ được lưu trữ trong văn bản đơn giản trong lịch sử bash của bạn. Đây chắc chắn là một vấn đề bảo mật rất lớn.
Nếu bạn cần chạy các lệnh với su
(hoặc sudo
) theo cách tự động, hãy viết một shellscript chứa các lệnh mà không có su
hoặc sudo
chạysu <username> script.sh
su root script
vẫn cần nhập passwd.
echo <passwd> | sudo -S <command-line>
. Mặc dù nó không an toàn, nhưng nó hoạt động.