zoukankan      html  css  js  c++  java
  • 修改文件的所有者失败(chown: changing ownership of `uploads': Operation not permitted)

    在项目开发的时候,经常需要将文件上传到指定的目录下。

    例如这次用thinkphp5的时候,需要在public目录下建立uploads目录用于存放上传的资源。

    首先在命令窗口下输入:

    1 mkdir uploads

    当前,前提是当前执行命令的用户需要权限(假设此处有,非root)。

    问题来了,即使你目录创建成功,对于项目来说并不算成功。

    因为项目运行的时候上传文件以及新建目录的时候,可以看出是apache用户。

    apache对该用户创建的目录并没有写入权限啊!

    当然你可以继续输入:

    1 chmod -R 0777

    这样,的确apache是可以访问到了,但是,这样的话,实属下册~~

    因为所有的人都可以来这里随便指点一下,随便来删除一下啊。

    记得当初一个兄弟的遭遇:

    刚进一间公司不久,然后执行了一下删除命令,没想到把该公司的一个项目的

    所有上传的资源全部删掉了~悲催!此处先不讨论做该项目的人的部署问题。

    如果操作得当,大家都可以避免。既然可以在开始就避免,何乐而不为呢!

    然后我就用了当前的用户来执行修改文件夹的所有者,毕竟,如果可以将该

    文件的所有者修改为apache的话,那只有root和apahce可以在该文件下操纵。

    1 chown apache uploads

    然后问题就来了,发现命令执行失败了。

    1 chown: changing ownership of `uploads': Operation not permitted

    刚看到的时候,纠结于一个问题:会不会系统没有apache用户。

    就缺没去创建了~其实细想一下,那之前的项目是怎么上传的,文件的创建者还是apache

    不行的朋友可以去执行一下:

    1 cat /etc/passwd

    就知道了

    然后突然记起,我并不是在root帐号下操作的。

    然后修改了一下命令:

    1 sudo chown apache uploads

    发现可以执行成功。证实猜想成功。这个命令的执行需要一定的权限。

    权限的限制可能来自上级目录或者命令的本身。

  • 相关阅读:
    net core 使用 rabbitmq
    asp.net core WebApi 返回 HttpResponseMessage
    asp.net core 2.1 WebApi 快速入门
    JQuery EasyUI combobox动态添加option
    php截取字符去掉最后一个字符
    JQuery EasyUI Combobox的onChange事件
    对于不返回任何键列信息的 selectcommand 不支持 updatecommand 的动态 sql 生成
    Access2007 操作或事件已被禁用模式阻止解决办法
    Easyui 中 Tabsr的常用方法
    Win 7 IE11不能下载文件,右键另存为也不行
  • 原文地址:https://www.cnblogs.com/gxkB/p/7794969.html
Copyright © 2011-2022 走看看