Một trong những cách mà tôi đã làm điều này là bằng cách che giấu hệ thống
mục tiêu, ngăn một số hành động nhất định được thực hiện, bất kể ai nhập lệnh. Ví dụ: để ngăn hệ thống bị tắt, bạn có thể thực hiện việc này:
Sudo systemctl mask poweroff.target
Bây giờ bất kỳ nỗ lực nào để tắt hệ thống thông qua sudo tắt máy
hoặc sudo systemctl tắt máy
sẽ âm thầm thất bại. Điều tương tự cũng có thể được thực hiện với việc tạm dừng và khởi động lại:
Sudo systemctl mask runlevel0.target
sudo systemctl mặt nạ dừng.đích
Sudo systemctl mask runlevel6.target
Sudo systemctl mask reboot.target
Ghi chú: runlevel6
tương đương với khởi động lại
, và runlevel0
tương đương với tắt
và tạm dừng lại
.
Để hoàn tác điều này, các lệnh này có thể được chạy lại, nhưng với vạch mặt
:
Sudo systemctl vạch mặt runlevel0.target
sudo systemctl unmask shutdown.target
sudo systemctl unmask pause.target
Sudo systemctl vạch mặt runlevel6.target
Sudo systemctl vạch mặt reboot.target
Với suy nghĩ này, bây giờ bạn có thể viết một tập lệnh có thể thực thi được chỉ có cho những người có sudo
quyền:
#!/bin/bash
## Xác định thao tác sẽ chạy (mặt nạ | vạch mặt)
op=mặt nạ
nếu [[ $1 = vạch mặt ]]
sau đó
op=vạch mặt
fi
## Đặt các mục tiêu mà chúng tôi muốn che dấu
khai báo -a arr=("runlevel0" "runlevel6" "shutdown" "reboot" "halt")
## Chạy các lệnh
cho tôi trong "${arr[@]}"
làm
cmd=$( Sudo systemctl $op $i.target )
tiếng vang "$i :: $op"
xong
CẢNH BÁO: Mã này sẽ hoạt động, nhưng nó khá thô. Hãy chắc chắn kiểm tra nó bằng máy ảo hoặc một nơi nào đó "an toàn" trước khi chạy nó trên hộp sản xuất.
Bây giờ bạn có thể chạy tập lệnh này để che giấu các mục tiêu sau khi khởi động và tắt/khởi động lại như thế này:
sudo ~./setTargetMask.sh vạch mặt
Sudo tắt máy ngay bây giờ
Ghi chú: Hãy gọi kịch bản bất cứ điều gì bạn muốn.