首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/bin/bash失败的"-r“运算符,但它在/bin/sh中工作

/bin/bash失败的"-r“运算符,但它在/bin/sh中工作
EN

Stack Overflow用户
提问于 2022-03-24 10:18:37
回答 1查看 83关注 0票数 0

始终作为容器入口点运行的bash脚本。我刚刚从Al菠萝3.13升级到Al菠萝3.15.0,脚本开始失败,无法对挂载和卸载文件进行"-r“检查。

码头版18.06.1-ce, build e68fc7a

libseccomp版本libseccomp2/now 2.4.1-0ubuntu0.18.04.2

最小算例

代码语言:javascript
复制
bash-5.1# ls -lt try
-rw-r--r-- 1 root root 0 Mar 24 08:47 try

bash-5.1# cat test.sh
#!/bin/bash

if [ ! -r /tmp/try ] ; then
    echo "fail -r"
fi

if [ ! -f /tmp/try ] ; then
    echo "fail -f"
fi

bash-5.1# bash test.sh
fail -r
bash-5.1# sh test.sh
bash-5.1#
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-27 08:29:26

这个问题已经在这里被记录下来:https://github.com/alpinelinux/docker-alpine/issues/156

建议的解决方案在这里列出:3.14.0#faccessat2

由于我无法更新docker和libseccomp版本,所以我尝试了第三个选项,并且工作正常。

  1. 作为解决办法,为了在旧的Docker或libseccomp版本下运行,应该下载moby默认seccomp配置文件,并在第2行将defaultAction更改为SCMP_ACT_TRACE,然后--seccomp-profile=default.json可以传递给dockerd,或者--security-opt=seccomp=default.json传递给docker createdocker run。这将导致系统调用返回ENOSYS而不是EPERM,从而使容器返回faccessat。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71600607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档