CentOS Linuxでは、権限の継承が奇妙です。

CentOS Linuxでは、権限の継承が奇妙です。

システム:CentOSバージョン6.4(最終バージョン)

質問:同じシステムに同じumask:022がありますが、/B/test/2018フォルダを作成してその中でファイルを移動するときに奇妙な継承の問題があります。

test@CMS-OPER-01 ~]$ umask 
0022

プロセスタスク:

  • Tomcatはrootとして実行されます。

    [test@CMS-OPER-01 ~]$ ps aux | grep tomcat
    root 15633 2.1 3.4 14387604 1118180 ? Sl 2017 2848:00 /usr/java/default/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XX:PermSize=256m -XX:MaxPermSize=256m -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
    
  • /A/test/2018Webアプリケーションはフォルダから別のフォルダにファイルを移動します。/B/test/2018

システムのストレージマウント:

[test@OPER-01 201801]$
1.1.1.10:/hnas1-data01
                      200T  176T   25T  88% /A
1.1.1.11:/hnas1-data02
                      200T   72T  129T  36% /B

親フォルダと同じ権限:

[test@OPER-01 -]$ getfacl /A/test/201801
getfacl: Removing leading '/' from absolute path names
# file: A/test/201801
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

[test@OPER-01 -]$ getfacl /B/test/201801
getfacl: Removing leading '/' from absolute path names
# file: B/test/201801
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

親フォルダにフォルダを作成すると、移動されたファイルは同じumaskにもかかわらず異なる権限を持ちます022:

[test@OPER-01 -]$ getfacl /A/test/201801/*
# file: A/test/201801/197275
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

[test@OPER-01 -]$ getfacl /B/test/201801/*
# file: B/test/201801/197258
# owner: root
# group: root
user::rwx
group::r-x
other::--x

答え1

umaskとデフォルトのACL(あなたの場合は存在しません)は、新しく作成されたオブジェクトにのみ影響します。つまり、通常のファイルの場合は特定のプロセスを実行する必要がありますopen()(またはmkdir()ディレクトリの場合)。

権限は、生成時に(open()パラメータ、umask、およびデフォルトのACLに基づいて)決定され、inodeに保存されます。

ファイルが移動されたばかりで (ファイルシステム内で)、このシステムコールがrename()inode にまったく影響を与えず、ファイルシステム階層に表示されている場所にのみ影響を与える場合に呼び出されます。

関連情報