【问题标题】:Script to check permissions检查权限的脚本
【发布时间】:2019-07-05 08:10:32
【问题描述】:

我正在尝试编写一个脚本来检查 docker 中容器内文件的权限,但它让我说“需要二进制运算符”

我尝试添加“测试”(我通过互联网看到它,但它不起作用。)

#!/bin/bash
docker exec -i container1 touch /home/ubuntu/tryme

if [ -f -rwx container1:/home/ubuntu/tryme ];
   then
     echo "Full Permissions";
   else
     echo "Not every permission. It will be updated"
    docker exec -i container1 chmod 777 /home/ubuntu/tryme;
   fi

这是让我头疼的脚本部分

我原以为它能很好地工作,但它一直说“期望二元运算符”

【问题讨论】:

  • 您确定-f -rwx container1:/home/ubuntu/tryme 返回布尔值(真/假)吗?
  • 我很生气......这很“简单”,但它不起作用。
  • 一次检查一次并与&&一起加入。
  • -f -rwx 应该做什么?

标签: linux bash shell docker containers


【解决方案1】:

所以:

  1. 获取文件权限。
  2. 检查文件权限是否符合您的要求。

喜欢:

filepermissions=$(stat -c '%a' /home/ubuntu/tryme)
if [ "$filepermissions" = "777" ]; then
    echo "File permissions are set to 777"
else
    echo "They are not set to 777"
fi

[ -f -rwx container1:/home/ubuntu/tryme ] 无效。来自test-f 标志检查(来自man test):

-f FILE
    FILE exists and is a regular file 

-f -rwx 检查文件-rwx 是否存在。那么第三个参数无效并且[test 需要binary operation。它期望 -o-a 二进制操作作为第三个参数,任何其他都无效且没有任何意义。

如果文件在 docker 内,修改脚本很简单,获取 docker 容器上下文中的文件权限:

filepermissions=$(docker exec -i container1 stat -c '%s' /home/ubuntu/tryme)

【讨论】:

  • 你太棒了。谢谢朋友
猜你喜欢
  • 2019-08-29
  • 2010-12-08
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
相关资源
最近更新 更多