如何获取Shell脚本来更改文件权限



我有一个网页,用户可以在其中上传文件。上传后,网页调用shell脚本将上传的文件移动到另一个位置。我确信";mv";由于权限问题,命令失败了,但我不确定如何克服这个问题。

第一件事。我的网页运行在Ubuntu 16.04服务器和Apache2 2.4.41上。当用户上传文件时,该文件将保存在服务器上的目录/var/www/html/uploads:中

me@myServer:/var/www/html/uploads$ ls -l
total 44
-rw-r--r-- 1 www-data www-data   761 Feb 21 15:38 UsersUploadedFile.txt
me@myServer:/var/www/html/uploads$

我注意到该文件由用户www-data所有。

一旦上传了文件,网页就会调用这个shell脚本将文件移动到另一个目录:

#!/bin/bash
echo "Attempting to move the uploaded file..."
{
mv /var/www/html/uploads/UsersUploadedFile.txt  /home/me/UsersUploadedFile.txt
} || {
echo "Gah, failed to move the file!"
}

当文件上传时,你可以在我的网页上看到:

Attempting to move the uploaded file...
Gah, failed to move the file!

因此;mv";命令失败。

我的第一直觉是这是一个权限问题。正如我前面提到的,要移动的文件由用户www-data所有。shell脚本也是:

me@myServer:/var/www/html$ ls -l
total 36
-rwxr-xr-x 1 www-data www-data  593 Feb 21 15:53 moveTheFile.sh
me@myServer:/var/www/html$

但是,我想移动文件的目录由用户me所有,由于其他脚本原因,我无法更改该目录。

我想我想做的是让shell脚本将UsersUploadedFile.txt的所有权更改为用户me,然后移动文件。但是,如果在shell脚本中插入chown命令,该命令也会失败。

看起来用户www数据正在运行apache2服务,因此也在运行shell脚本。。。?我不确定。

me@myServer:/var/www/html$ ps -ef | grep apache
root      14931      1  0 13:00 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  14934  14931  0 13:00 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  14935  14931  0 13:00 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  14936  14931  0 13:00 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  14937  14931  0 13:00 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  14938  14931  0 13:00 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  14942  14931  0 13:00 ?        00:00:00 /usr/sbin/apache2 -k start
ph9821    15165  14831  0 16:03 pts/2    00:00:00 grep --color=auto apache
me@myServer:/var/www/html$

那么我在这里可能做错了什么?如何获取shell脚本来更改文件权限?我想这才是我在这里真正需要做的。非常感谢。

这是一个权限问题。用户www数据无法在主目录中写入文件。

假设您的主目录由用户"所有;我"并且组";"我";,您必须设置主目录的权限,这样您的组才能写入(应该已经写入了(。然后在该组中添加用户www数据。

重要提示

如果您将权限777放在主目录上,则系统上的每个用户都可以写入该目录!你应该输入775或770。只有你和你的团队才能写作(根据你的要求,也可以阅读(。如果这是你自己的机器,这并不重要,如果这是一台有很多用户的机器,则至关重要。

记住权限是:用户组其他人。777是3人的rwx。这可能很危险。

相关内容

  • 没有找到相关文章