web-dev-qa-db-ja.com

Midnight Commanderでchmodが5桁になっているのはなぜですか?

ファイルメニューでchmodに移動すると、フォルダ/ファイルのchmod値が返されます。

私は最後の3桁を理解し、2番目はsetuid/setgid/stickyビットです(ドキュメントを読んだことがありますが、その使用法は私にはそれほど明確ではありません)...そして最初の桁はfile /用だと思いますフォルダーと他に何?フォルダの場合のように、数字は4です。ファイル0の場合... 2と6はどうですか?シンボリックリンクに個別のchmodの最初の桁の値がないことを確認しました。

4
obeliksz

chmodは、ご存じのとおり、「変更モード」の略です。ここでの「モード」とは、iノードのst_modeフィールドを指します。 stat(2)statfstat、およびlstatシステムコールのマニュアルページが表示されます st_mode 最大7桁の値。抜粋は次のとおりです。

   S_IFSOCK   0140000   socket
   S_IFLNK    0120000   symbolic link
   S_IFREG    0100000   regular file
   S_IFBLK    0060000   block device
   S_IFDIR    0040000   directory
   S_IFCHR    0020000   character device
   S_IFIFO    0010000   FIFO

OK、最初の桁は常にゼロで、数値が8進数であることを示します。それは無視できます。 MCは2番目のものも無視しているようです。したがって、通常のファイルの3番目(右から5番目)の桁は0であり、ディレクトリの桁数は4であることがわかります。2と6は、それぞれ文字デバイスとブロックデバイスです。これらは/devでのみ表示されます。名前付きパイプは1、ファイルシステムソケットは4である必要があります。シンボリックリンクが0として表示されている場合、それは奇妙です。 2を表示するのは混乱しすぎると誰かが思ったのかもしれません。

2
Scott