检查权限的脚本

时间:2019-07-05 08:10:32

标签: linux bash shell docker containers

我正在尝试编写一个脚本来检查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

那是脚本的一部分,这让我很头疼

我原本希望它能很好地工作,但是一直说“期望二进制运算符”

2 个答案:

答案 0 :(得分:2)

所以:

  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 ]无效。来自-f的{​​{1}}标志检查(来自man test):

test

-f FILE FILE exists and is a regular file 检查文件-f -rwx是否存在。然后,第三个参数无效,并且-rwx[期望一个test。它期望将binary operation-o二进制操作作为第三个参数,其他任何参数都是无效的,没有任何意义。

如果文件位于docker内部,则很容易修改脚本,以在docker容器上下文中获取文件权限:

-a

答案 1 :(得分:-1)

选项$q->where('a', 1); $q->orWhere('a', 2); $q->orWhere('a', 3); 用于检查参数是否为文件,因此-f不是文件。在回显执行chmod之前或之后,从if中删除-rwx

如果您的想法是知道它是否是文件并具有所有权限,也许您可​​以尝试使用此

-rwx

希望这对您有所帮助,如果您愿意,我可以用西班牙语进行解释。

致谢。