【问题标题】:Nodejs File PermissionsNodejs 文件权限
【发布时间】:2012-07-31 07:56:56
【问题描述】:

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

以下是同一目录的节点和 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

【问题讨论】:

  • 不幸的是 tuxfiles.org 现在似乎消失了
  • 刚刚更新了链接。希望这会持续更长时间。
  • 对于rwx 可以做stat.mode & 0o777。如果是您想要的字符串,请执行 (stat.mode & 0o777).toString(8).

标签: file node.js file-permissions


【解决方案1】:
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);

【讨论】:

  • 为什么 Node-FileUtils 不支持组和其他权限
  • 因为每个操作系统对权限的管理方式不同,所以我更喜欢只支持用户权限。
【解决方案2】:

数字格式取决于平台,所以你不能,可靠。

当 NodeJs 开始公开底层的 S_ISDIR 函数和 S_IRUSR 和类似的常量时,您可以。

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

【讨论】:

猜你喜欢
  • 2015-02-15
  • 2011-03-29
  • 1970-01-01
  • 2015-06-02
  • 2014-12-01
  • 2012-08-06
  • 2011-04-21
相关资源
最近更新 更多