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