当我尝试使用脚本创建新文件时权限被拒绝

当我尝试使用脚本创建新文件时权限被拒绝

因此,我有一个 bash 脚本“get-data.sh”,它运行其他两个 python 脚本

#!/bin/bash

scripts=/root/scripts
datos=/root/zabbixdata
fecha=$(date +"%Y_%m_%d")

sudo $scripts/filesystem.py > $datos/filesystem_$fecha.log &
sudo $scripts/cpu.py > $datos/cpu_$fecha.log &

当我运行脚本时出现以下错误

./get-data.sh: line 8: /root/zabbixdata/filesystem_2020_01_02.log: Permission denied
./get-data.sh: line 9: /root/zabbixdata/cpu_2020_01_02.log: Permission denied

python脚本的权限:

-rwxrwxr-x 1 myuser myuser 1629 Jan  2 12:01 cpu.py
-rwxrwxr-x 1 myuser myuser 1680 Jan  2 11:06 filesystem.py

bash脚本的权限:

-rwxrwxr-x 1 myuser myuser   326 Jan  2 11:51 get-data.sh

目标目录的权限

drwxrwxr-x 2 myuser myuser 6 Jan  2 11:43 zabbixdata

脚本目录的权限

drwxrwxr-x 2 myuser myuser 93 Jan  2 12:14 scripts

看起来我拥有所有权限,但我仍然可以通过 shell 脚本创建这些文件

有任何想法吗?

答案1

我假设您的 /root 目录的权限是 0550(Centos 服务器中的默认权限)。

# stat /root/
File: /root/
Size: 4096          Blocks: 8          IO Block: 4096   directory
Device: fd01h/64769d    Inode: 10747905    Links: 23
Access: (0550/dr-xr-x---)  Uid: (    0/    root)   Gid: (    0/    root)

如果您使用用户 myuser 执行脚本“get-data.sh”,则标准输出重定向由没有权限访问 /root 的 shell 执行。输出重定向不是由 sudo 执行的。

/root 权限的“其他”部分中缺少“x”标志,允许访问子目录 /root/zabbixdata/,但出于安全原因,您可能不想添加它。在 [1] 中,您可以找到一些使用 sudo 重定向的示例。

[1]https://stackoverflow.com/questions/82256/how-do-i-use-sudo-to-redirect-output-to-a-location-i-dont-have-permission-to-wr

相关内容