Parity创建PoA私链账户时读取链规格文件遇权限拒绝错误
解决Parity加载PoA配置文件时的Permission Denied错误
我仔细看了你的报错信息和strace输出,发现问题根本不是普通的文件权限设置问题——你用的是Snap包安装的Parity,Snap的沙箱安全机制会强制隔离应用的文件访问范围,哪怕你把文件权限改成777或者用sudo执行,也突破不了这个隔离限制。
从strace里的关键日志就能看出来:
open("privatepoa-spec.json", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)
而且整个Parity进程的运行路径都被限制在/root/snap/parity/15610/这个沙箱目录里,它根本访问不到你当前目录或者~/ethereum/poa/下的文件。
可行的解决方案
方案1:换掉Snap版Parity,用官方无沙箱版本
这是最省心的解决方式,彻底避开Snap的限制:
- 先卸载当前的Snap版Parity:
sudo snap remove parity - 安装官方的OpenEthereum(Parity现在的正式名称),推荐用PPA或者直接下载二进制包:
- Ubuntu/Debian系统用PPA:
sudo add-apt-repository ppa:ethereum/ethereum sudo apt update sudo apt install openethereum - 直接下载二进制文件(适合所有Linux发行版):
wget https://github.com/openethereum/openethereum/releases/download/v3.3.5/openethereum-linux.zip unzip openethereum-linux.zip chmod +x openethereum sudo mv openethereum /usr/local/bin/
- Ubuntu/Debian系统用PPA:
- 之后再执行你的命令,就能正常访问配置文件和节点目录了:
openethereum --chain privatepoa-spec.json -d ~/ethereum/poa/node1/
方案2:把配置文件移到Snap允许访问的目录
如果你坚持要用Snap版Parity,可以把文件放到Snap应用有权限访问的目录,比如~/snap/parity/common/:
- 复制配置文件到这个目录:
cp privatepoa-spec.json ~/snap/parity/common/ - 同时把节点数据目录也移到这个路径下,然后修改命令:
sudo parity --chain ~/snap/parity/common/privatepoa-spec.json -d ~/snap/parity/common/node1/
快速验证问题的方法
你可以先测试Snap版Parity能不能读取你的配置文件:
sudo snap run parity cat /full/path/to/your/privatepoa-spec.json
如果返回权限拒绝,就100%确认是Snap沙箱的问题了。
内容的提问来源于stack exchange,提问作者gggg
相关产品推荐
相关产品推荐

