คำตอบ:
ฉันจะไม่เข้าใจว่าความคิดนี้แย่แค่ไหน ใส่เพียงแค่ทำงานsudo
ใน crontab ต้องใช้รหัสผ่านของคุณจะถูกเก็บไว้ที่ไหนสักแห่งในธรรมดา
มันเป็นความคิดที่ไม่ดี
ต่อไปนี้เป็นวิธีที่ต้องการในการใช้งานการบริหารผ่าน cron เนื่องจากคุณไม่จำเป็นต้องเขียนsudo
ใน crontab ถ้าคุณกำลังแก้ไข crontab ของรูท
รันคำสั่งต่อไปนี้:
sudo crontab -e
นี่เป็นการเปิดroot
crontab ของ sudo
ไม่จำเป็นต้องเรียกใช้คำสั่งของคุณในบริบทนี้เนื่องจากมันจะถูกเรียกเช่นroot
นั้น
ดังนั้นคุณเพียงแค่ผนวกสิ่งต่อไปนี้เข้ากับ crontab ของรูท
@hourly rm somefile
ตอนนี้ถ้าคุณอย่างต้องการที่จะไม่ปลอดภัยและจะรับความเสี่ยงด้วยรหัสผ่านของคุณต่อไปนี้จะเรียกใช้คำสั่งของคุณจาก crontab sudo
ของคุณเองและใส่รหัสผ่านของคุณโดยอัตโนมัติเมื่อได้รับแจ้งจาก
อีกครั้งนี้ไม่แนะนำ
ใน crontab ของคุณเองเขียนคำสั่งของคุณเช่น:
@hourly echo "password" | sudo -S rm somefile
ข้อเสียที่เห็นได้ชัดคือที่นี่หากใครก็ตามเข้าถึง crontab ของคุณรหัสผ่านของคุณจะสามารถอ่านได้ในแบบธรรมดา
คุณไม่ควรทำเช่นนี้
root
ผู้ใช้ crontab แทนการใช้ crontab ทั้งระบบ/etc/crontab
?
sudoers
ไฟล์ของคุณเช่นกลุ่ม sudo โดยไม่ต้องใช้รหัสผ่าน
หากคุณกำลังวางสคริปต์จากหนึ่งในไดเรกทอรี cron ( /etc/cron.*
) จากนั้นคุณไม่จำเป็นต้องใช้ sudo เหมือนที่ทำงานเป็นราก
หากคุณใช้ crontab คุณจะต้องใช้ crontab ของรูท สิ่งนี้จะเรียกใช้เป็น root และไม่จำเป็นต้องใช้ sudo
sudo crontab -e
เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
sudo visudo
เพิ่มบรรทัดต่อไปนี้ในตอนท้ายของไฟล์:
vidyadhar ALL= NOPASSWD: /bin/rm
ในตัวอย่างข้างต้น vidyadhar เป็นชื่อผู้ใช้และจะไม่ถามรหัสผ่านหากคุณใช้คำสั่ง rm ผ่าน vidyadhar
sudo rm -rf 'slash'
( อย่าเรียกใช้คำสั่งนั้น ) เรียกใช้จากผู้ใช้นั้นจะไม่ต้องการรหัสผ่าน .. ฉันไม่รู้มันรู้สึกไม่ปลอดภัยใช่ไหม?
vidyadhar ALL= NOPASSWD: /bin/rm somefile
จะปลอดภัยกว่า
<username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>
ซึ่งจะปลอดภัยกว่ามาก