ฉันสามารถทำได้su
ด้วยsu <username>
และมันจะขอรหัสผ่านของฉัน มีพารามิเตอร์รหัสผ่านสำหรับsu
ที่ฉันจะไม่ถามรหัสผ่าน?
เช่น su <username> -p <password>
superuser
ที่นี่superuser.com/questions/67765/…
ฉันสามารถทำได้su
ด้วยsu <username>
และมันจะขอรหัสผ่านของฉัน มีพารามิเตอร์รหัสผ่านสำหรับsu
ที่ฉันจะไม่ถามรหัสผ่าน?
เช่น su <username> -p <password>
superuser
ที่นี่superuser.com/questions/67765/…
คำตอบ:
หากคุณต้องการที่จะเขียนสคริปต์ที่ทำงานในฐานะผู้ใช้ที่แตกต่างกันบางอย่างเช่นนี้ทำงานแม้ว่ามันจะเอาท์พุทคำว่า "รหัสผ่าน" โดยไม่ต้องขึ้นบรรทัดใหม่เพื่อออกมาตรฐาน
su - username <<!
enterpasswordhere
enter commands to run as the new user
!
หากคุณมีชื่อผู้ใช้ fred ด้วยรหัสผ่าน 1234 และต้องการรับไดเรกทอรีหลักของ fred เป็น fred โดยไม่แสดงสตริงรหัสผ่านมันจะดูเหมือน
su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
su: must be run from a terminal
ได้รับข้อผิดพลาด:
ฉันเชื่อว่าไม่มีและมันจะไม่ใช่ความคิดที่ดี นี่คือเหตุผล:
ถ้าคุณเขียนรหัสผ่านในคำสั่งเช่นsu <username> -p <password>
นั้นมันจะถูกเก็บไว้ในข้อความธรรมดาในประวัติทุบตีของคุณ นี่เป็นปัญหาด้านความปลอดภัยที่ยิ่งใหญ่อย่างแน่นอน
หากคุณต้องการเรียกใช้คำสั่งด้วยsu
(หรือsudo
) ด้วยวิธีอัตโนมัติให้เขียนคำสั่ง shellscript ที่มีคำสั่งโดยไม่ใช้su
หรือsudo
รันsu <username> script.sh
su root script
ยังคงต้องป้อนรหัสผ่าน
echo <passwd> | sudo -S <command-line>
แม้ว่ามันจะไม่ปลอดภัย แต่ก็ใช้งานได้
หากคุณต้องการรันคำสั่งบางอย่างในฐานะผู้ใช้ใหม่ให้ใช้คำสั่งต่อไปนี้:
sudo -u {username} {command to be executed as the new user}