Permissão herdar estranho no centos linux

1

Sistema : lançamento do CentOS 6.4 (Final)

Problema : no mesmo sistema tem mesmo umask: 022 mas na pasta /B/test/2018 tem estranho problema de herança ao criar pasta e mover arquivo

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

Fluxo em funcionamento :

  • Tomcat é executado como 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
    
  • Webapps movem o arquivo da pasta /A/test/2018 para /B/test/2018

Montagem de armazenamento no sistema :

[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

Parent folder same permission :

[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

Pasta criada na pasta pai, e o arquivo movido tem permissão diferente, embora tenha a mesma 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
    
por DatH 20.01.2018 / 07:53

1 resposta

0

umask e a ACL padrão (não presente no seu caso) afetam apenas os objetos recém-criados. Ou seja para arquivos regulares, algum processo deve executar open() (ou mkdir() para diretórios.

As permissões são determinadas no momento da criação (dos parâmetros open() , umask e talvez ACLs padrão) e armazenadas no inode.

Se um arquivo é apenas movido (dentro de um sistema de arquivos), então rename() é chamado e este syscall não afeta o inode, apenas onde a hierarquia do sistema de arquivos é mostrada.

    
por 20.01.2018 / 10:44