file - Nodejs 文件权限

标签 file node.js file-permissions

Node中fs.stat方法返回一个fs.Stats对象对,我可以通过fs.Stats.mode 属性。

以下是同一目录的 Node 和 shell 的真实输出:

node  shell
17407 d rwx rwx rwt
16877 d rwx r-x r-x
16749 d r-x r-x r-x
16832 d rwx --- ---

我需要知道如何解析 fs.Stats.mode 数字以获取权限。

回答

数字是八进制数,转换成十进制后是这样的:

17407 41777 d rwx rwx rwt
16877 40755 d rwx r-x r-x
16749 40555 d r-x r-x r-x
16832 40777 d rwx --- ---

而八进制到十进制的转换是这样的:

parseInt(stat.mode.toString(8), 10)

Linux 文件权限的精彩教程 - https://www.linux.com/learn/understanding-linux-file-permissions

最佳答案

var checkPermission = function (file, mask, cb){
    fs.stat (file, function (error, stats){
        if (error){
            cb (error, false);
        }else{
            cb (null, !!(mask & parseInt ((stats.mode & parseInt ("777", 8)).toString (8)[0])));
        }
    });
};

canExecute():

checkPermission (<path>, 1, cb);

canRead():

checkPermission (<path>, 4, cb);

canWrite():

checkPermission (<path>, 2, cb);

关于file - Nodejs 文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11775884/

相关文章:

java - 在java中打开和关闭mp3文件

python - 为什么写入后文件为空?

mysql - 电脑离线时连接nodeJS到MySQL

linux - 用户能够修改 root 拥有的文件。为什么?

delphi - 如何以编程方式检查修改权限?

git - 如何在 git 存储库上正确使用组文件权限?

c - 使用 lseek 函数更改 c 中的文件位置后损坏的文件(大小相同但内容损坏)

file - 非 ANSI 文件的 TStringList 行为

node.js - heroku 中的 Angular2 路由

javascript - Node 使用 ObjectionJS 和 Knex,一对多,从多表中返回第一个相关行