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