【问题标题】:Grant the server the permission of creating a folder授予服务器创建文件夹的权限
【发布时间】:2017-09-05 21:28:13
【问题描述】:

我在 DigitalOcean 上有一个 Ubuntu 服务器,它托管一些网站。我刚刚在我的 Mac 上构建了一个 mean.js 堆栈应用程序,我计划将它部署到生产环境中,从而部署到现有的服务器上。

我跟着this link安装了node.jsmongodb等。然后,我没有克隆mean.js的示例应用程序,而是从github克隆了自己的应用程序:

sudo git clone https://github.com/softtimur/myapp.git /opt/myapp
cd /opt/myapp
sudo mkdir public/tmp/
sudo npm install
npm start

然后,在浏览器中,我输入了https://xxx.xx.xx.xx:3000/#/new。在服务器端,我得到一个错误:

router.post /mkdir
{ Error: EACCES: permission denied, mkdir 'public/tmp/sAlTI6NDo5NQcO-lAAAA/'
    at Error (native)
  errno: -13,
  code: 'EACCES',
  syscall: 'mkdir',
  path: 'public/tmp/sAlTI6NDo5NQcO-lAAAA/' }

这是因为在我的应用程序的后端,它尝试在fs.mkdir(...)public/tmp/ 中创建一个文件夹,其中fs = require('fs')

那么有谁知道如何给服务器这个权限?

PS:我也试过跑

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

但它没有帮助。

【问题讨论】:

    标签: node.js mean-stack file-permissions fs file-access


    【解决方案1】:

    问题是您以 root 身份创建了 public/tmp/

    sudo mkdir public/tmp/
    

    但您以 $USER 身份运行应用程序,很可能不允许写入该目录。

    修复:

    sudo chown -R $USER:$GROUP public/tmp/
    

    【讨论】:

      猜你喜欢
      • 2014-11-29
      • 2019-06-18
      • 2011-09-01
      • 1970-01-01
      • 2017-02-14
      • 2013-01-28
      • 2016-12-28
      • 2015-05-01
      • 1970-01-01
      相关资源
      最近更新 更多