Nodejs文件权限

在Node中, fs.stat方法返回一个fs.Stats对象,我可以通过fs.Stats.mode属性获得文件权限

以下是来自节点和shell的相同目录的实际输出:

 node shell 17407 d rwx rwx rwt 16877 d rwx rx rx 16749 d rx rx rx 16832 d rwx --- --- 

我需要知道如何parsingfs.Stats.mode编号才能获得权限。

回答

该数字是在八进制数字系统中,在转换为十进制后,如下所示:

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

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

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

在Linux中的文件权限大教程 – https://www.linux.com/learn/understanding-linux-file-permissions

       

网上收集的解决方案 "Nodejs文件权限"

 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); 

数字格式是平台依赖的,所以你不能,可靠地。

当NodeJs开始暴露底层的S_ISDIR函数和S_IRUSR以及类似的常量时,你可以。

有关统计格式的一些信息: http : //linux.die.net/man/2/stat