You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下以root执行Synology DSM打包脚本遇/dev/null权限拒绝错误

解决pkgscripts-ng执行时的/dev/null权限拒绝与root身份验证错误

问题现象

使用pkgscripts-ng构建Synology DSM测试包时,执行脚本抛出以下错误:

/pkgscripts-ng/include/check: line 93: /dev/null: Permission denied
ERROR: This script must be run as root

已通过sudo -i切换为root,直接执行id | grep "uid=0" >/dev/null无异常,但脚本执行仍报错。

解决方案

1. 修复/dev/null的权限

首先检查/dev/null的权限是否正常:

ls -l /dev/null

正常输出应为:crw-rw-rw- 1 root root 1, 3 ...。如果权限不符,执行以下命令修复:

chmod 666 /dev/null

2. 排查环境限制(AppArmor)

Ubuntu默认启用AppArmor,可能会限制脚本对/dev/null的访问。临时关闭AppArmor测试:

systemctl stop apparmor

执行脚本测试是否正常,若解决问题,可根据开发需求调整AppArmor规则,或保持关闭(仅开发环境建议)。

3. 修复脚本中的语法错误

提供的CheckPermission函数存在语法错误:if块内误用了case语句的双分号(;;),会导致脚本逻辑异常。将函数修改为:

CheckPermission()
{
    # Only root can run this
    id | grep "uid=0" >/dev/null
    if [ $? != "0" ]; then
        echo "ERROR: This script must be run as root"
        echo ""
        exit 1
    fi

    # Stop!! If /root/.chroot does not exist
    if [ ! -f /root/.chroot ]; then
        echo "ERROR: Please chroot first!!"
        echo ""
        exit 1
    fi
}

4. 确认chroot环境准备

脚本要求存在/root/.chroot文件,说明需先进入pkgscripts-ng对应的chroot环境。按照工具文档执行准备步骤,例如运行./pkgscripts-ng/prepare脚本完成chroot环境配置后,再执行构建命令。

内容的提问来源于stack exchange,提问作者Volodymyr Usarskyy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 03:42:47