เท่าที่ฉันรู้ systemd จะไม่จัดการกับสิ่งนี้เป็นพิเศษ ตามที่ฉันเข้าใจแล้วคุณต้องการแทนที่พฤติกรรมของsshd.serviceใช่ไหม
โชคดีสำหรับคุณ systemd ถูกออกแบบมาสำหรับสิ่งนี้ เพียงแค่ใส่คำนิยามบริการของคุณในการ/etc/systemd/system/ssh.serviceดำเนินการsystemctl daemon-reloadกับไฟล์หน่วยโหลดและ systemd ssh.serviceโดยอัตโนมัติจะใช้การกำหนดค่าที่แทนของระบบ
อยากมีsystemctl enable mysshd.serviceงานทำด้วยเหรอ? ไม่มีปัญหา. ในส่วนของไฟล์หน่วยของคุณเพิ่มบรรทัดที่บอกว่า[Install] Alias=mysshd.serviceจากนั้นดำเนินการsystemctl reenable ssh.serviceเพื่อให้ systemd แก้ไขหน่วยลิงก์สัญลักษณ์และคุณเป็นสีทอง
ตอนนี้คุณยังไม่ได้ให้รายละเอียดเกี่ยวกับสิ่งที่mysshd.serviceควรทำ ถ้ามันแตกต่างจากปกติssh.serviceโดยสิ้นเชิงเยี่ยมมาก! ใช้วิธีการด้านบน อย่างไรก็ตามหากคุณต้องการเปลี่ยนสิ่งเล็ก ๆ น้อย ๆ เพียงอย่างเดียวแสดงว่าคุณกำลังใช้วิธีที่ผิด systemd ช่วยให้คุณสร้าง "ตัวอย่าง" ของไฟล์หน่วยที่จะนำไปใช้ด้านบนของไฟล์หน่วยปกติ สิ่งนี้ช่วยให้คุณสามารถเพิ่มหรือลบล้างคำสั่งแต่ละคำสั่งในขณะที่อนุญาตให้ส่วนที่เหลือของไฟล์หน่วยได้รับการปรับปรุงจากผู้จัดการแพคเกจ ในการทำสิ่งนี้เพียงสร้าง/etc/systemd/system/ssh.d/my-custom-config.conf(คุณสามารถเปลี่ยนmy-custom-config.confเป็นสิ่งที่คุณต้องการและคุณยังสามารถมีไฟล์แทนที่ได้หลายไฟล์) ssh.serviceในแฟ้มที่สถานที่สั่งสิ่งที่คุณต้องการที่จะเปลี่ยนแปลงหรือเพิ่มตามปกติ คุณสามารถเพิ่มAlias=คำสั่งเพื่อใช้systemctl start mysshd.serviceงานได้! เพียงจำไว้ว่าให้ดำเนินการsystemctl daemon-reloadหลังจากที่คุณทำ (และถ้าคุณใช้Alias=, systemctl reenable ssh.service)
เช่นกันไม่เคยเคยเปลี่ยนไฟล์หน่วย systemd /usr/lib/systemdใน ที่เคย! ระบบแฟ้ม Hierarchy มาตรฐานต้องที่/usrจะถือว่าเป็นอ่านอย่างเดียว ในทางปฏิบัติซึ่งหมายความว่าผู้จัดการบรรจุภัณฑ์จัดการ/usr(ยกเว้น/usr/local) และคุณไม่ได้สัมผัสกับสิ่งที่ผู้จัดการบรรจุภัณฑ์จัดการ - โดยเฉพาะอย่างยิ่งเพราะสิ่งที่คุณเปลี่ยนแปลงจะถูกเขียนทับในที่สุด ให้นำสิ่งของของคุณไปวางไว้ที่อื่น/etcแทน