AIXで6ビットファイルモードをどのようにデコードしますか?

AIXで6ビットファイルモードをどのようにデコードしますか?

Rubyメソッドによって返されるAIXファイルのファイルモードstatは6ビットです。

ruby -e 'puts File::stat("testfile_upload-003").mode.to_s(8)'
100644

FWIW、Rubyバージョンはruby 2.1.6p336(2015-04-13 revision 50298)[powerpc-aix6.1.0.0]ですが、Perlはまったく同じ値を返します。

perl -e 'use File::stat; printf "%o\n", stat("testfile_upload-003")->mode;'
100644

istat以下は同じファイルの出力です。

# /bin/istat testfile_upload-003
Inode 33780 on device 10/7      File
Protection: rw-r--r--
Owner: 0(root)          Group: 0(system)
Link count:   2         Length 51200 bytes

Last updated:   Thu Mar  9 01:13:24 CST 2017
Last modified:  Wed Mar  8 11:52:52 CST 2017
Last accessed:  Wed Mar  8 11:52:52 CST 2017

編集する:chmod のマニュアルページそしてイスタマニュアルページでは、5番目と6番目の数字に関する情報を提供していません。

そして、ファイルの素晴らしいsetuidビットを設定せずに、次のことを行います。

# ls -l testfile_upload-003
-rw-r--r--    2 root     system        51200 Mar 08 11:52 testfile_upload-003

答え1

以下で見つけました<sys/mode.h>

/*
 *      (stat) st_mode bit values
 */

#define _S_IFMT         0170000         /* type of file */
#define   _S_IFREG      0100000         /*   regular */
#define   _S_IFDIR      0040000         /*   directory */
#define   _S_IFBLK      0060000         /*   block special */
#define   _S_IFCHR      0020000         /*   character special */
#define   _S_IFIFO      0010000         /*   fifo */

先頭に「1」を付けると、通常のファイルを表します。

ディレクトリには240755、「4」はディレクトリを意味し、「2」は「一般ファイルではない」を意味します。

答え2

* NIXシステム(AIXはUNIXですが、Linux、Solaris、およびBSDにもあります)には、16ビットの長いファイル・モード情報があります。特殊ビット(setuid、setgid、t-git、またはSticky)用の3ビット、特権用9ビット(所有者rwx、グループrwx、その他rwx - rwxは読み書き - 実行を意味します)標準は8進表現を可能にします(時々書かれるように、前にゼロがない)。ここで、最初の1つか2つはファイルタイプ、次は特殊ビット、最後の3つは特権です。

はい(2進数3個= 8進数1個):

Binary 1000000111101101 = Octal 100755 (-rwxr-xr-x)
Binary 0100000110100100 = Octal 40644  (drw-r--r--)
Binary 1010000111111111 = Octal 120777 (lrwxrwxrwx)

The previous examples in parts:

Binary 1/000 000 111/101/101 = Octal 10 0 755 = -rwxr-xr-x
Binary 0/100 000 110/100/100 = Octal 4 0 644  = drw-r--r--
Binary 1/010 000 111/111/111 = Octal 12 0 777 = lrwxrwxrwx

ファイルタイプ:

  • 10(-)=一般ファイル
  • 4(d) = 目次
  • 12(l) = シンボリックリンク
  • 1(p)= FIFO(名前付きパイプ)
  • 14(s) = ソケット
  • 2(c)=文字特殊ファイル(例:TTY、例:/ dev / tty1)
  • 6(b)=特殊ファイルのブロック(例:HDD、例:/ dev / sda)
  • 他のシステムには多くのものがあります(例:Solaris D =ドア、P =ポートなど)。

関連情報