我遇到了 UNIX 权限问题:我正在 Debian Squeeze 下工作,我的一个脚本(由 运行www-data
)需要将文件23550.zip
(放置在另一个用户的主目录中)移动autodo
到该用户的子目录中home( /home/autodo/.processed
) 将其标记为已处理。
我尝试更改/home/autodo
,/home/autodo/23550.zip
和/home/autodo/.processed
的组所有权www-data
以允许www-data
用户移动此文件,但它仍然失败Permission denied
,如下所示(因为我是法国人,我将法语消息翻译回英语,尽管我无法确定翻译是这些命令的英文版本中显示的翻译):
sh-4.1$ ls -lah /home/autodo
total 27M
drwxr-xr-x 3 autodo www-data 4,0K 9 janv. 15:17 .
drwxr-xr-x 88 root root 4,0K 8 janv. 15:21 ..
-rwxr-xr-x 1 autodo ftpusers 4,8K 5 sept. 23:14 19236.zip
-rwxr-xr-x 1 autodo www-data 26M 9 janv. 14:26 23550.zip
-rwxr-xr-x 1 autodo ftpusers 2,3K 6 janv. 20:44 3194.zip
-rwxr-xr-x 1 autodo ftpusers 1,1M 5 sept. 23:38 53274.zip
-rwxr-xr-x 1 autodo ftpusers 585 6 sept. 00:50 70069.zip
-rwxr-xr-x 1 autodo ftpusers 220 16 nov. 15:10 .bash_logout
-rwxr-xr-x 1 autodo ftpusers 3,2K 16 nov. 15:10 .bashrc
drwxr-xr-x 2 autodo www-data 4,0K 9 janv. 15:16 .processed
-rwxr-xr-x 1 autodo ftpusers 675 16 nov. 15:10 .profile
sh-4.1$ ls -lah /home/autodo/.processed
total 66M
drwxr-xr-x 2 autodo www-data 4,0K 9 janv. 15:16 .
drwxr-xr-x 3 autodo www-data 4,0K 9 janv. 15:17 ..
-rwxr-xr-x 1 autodo ftpusers 3,8K 8 janv. 22:42 100583.zip
-rwxr-xr-x 1 autodo ftpusers 1,7K 9 janv. 02:48 12211.zip
-rwxr-xr-x 1 autodo ftpusers 2,2K 8 janv. 22:43 166273.zip
-rwxr-xr-x 1 autodo ftpusers 424K 8 janv. 22:52 193894.zip
-rwxr-xr-x 1 autodo ftpusers 1,2M 9 janv. 01:13 20662.zip
-rwxr-xr-x 1 autodo ftpusers 59M 9 janv. 00:43 22352.zip
-rwxr-xr-x 1 autodo ftpusers 1,2M 8 janv. 22:42 23704.zip
-rwxr-xr-x 1 autodo ftpusers 214K 9 janv. 02:34 24704.zip
-rwxr-xr-x 1 autodo ftpusers 632 9 janv. 01:17 26360.zip
-rwxr-xr-x 1 autodo ftpusers 2,8K 9 janv. 01:03 31795.zip
-rwxr-xr-x 1 autodo ftpusers 106K 9 janv. 00:11 31797.zip
-rwxr-xr-x 1 autodo ftpusers 413K 9 janv. 00:44 31799.zip
-rwxr-xr-x 1 autodo ftpusers 4,4K 8 janv. 22:30 31803.zip
-rwxr-xr-x 1 autodo ftpusers 2,3K 5 janv. 21:19 3194.zip
-rwxr-xr-x 1 autodo ftpusers 13K 8 janv. 23:33 5705.zip
-rwxr-xr-x 1 autodo ftpusers 2,8K 8 janv. 22:19 5858.zip
-rwxr-xr-x 1 autodo ftpusers 86K 9 janv. 04:34 604.zip
-rwxr-xr-x 1 autodo ftpusers 2,6M 9 janv. 03:34 7091.zip
-rwxr-xr-x 1 autodo ftpusers 3,4K 8 janv. 21:25 7878.zip
-rwxr-xr-x 1 autodo ftpusers 752K 9 janv. 03:37 8127.zip
-rwxr-xr-x 1 autodo ftpusers 6,1K 8 janv. 22:01 84846.zip
-rwxr-xr-x 1 autodo ftpusers 358K 9 janv. 02:42 989.zip
sh-4.1$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data),2000(ftpusers)
sh-4.1$ mv /home/autodo/23550.zip /home/autodo/.processed/
mv: unable to move « /home/autodo/23550.zip » to « /home/autodo/.processed/23550.zip »: Permission denied
我也尝试了setgid
该用户的目录,但它也因相同的Permission denied
, 和 to失败adduser www-data ftpusers
,但它仍然因相同的错误而失败。
我不得不承认我迷失了;我一直认为拥有文件的组的权限与所有者的权限相同,但是这个问题与此相矛盾,我不认为Linux内核中可能存在这样的错误,所以我一定错过了什么,但是在哪里,该死!
答案1
由于 amv
正在修改“目标目录”和“来自目录”,因此您需要对要移动的文件以及要移至/移出的目录具有写入权限。
chmod -R g+w /home/autodo/
这将为 /home/autodo 下的所有内容递归添加组的写入权限