ディレクトリの書き込み権限がない場合の動作を確認してみた。

背景

EFS のマウントポイントはデフォルトの場合、755 root:root となっています。
このマウントポイントの権限について検討する必要があったのですが、他ユーザのディレクトリへの書き込み権限がない状態とは具体的にどのような操作が禁止されているのか直観的に理解できなかったため、実際に検証しました。

結論ファースト

マウントポイント直下では、以下が実行できません。

  1. 他ユーザでのファイル作成はできない
  2. 他ユーザでのディレクトリ作成はできない

ただし、以下の場合ファイル作成が可能です。

  1. ディレクトリ所有ユーザで配下にディレクトリをつくった後にその子ディレクトリの所有者を変更すれば、他ユーザでもファイルを作成できる
  2. ディレクトリ所有ユーザで配下にディレクトリをつくった後にその子ディレクトリのパーミッションを変更すれば、他ユーザでもファイルを作成できる

検証

755のディレクトリがあることを確認。

[root@ip-10-0-3-9 ~]# ls -ld /app-data/
drwxr-xr-x. 2 root root 6144 Jan  1 04:24 /app-data/

1. 他ユーザでのファイル作成

ec2-userでファイルを作成してみる。

[root@ip-10-0-3-9 ~]# cd /app-data/
[root@ip-10-0-3-9 app-data]# sudo su ec2-user
[ec2-user@ip-10-0-3-9 app-data]$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied

2. 他ユーザでのディレクトリ作成

ec2-userでディレクトリを作成してみる。

[ec2-user@ip-10-0-3-9 app-data]$ mkdir test.dir
mkdir: cannot create directory ‘test.dir’: Permission denied

3. 配下にディレクトリを作成して所有者を変更した後、他ユーザでファイルを作成

rootユーザでディレクトリを作成し、所有をec2-userに変更。

[ec2-user@ip-10-0-3-9 app-data]$ sudo su -
Last login: Mon Jan  1 13:12:21 UTC 2024 on pts/0
[root@ip-10-0-3-9 ~]# cd /app-data/
[root@ip-10-0-3-9 app-data]# mkdir test.dir
[root@ip-10-0-3-9 app-data]# chown ec2-user:ec2-user test.dir
[root@ip-10-0-3-9 app-data]# sudo su ec2-user
[ec2-user@ip-10-0-3-9 app-data]$ touch test.dir/hogehoge.txt
[ec2-user@ip-10-0-3-9 app-data]$ ls -lrt ./test.dir/
total 4
-rw-rw-r--. 1 ec2-user ec2-user 0 Jan  1 13:19 hogehoge.txt

4. 配下にディレクトリを作成してパーミッションを変更した後、他ユーザでファイルを作成

rootユーザでディレクトリを作成し、パーミッションを777に変更。

[root@ip-10-0-3-9 app-data]# mkdir test2.dir
[root@ip-10-0-3-9 app-data]# chmod 777 test2.dir
[root@ip-10-0-3-9 app-data]# sudo su ec2-user
[ec2-user@ip-10-0-3-9 app-data]$ touch test2.dir/fugafuga.txt
[ec2-user@ip-10-0-3-9 app-data]$ ls -lrt test2.dir/fugafuga.txt
-rw-rw-r--. 1 ec2-user ec2-user 0 Jan  1 14:04 test2.dir/fugafuga.txt

おわりにかえて

デフォルトではroot以外ファイルもディレクトリも作成できないことが分かりました。
アプリでEFSを利用するなどの要件の場合、デフォルトのままマウントポイント直下にファイルを作成しようとすると問題が発生することが予想されます。

マウントポイント直下に新規でディレクトリを作成するというある種のワークアラウンドを今回検証しましたが、パーミッションを777に変更することはセキュリティ上推奨されませんし、複数のユーザによる書き込みが予想される場合所有を変更するだけでは十分ではないケースも想定されます。

想定されるユースケースについてきちんとヒアリングを行ったうえでマウントポイントに対する権限を検討していく必要がありますね。

Last modified: 2024-01-02

Author