• 修改文件的所有者失败(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

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

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

  • 相关阅读:
    App架构师实践指南四之性能优化一
    App架构师实践指南三之基础组件
    App架构师实践指南二之App开发工具
    App架构师实践指南一之App基础语法
    Linux下阅读MHT文件
    What Is Docker & Docker Container ? A Deep Dive Into Docker !
    Difference between Docker Image and Container?
    RabbitMQ .NET/C# Client API Guide
    How RabbitMQ Works and RabbitMQ Core Concepts
    Message Queue vs Message Bus — what are the differences?
  • 原文地址:https://www.cnblogs.com/gxkB/p/7794969.html
Copyright © 2020-2023  润新知