mirror of
https://github.com/bin456789/reinstall.git
synced 2026-10-03 22:17:46 +08:00
core: 修复 frpc 无法启动,并优化安全性
This commit is contained in:
+12
-3
@@ -415,10 +415,19 @@ d-i preseed/late_command string true; \
|
||||
mkdir -p /target/usr/local/bin; \
|
||||
mkdir -p /target/usr/local/etc/frpc; \
|
||||
cp /usr/local/bin/frpc /target/usr/local/bin/; \
|
||||
cp /usr/local/etc/frpc/frpc.* /target/usr/local/etc/frpc/; \
|
||||
chmod a+x /target/usr/local/bin/frpc; \
|
||||
chmod 600 /target/usr/local/etc/frpc/frpc.*; \
|
||||
cp /usr/local/etc/frpc/frpc.* /target/usr/local/etc/frpc/frpc.toml; \
|
||||
cp /frpc.service /target/etc/systemd/system/; \
|
||||
in-target chmod ug+x /usr/local/bin/frpc; \
|
||||
if (. /target/etc/os-release && [ "$ID" = debian ] && [ "$VERSION_ID" -le 10 ]); then \
|
||||
sed -i 's/^\[X-Service-Old\]$/[Service]/' /target/etc/systemd/system/frpc.service; \
|
||||
in-target useradd --system --no-create-home --home-dir /nonexistent --shell /sbin/nologin frpc; \
|
||||
in-target chown root:frpc /usr/local/etc/frpc/frpc.toml; \
|
||||
in-target chmod 640 /usr/local/etc/frpc/frpc.toml; \
|
||||
else \
|
||||
sed -i 's/^\[X-Service-New\]$/[Service]/' /target/etc/systemd/system/frpc.service; \
|
||||
in-target chown root:root /usr/local/etc/frpc/frpc.toml; \
|
||||
in-target chmod 600 /usr/local/etc/frpc/frpc.toml; \
|
||||
fi; \
|
||||
in-target systemctl enable frpc; \
|
||||
fi; \
|
||||
|
||||
|
||||
+13
-4
@@ -5,13 +5,22 @@ Description=Frp Client Service
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
[X-Service-Old]
|
||||
Type=simple
|
||||
User=nobody
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
ExecStart=/usr/local/bin/frpc -c /usr/local/etc/frpc/frpc.conf
|
||||
ExecReload=/usr/local/bin/frpc reload -c /usr/local/etc/frpc/frpc.conf
|
||||
User=frpc
|
||||
ExecStart=/usr/local/bin/frpc -c /usr/local/etc/frpc/frpc.toml
|
||||
ExecReload=/usr/local/bin/frpc reload -c /usr/local/etc/frpc/frpc.toml
|
||||
|
||||
[X-Service-New]
|
||||
Type=simple
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
DynamicUser=yes
|
||||
LoadCredential=frpc.toml:/usr/local/etc/frpc/frpc.toml
|
||||
ExecStart=/usr/local/bin/frpc -c ${CREDENTIALS_DIRECTORY}/frpc.toml
|
||||
ExecReload=/usr/local/bin/frpc reload -c ${CREDENTIALS_DIRECTORY}/frpc.toml
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
@@ -1736,9 +1736,12 @@ install_alpine() {
|
||||
chroot /os apk add frp
|
||||
# chroot rc-update add 默认添加到 sysinit
|
||||
# 但不加 chroot 默认添加到 default
|
||||
chroot /os rc-update add frpc boot
|
||||
cp -f /configs/frpc.* /os/etc/frp/
|
||||
chmod 600 /os/etc/frp/frpc.*
|
||||
chroot /os rc-update add frpc default
|
||||
|
||||
# 固定为 toml
|
||||
# 这样就不用在 /etc/init.d/frpc drop-in 修改 cfgfile
|
||||
cp -f /configs/frpc.* /os/etc/frp/frpc.toml
|
||||
chmod 600 /os/etc/frp/frpc.toml
|
||||
fi
|
||||
|
||||
# setup-disk 会自动选择固件,但不包括微码?
|
||||
@@ -2054,6 +2057,8 @@ EOF
|
||||
cp /configs/frpc.* /os/etc/nixos/
|
||||
chmod 600 /os/etc/nixos/frpc.*
|
||||
ext=$(basename /configs/frpc.* | awk -F. '{print $NF}')
|
||||
# 默认已经开了 DynamicUser = true;
|
||||
# https://github.com/NixOS/nixpkgs/blob/nixos-26.05/nixos/modules/services/networking/frp.nix
|
||||
cat <<EOF
|
||||
services.frp = {
|
||||
enable = true;
|
||||
@@ -2167,8 +2172,13 @@ EOF
|
||||
add_systemd_service() {
|
||||
local os_dir=$1
|
||||
local service_name=$2
|
||||
local service_file=$3
|
||||
|
||||
download "$confhome/$service_name.service" "$os_dir/etc/systemd/system/$service_name.service"
|
||||
if [ -n "$service_file" ]; then
|
||||
cp "$service_file" "$os_dir/etc/systemd/system/$service_name.service"
|
||||
else
|
||||
download "$confhome/$service_name.service" "$os_dir/etc/systemd/system/$service_name.service"
|
||||
fi
|
||||
chroot "$os_dir" systemctl enable "$service_name.service"
|
||||
|
||||
# aosc 首次开机会执行 preset-all
|
||||
@@ -2215,12 +2225,27 @@ add_frpc_systemd_service_if_need() {
|
||||
rm -f "$os_dir/frpc.tar.gz"
|
||||
chmod a+x "$os_dir/usr/local/bin/frpc"
|
||||
|
||||
# frpc conf
|
||||
cp -f /configs/frpc.* "$os_dir/usr/local/etc/frpc/"
|
||||
chmod 600 $os_dir/usr/local/etc/frpc/frpc.*
|
||||
# frpc toml
|
||||
cp -f /configs/frpc.* "$os_dir/usr/local/etc/frpc/frpc.toml"
|
||||
download "$confhome/frpc.service" /tmp/frpc.service
|
||||
if [ "$(chroot $os_dir systemctl --version | head -1 | awk '{print $2}')" -ge 247 ]; then
|
||||
# 新版本 systemd
|
||||
sed -i 's/^\[X-Service-New\]$/[Service]/' /tmp/frpc.service
|
||||
chroot "$os_dir" chown root:root /usr/local/etc/frpc/frpc.toml
|
||||
chroot "$os_dir" chmod 600 /usr/local/etc/frpc/frpc.toml
|
||||
else
|
||||
# 旧版本 systemd
|
||||
sed -i 's/^\[X-Service-Old\]$/[Service]/' /tmp/frpc.service
|
||||
chroot "$os_dir" useradd --system --no-create-home \
|
||||
--home-dir /nonexistent \
|
||||
--shell /sbin/nologin \
|
||||
frpc
|
||||
chroot "$os_dir" chown root:frpc /usr/local/etc/frpc/frpc.toml
|
||||
chroot "$os_dir" chmod 640 /usr/local/etc/frpc/frpc.toml
|
||||
fi
|
||||
|
||||
# 添加服务
|
||||
add_systemd_service "$os_dir" frpc
|
||||
add_systemd_service "$os_dir" frpc /tmp/frpc.service
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user