【问题标题】:linux permissions issue when triyng to run nodejs script尝试运行nodejs脚本时的linux权限问题
【发布时间】:2015-11-10 19:04:57
【问题描述】:

我在/var/lib/tomcat7/webapps/ROOT/DataMining/文件夹中有以下文件:

drwxr-xr-x 6 al al 4096 Nov 10 20:53 ./
drwxr-xr-x 4 al al 4096 Nov 10 09:36 ../
-rw-r--r-- 1 al al  163 Nov 10 20:53 1447181583
drwxr-xr-x 3 al al 4096 Nov 10 10:48 html/
drwxr-xr-x 3 al al 4096 Nov  9 23:15 node.js/
-rw-r--r-- 1 al al  144 Nov 10 20:53 query
drwxr-xr-x 3 al al 4096 Nov 10 20:27 source/
drwxrwxr-x 3 al al 4096 Nov 10 20:53 target/

在 node.js 里面我有这个文件:

-rw-rw-rw- 1 al al  526 Jul 20  2014 config.html
-rw-rw-r-- 1 al al   19 Jul 20  2014 end.html
drwxr-xr-x 8 al al 4096 Nov  9 19:23 node_modules/
-rwxrwxrwx 1 al al 1160 Jul 20  2014 script.sh*
-rw-rw-r-- 1 al al 2889 Nov  9 23:08 server.js
-rw-rw-r-- 1 al al  676 Aug 30  2014 start.html

文件server.js 使服务器侦听端口9080,然后处理来自config.html 的输入并运行script.sh

config.html 的内容是这样的:

<form action="http://localhost:9080/config" method="post">
    <input type="text" name="data">
    <input type="submit" id="button" value="config"></input>
</form>

但由于某种原因,在开始运行服务器后,当我提交数据时,我得到它询问我的 root 密码,并且在我输入它之后它再次询问。我的用户名是al,我怎样才能让server.s 在不询问我密码的情况下完成它的工作?

这是server.js的相关内容:

app.post('/config', function (req, res) {
    var source = req.body.data;
    var script = '/home/al/Projects/DataMining/node.js/script.sh ' + source;
    exec(script);
    addCronTab(script);
    //readFile - respon file that read..
    res.end('success');
});

app.get('/select', function (req, res) {
  selectQuery(req,function (err, guides) {
  var text = fs.readFileSync('/home/al/Projects/DataMining/node.js/start.html', 'utf8');
    if (!err && guides) {     
      text += guides;   
    } else {
      text += "NO DATA FOUND";
    }
      text += fs.readFileSync('/home/al/Projects/DataMining/node.js/end.html', 'utf8');
      res.end(text);
  });
});

【问题讨论】:

    标签: linux node.js permissions


    【解决方案1】:

    node.js 服务器应该以 al 而不是 Tomcat 用户身份运行。

    应该使用类似于 crontab -e 的方式在不使用 sudo 的情况下更新用户特定的 crontab,除了从 node.js 服务器获取您的 cron 条目。

    允许网络服务器以 root 身份运行任意用户提供的命令是极其危险的,并可能导致系统受损。

    【讨论】:

      猜你喜欢
      • 2012-04-29
      • 1970-01-01
      • 2021-06-09
      • 2019-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多