21

ノードでは、fs.statメソッドはfs.Statsオブジェクトの権利を返し、プロパティを通じてファイルのアクセス許可を取得できfs.Stats.modeます。

これは、同じディレクトリに対するノードとシェルの両方からの実際の出力です。

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パーミッションを取得するために番号を解析する方法を知る必要があります。

答え

数値は 8 進数で、10 進数に変換すると次のようになります。

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

そして、8 進数から 10 進数への変換は次のようになります。

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

Linux のファイル許可に関する優れたチュートリアル - https://www.linux.com/learn/understanding-linux-file-permissions

4

2 に答える 2

22
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);
于 2012-08-02T16:00:32.443 に答える
1

数値形式はプラットフォームに依存するため、確実に行うことはできません。

NodeJsが基礎となるS_ISDIR関数S_IRUSRや同様の定数の公開を開始すると、次のことが可能になります。

統計形式に関する情報:http://linux.die.net/man/2/stat

于 2012-08-02T11:33:14.023 に答える