linux (CentOS) でファイル・ディレクトリ作成の際のデフォルトのパーミッションは指定できる?


たとえば、セキュアに扱いたいユーザーで、そのユーザーで何も考えずに作成したファイルはすべて自分だけがアクセス可能になっていて欲しいと考えたとします。
(ファイルは 600, ディレクトリは 700 が妥当だと考えているとします)

しかし、たとえば touch したりリダイレクトしたりした際のパーミッションは普通 644 や 755 などになっていると思っています。

# 質問

CentOS において、ユーザーに対して、作成されるファイルのデフォルトのファイルパーミッションは、指定できますか?




**回答**  
`umask`でデフォルトのパーミッションを設定できますが、  
デフォルトＡＣＬが設定されていると`umask`よりも優先されます。  
ＡＣＬの設定は`setfacl`、確認は`getfacl`で行います。

**実行例**

* * *

**デフォルトＡＣＬを設定していない場合**  
`umask`が有効です。

[code]

    $ mkdir dir
    $ getfacl dir
    # file: dir
    # owner: XXXX
    # group: XXXX
    user::rwx
    group::rwx
    other::r-x
    
    $ umask
    0002
    $ touch dir/f1
    $ ls -l  dir/f1
    -rw-rw-r-- 1 XXXX XXXX 0  6月  2 17:56 2020 dir/f1
    
[/code]

**デフォルトＡＣＬを設定した場合(rw不許可)**

`umask`が有効になっていません。

[code]

    $ setfacl -d -m o::0 dir
    $ getfacl dir
    # file: dir
    # owner: XXXX
    # group: XXXX
    user::rwx
    group::rwx
    other::r-x
    default:user::rwx
    default:group::rwx
    default:other::---
    
    $ touch dir/f2
    $ ls -l dir/f2
    -rw-rw---- 1 XXXX XXXX 0  6月  2 17:58 2020 dir/f2
    
[/code]

**デフォルトＡＣＬを設定した場合(rw許可)**  
`umask`が有効になっていません。

[code]

    $ setfacl -d -m o::6 dir
    $ getfacl dir
    # file: dir
    # owner: XXXX
    # group: XXXX
    user::rwx
    group::rwx
    other::r-x
    default:user::rwx
    default:group::rwx
    default:other::rw-
    
    $ touch dir/f3
    $ ls -l dir/f3
    -rw-rw-rw- 1 XXXX XXXX 0  6月  2 17:58 2020 dir/f3
    
[/code]




**回答**  
`umask`でデフォルトのパーミッションを設定できますが、  
デフォルトＡＣＬが設定されていると`umask`よりも優先されます。  
ＡＣＬの設定は`setfacl`、確認は`getfacl`で行います。

**実行例**

* * *

**デフォルトＡＣＬを設定していない場合**  
`umask`が有効です。

[code]

    $ mkdir dir
    $ getfacl dir
    # file: dir
    # owner: XXXX
    # group: XXXX
    user::rwx
    group::rwx
    other::r-x
    
    $ umask
    0002
    $ touch dir/f1
    $ ls -l  dir/f1
    -rw-rw-r-- 1 XXXX XXXX 0  6月  2 17:56 2020 dir/f1
    
[/code]

**デフォルトＡＣＬを設定した場合(rw不許可)**

`umask`が有効になっていません。

[code]

    $ setfacl -d -m o::0 dir
    $ getfacl dir
    # file: dir
    # owner: XXXX
    # group: XXXX
    user::rwx
    group::rwx
    other::r-x
    default:user::rwx
    default:group::rwx
    default:other::---
    
    $ touch dir/f2
    $ ls -l dir/f2
    -rw-rw---- 1 XXXX XXXX 0  6月  2 17:58 2020 dir/f2
    
[/code]

**デフォルトＡＣＬを設定した場合(rw許可)**  
`umask`が有効になっていません。

[code]

    $ setfacl -d -m o::6 dir
    $ getfacl dir
    # file: dir
    # owner: XXXX
    # group: XXXX
    user::rwx
    group::rwx
    other::r-x
    default:user::rwx
    default:group::rwx
    default:other::rw-
    
    $ touch dir/f3
    $ ls -l dir/f3
    -rw-rw-rw- 1 XXXX XXXX 0  6月  2 17:58 2020 dir/f3
    
[/code]

