因此,我有一个 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 重定向的示例。