Theo như tôi biết, systemd sẽ không giải quyết vấn đề này đặc biệt tốt. Theo tôi hiểu, bạn muốn ghi đè hành vi của sshd.service
, phải không?
May mắn cho bạn, systemd được thiết kế cho loại điều này. Chỉ cần đặt định nghĩa dịch vụ của bạn vào /etc/systemd/system/ssh.service
, thực thi systemctl daemon-reload
để tải lại các tệp đơn vị và systemd sẽ tự động sử dụng cấu hình đó thay vì hệ thống ssh.service
.
Bạn cũng muốn có systemctl enable mysshd.service
công việc? Không vấn đề gì. Trong [Install]
phần của tệp đơn vị của bạn, thêm một dòng có nội dung Alias=mysshd.service
. Sau đó thực hiện systemctl reenable ssh.service
để có systemd sửa các liên kết đơn vị, và bạn là vàng.
Bây giờ, bạn chưa đưa ra chi tiết về những gì mysshd.service
cần phải làm. Nếu nó hoàn toàn khác với bình thường ssh.service
, thật tuyệt! Sử dụng phương pháp trên. Tuy nhiên, nếu bạn chỉ muốn thay đổi một điều nhỏ, thì bạn đang sử dụng sai phương pháp. systemd cho phép bạn tạo "đoạn trích" của các tệp đơn vị sẽ được áp dụng trên đầu các tệp đơn vị bình thường. Điều này cho phép bạn thêm hoặc ghi đè các chỉ thị riêng lẻ trong khi cho phép phần còn lại của tệp đơn vị nhận được cập nhật từ trình quản lý gói. Để làm điều này, chỉ cần tạo /etc/systemd/system/ssh.d/my-custom-config.conf
(bạn có thể thay đổi my-custom-config.conf
thành bất cứ điều gì bạn muốn và bạn cũng có thể có nhiều tệp ghi đè). Trong tệp đó, đặt bất kỳ chỉ thị nào bạn muốn thay đổi hoặc thêm vào thông thường ssh.service
. Bạn thậm chí có thể thêm Alias=
chỉ thị, để systemctl start mysshd.service
làm việc! Chỉ cần nhớ để thực hiệnsystemctl daemon-reload
sau khi bạn hoàn thành (và, nếu bạn đã sử dụng Alias=
, systemctl reenable ssh.service
).
Là một sang một bên, không bao giờ, bao giờ thay đổi file đơn vị systemd trong /usr/lib/systemd
. Không bao giờ! Các hệ thống tập tin tiêu chuẩn cấp bậc đòi hỏi mà /usr
được coi là chỉ đọc. Trong thực tế, điều này có nghĩa là trình quản lý gói xử lý /usr
(ngoại trừ /usr/local
) và bạn không chạm vào những gì trình quản lý gói xử lý - đặc biệt là vì bất cứ điều gì bạn thay đổi có thể sẽ bị ghi đè. Thay vào đó, hãy đặt công cụ của bạn vào một nơi nào đó như thế nào /etc
.