![服务用户无法在他们拥有的目录中创建/修改文件](https://linux22.com/image/172852/%E6%9C%8D%E5%8A%A1%E7%94%A8%E6%88%B7%E6%97%A0%E6%B3%95%E5%9C%A8%E4%BB%96%E4%BB%AC%E6%8B%A5%E6%9C%89%E7%9A%84%E7%9B%AE%E5%BD%95%E4%B8%AD%E5%88%9B%E5%BB%BA%2F%E4%BF%AE%E6%94%B9%E6%96%87%E4%BB%B6.png)
我肯定错过了什么。我创建了一个服务帐户,它将运行我作为 cron 作业创建的脚本。该脚本将要处理的文件链接到监视的文件夹。该脚本以 root 身份运行得很好,但我认为最好使用服务帐户并让 cron 作业在该帐户下每小时运行一次。现在,当我尝试创建文件/文件夹作为服务帐户时,我遇到了权限问题。
[root@analysis ~]# ls -l /watched/robert.sicko/
total 24
drwxrwx--- 20 srvArcherNBS srvArcherNBS 20480 May 8 11:35 XXX
drwxrwx--- 2 srvArcherNBS srvArcherNBS 4096 May 4 11:04 test
[root@analysis ~]# su -c "touch /watched/robert.sicko/test/abc.completed" srvArcherNBS
touch: cannot touch `/watched/robert.sicko/test/abc.completed': Permission denied
其他信息。服务器运行 CentOS 版本 6.10。观看,robert.sicko 和测试目录已经存在,我将 /watched/robert.sicko/* 的所有权更改为服务帐户:
chown -R srvArcherNBS:srvArcherNBS /watched/robert.sicko/*
/watched 目录不属于 srvArcherNBS,但将 /watched 和 /watched/robert.sicko 组更改为 srvArcherNBS 并没有改变任何内容
[root@analysis watched]# ls -l
total 4
drwxrwx--- 4 apache archer_daemon_web_access 4096 May 4 11:04 robert.sicko
编辑以添加 ls /watched/robert.sicko/test/abc.completed 的结果:
[root@analysis /]# ls -l /watched/robert.sicko/test/abc.completed
ls: cannot access /watched/robert.sicko/test/acb.completed: No such file or directory
edit2 增加了奇怪之处 - 使用 su 运行 ls,因为 srvArcherNBS 被拒绝权限,但如果我 su srvArcherNBS,我就可以 ls。
[root@analysis robert.sicko]# pwd
/var/www/analysis/watched/robert.sicko
[root@analysis robert.sicko]# su -c "ls -la /var/www/analysis/watched/robert.sicko" srvArcherNBS
ls: cannot access /var/www/analysis/watched/robert.sicko: Permission denied
[root@analysis robert.sicko]# su srvArcherNBS
[srvArcherNBS@analysis robert.sicko]$ ls -la
total 32
drwxrwx--- 4 apache srvArcherNBS 4096 May 4 11:04 .
drwxrwx--- 3 apache srvArcherNBS 4096 Mar 27 2019 ..
drwxrwx--- 22 srvArcherNBS srvArcherNBS 20480 May 8 15:10 XXX
drwxrwx--- 2 srvArcherNBS srvArcherNBS 4096 May 4 11:04 test
[srvArcherNBS@analysis robert.sicko]$
挂载输出
[root@analysis robert.sicko]# mount
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/VolGroup-lv_home on /home type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
//prd/agtcnbs on /mnt/agtcnbs type cifs (rw )
答案1
我最终通过更改树中目录的权限解决了这个问题:
/var/www/analysis/watched/robert.sicko
我必须给其他人 r+x 权限var
www
等。即使我将我试图写入的目录的组权限设置为 rwx。我不完全理解它,但它似乎仍然比运行我的 cron 作业更安全作为根。