ฉันจะปิดการใช้งาน cron ของผู้ใช้อย่างน้อยหนึ่งงานได้อย่างไร โดยเฉพาะอย่างยิ่งฉันไม่ต้องการที่จะระงับสิทธิ cron ของผู้ใช้ - ไม่เพียง แต่ยิงงานใด ๆ ของพวกเขา
ฉันใช้ระบบ SLES 11 SP2 และ SP3
ฉันจะปิดการใช้งาน cron ของผู้ใช้อย่างน้อยหนึ่งงานได้อย่างไร โดยเฉพาะอย่างยิ่งฉันไม่ต้องการที่จะระงับสิทธิ cron ของผู้ใช้ - ไม่เพียง แต่ยิงงานใด ๆ ของพวกเขา
ฉันใช้ระบบ SLES 11 SP2 และ SP3
คำตอบ:
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$username
ควรทำเคล็ดลับ กู้คืนด้วยchmod 600
และtouch
(คุณต้องเปลี่ยน mtime ของไฟล์เพื่อให้ cron (พยายาม) โหลดซ้ำ)
อย่างน้อย Debian และอาจเป็นกับ Vixie cron โดยทั่วไปchmod 400 /var/spool/cron/crontabs/$username
ก็ใช้กลอุบายเพราะการใช้งานนั้นยืนยันว่าการอนุญาตมีค่าเท่ากับ 600 อย่างไรก็ตามสิ่งนี้จะคงอยู่จนกว่าผู้ใช้จะรันcrontab
คำสั่ง
หากคุณต้องการเป็นวิธีที่มีประสิทธิภาพ, ฉันไม่คิดว่ามีอะไรที่ดีกว่าชั่วคราวย้าย crontab ของพวกเขาออกจากทางหรือเปลี่ยนสิทธิ์และ/etc/cron.deny
ชั่วคราวเพิ่มให้
chmod
แต่มันก็ยังคงดำเนินการแม้หลังจากที่
touch $username
chmod
แต่นั่นไม่ได้ช่วย (btw มาถึงจุดของคุณcron.deny
)
chgrp root /var/spool/cron/crontabs
วิธีการเกี่ยวกับสิ่งนี้เพื่อปิดการใช้งาน crontab ผู้ใช้:
crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]
และเปิดใช้งานอีกครั้ง:
crontab -u [username] /tmp/[username].cron.tmp
สิ่งนี้มีข้อดีเพิ่มเติมที่คุณสามารถเรียกใช้ได้ในฐานะผู้ใช้นั้นโดยไม่จำเป็นต้องรูท
หากคุณใช้ Debian สิ่งนี้ใช้ได้กับ Debian AFAIK เท่านั้น :
คุณสามารถทำได้โดยเพิ่มจุดลงในชื่อของ cronjob
พฤติกรรมที่อ้างถึงในเอกสารอย่างเป็นทางการของเดเบียน:
https://www.debian.org/doc/debian-policy/#cron-job-file-names
ชื่อไฟล์งาน cron ต้องไม่รวมระยะเวลาหรือตัวอักษรบวก (. หรือ +) ใด ๆ เพราะจะทำให้ cron ละเว้นไฟล์ ควรใช้เครื่องหมายขีดล่าง (_) แทน และ + ตัวอักษร
หากคุณเพียงแค่ต้องการหยุดcron
งานทั้งหมดเพียงระยะเวลาหนึ่ง - ตัวอย่างเช่นในขณะที่ทำการบำรุงรักษาระบบซึ่งพวกเขาอาจมีปฏิสัมพันธ์ไม่ดีกับ - คำสั่งเป็นปกติ
systemctl stop crond.service
และเพื่อดำเนินการต่อ
systemctl start crond.service
ฉันคิดว่าคุณต้องการสิทธิ์รูทหรือล้อเพื่อดำเนินการเหล่านั้น หากจำเป็นให้เรียกใช้พวกเขาผ่าน sudo หรือ (สุดท้าย) เข้าสู่ระบบเป็น root
overkill สำหรับคำถามเฉพาะที่วาง แต่ให้ "การช็อปปิ้งแบบครบวงจร" และไม่จำเป็นต้องเล่นกับระบบไฟล์หรือไฟล์ชั่วคราว
ฉันเห็นด้วยเส้นทางผ่าน systemctl คือสิ่งที่ต้องทำ บนราสเบอร์รี่จะมีนิ้วเท้าชี้
sudo systemctl stop cron.service
sudo systemctl start cron.service
cron
บริการทั้งหมด OP ต้องการให้สามารถเลือก crontabs ของผู้ใช้ที่จะปิดใช้งาน
-u user
สวิตช์ของcrontab
คำสั่งและใส่#
อักขระข้อคิดเห็นไว้ด้านหน้างานเพื่อปิดการใช้งานสำหรับผู้ใช้ที่กำหนด