mirror of
https://github.com/bin456789/reinstall.git
synced 2026-10-04 06:27:49 +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/bin; \
|
||||||
mkdir -p /target/usr/local/etc/frpc; \
|
mkdir -p /target/usr/local/etc/frpc; \
|
||||||
cp /usr/local/bin/frpc /target/usr/local/bin/; \
|
cp /usr/local/bin/frpc /target/usr/local/bin/; \
|
||||||
cp /usr/local/etc/frpc/frpc.* /target/usr/local/etc/frpc/; \
|
cp /usr/local/etc/frpc/frpc.* /target/usr/local/etc/frpc/frpc.toml; \
|
||||||
chmod a+x /target/usr/local/bin/frpc; \
|
|
||||||
chmod 600 /target/usr/local/etc/frpc/frpc.*; \
|
|
||||||
cp /frpc.service /target/etc/systemd/system/; \
|
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; \
|
in-target systemctl enable frpc; \
|
||||||
fi; \
|
fi; \
|
||||||
|
|
||||||
|
|||||||
+13
-4
@@ -5,13 +5,22 @@ Description=Frp Client Service
|
|||||||
After=network-online.target
|
After=network-online.target
|
||||||
Wants=network-online.target
|
Wants=network-online.target
|
||||||
|
|
||||||
[Service]
|
[X-Service-Old]
|
||||||
Type=simple
|
Type=simple
|
||||||
User=nobody
|
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5s
|
RestartSec=5s
|
||||||
ExecStart=/usr/local/bin/frpc -c /usr/local/etc/frpc/frpc.conf
|
User=frpc
|
||||||
ExecReload=/usr/local/bin/frpc reload -c /usr/local/etc/frpc/frpc.conf
|
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]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
@@ -1736,9 +1736,12 @@ install_alpine() {
|
|||||||
chroot /os apk add frp
|
chroot /os apk add frp
|
||||||
# chroot rc-update add 默认添加到 sysinit
|
# chroot rc-update add 默认添加到 sysinit
|
||||||
# 但不加 chroot 默认添加到 default
|
# 但不加 chroot 默认添加到 default
|
||||||
chroot /os rc-update add frpc boot
|
chroot /os rc-update add frpc default
|
||||||
cp -f /configs/frpc.* /os/etc/frp/
|
|
||||||
chmod 600 /os/etc/frp/frpc.*
|
# 固定为 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
|
fi
|
||||||
|
|
||||||
# setup-disk 会自动选择固件,但不包括微码?
|
# setup-disk 会自动选择固件,但不包括微码?
|
||||||
@@ -2054,6 +2057,8 @@ EOF
|
|||||||
cp /configs/frpc.* /os/etc/nixos/
|
cp /configs/frpc.* /os/etc/nixos/
|
||||||
chmod 600 /os/etc/nixos/frpc.*
|
chmod 600 /os/etc/nixos/frpc.*
|
||||||
ext=$(basename /configs/frpc.* | awk -F. '{print $NF}')
|
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
|
cat <<EOF
|
||||||
services.frp = {
|
services.frp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -2167,8 +2172,13 @@ EOF
|
|||||||
add_systemd_service() {
|
add_systemd_service() {
|
||||||
local os_dir=$1
|
local os_dir=$1
|
||||||
local service_name=$2
|
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"
|
chroot "$os_dir" systemctl enable "$service_name.service"
|
||||||
|
|
||||||
# aosc 首次开机会执行 preset-all
|
# aosc 首次开机会执行 preset-all
|
||||||
@@ -2215,12 +2225,27 @@ add_frpc_systemd_service_if_need() {
|
|||||||
rm -f "$os_dir/frpc.tar.gz"
|
rm -f "$os_dir/frpc.tar.gz"
|
||||||
chmod a+x "$os_dir/usr/local/bin/frpc"
|
chmod a+x "$os_dir/usr/local/bin/frpc"
|
||||||
|
|
||||||
# frpc conf
|
# frpc toml
|
||||||
cp -f /configs/frpc.* "$os_dir/usr/local/etc/frpc/"
|
cp -f /configs/frpc.* "$os_dir/usr/local/etc/frpc/frpc.toml"
|
||||||
chmod 600 $os_dir/usr/local/etc/frpc/frpc.*
|
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
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user