Amazon LinuxにRedisをインストールするとファイルの所有者がec2-userになってしまう問題
目次
はじめに
こんにちは!スカイアーチHRソリューションズのアミです!
redis-cliを使用するためにEC2(Amazon Linux)にRedisをインストールしたところ、なぜか作成されたフォルダやファイルの所有者がすべてec2-userになってしまいました。
ssm-userやrootでインストールしなおしたり、インストール先のディレクトリを変えてみても変わらず。
原因が分からず気になっていたところを、OSに詳しい先輩エンジニアに教えていただいて勉強になったため、今回記事にしました。
先に結論
Redisはデフォルトの所有者がユーザー、グループ共に「1000」になっているからです。
sh-5.2$ cd redis-stable
sh-5.2$ ls -l
total 280
-rw-rw-r--. 1 1000 1000 20938 Jan 9 11:51 00-RELEASENOTES
-rw-rw-r--. 1 1000 1000 51 Jan 9 11:51 BUGS
-rw-rw-r--. 1 1000 1000 5027 Jan 9 11:51 CODE_OF_CONDUCT.md
-rw-rw-r--. 1 1000 1000 2634 Jan 9 11:51 CONTRIBUTING.md
-rw-rw-r--. 1 1000 1000 1487 Jan 9 11:51 COPYING
-rw-rw-r--. 1 1000 1000 11 Jan 9 11:51 INSTALL
-rw-rw-r--. 1 1000 1000 6888 Jan 9 11:51 MANIFESTO
-rw-rw-r--. 1 1000 1000 151 Jan 9 11:51 Makefile
-rw-rw-r--. 1 1000 1000 22607 Jan 9 11:51 README.md
-rw-rw-r--. 1 1000 1000 1695 Jan 9 11:51 SECURITY.md
-rw-rw-r--. 1 1000 1000 3628 Jan 9 11:51 TLS.md
drwxrwxr-x. 8 1000 1000 133 Jan 9 11:51 deps
-rw-rw-r--. 1 1000 1000 107512 Jan 9 11:51 redis.conf
-rwxrwxr-x. 1 1000 1000 279 Jan 9 11:51 runtest
-rwxrwxr-x. 1 1000 1000 283 Jan 9 11:51 runtest-cluster
-rwxrwxr-x. 1 1000 1000 1772 Jan 9 11:51 runtest-moduleapi
-rwxrwxr-x. 1 1000 1000 285 Jan 9 11:51 runtest-sentinel
-rw-rw-r--. 1 1000 1000 14700 Jan 9 11:51 sentinel.conf
drwxrwxr-x. 4 1000 1000 16384 Jan 9 11:51 src
drwxrwxr-x. 11 1000 1000 16384 Jan 9 11:51 tests
drwxrwxr-x. 9 1000 1000 16384 Jan 9 11:51 utils
インストールしたOS内にuid/gidが「1000」のユーザ/グループがいると、そのユーザー/グループが所有者に紐づくのですが、Amazon Linuxの場合ec2-userのuid/gidががまさに1000なので、所有者がすべてec2-userになるという状況が発生します。
sh-4.2$ id ec2-user
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal)
詳細
実際にいろいろいじって中身を見てみましょう~!
環境
OS : Amazon Linux2023
Redis : 5.0.14(2024/1/28時点の最新の安定バージョン)
※Redisはクライアントだけでなくまるっといれちゃいます
一旦普通にインストールしてみる
AWSの公式ドキュメントを参考にインストールします。
ドキュメントに記載の通り、redis-cli を使うには、GNU Compiler Collection (gcc)が必要なのですが、今回はRedisのインストールだけできれば良いので割愛しちゃいます。
/opt配下にダウンロード、解凍します。
sh-5.2$ pwd
/opt
sh-5.2$ sudo wget http://download.redis.io/redis-stable.tar.gz
sh-5.2$ sudo tar xvzf redis-stable.tar.gz
インストールされた中身を確認すると、所有者がec2-userとなっていました!!
sh-5.2$ cd redis-stable
sh-5.2$ ls -l
total 280
-rw-rw-r--. 1 ec2-user ec2-user 20938 Jan 9 11:51 00-RELEASENOTES
-rw-rw-r--. 1 ec2-user ec2-user 51 Jan 9 11:51 BUGS
-rw-rw-r--. 1 ec2-user ec2-user 5027 Jan 9 11:51 CODE_OF_CONDUCT.md
-rw-rw-r--. 1 ec2-user ec2-user 2634 Jan 9 11:51 CONTRIBUTING.md
-rw-rw-r--. 1 ec2-user ec2-user 1487 Jan 9 11:51 COPYING
-rw-rw-r--. 1 ec2-user ec2-user 11 Jan 9 11:51 INSTALL
-rw-rw-r--. 1 ec2-user ec2-user 6888 Jan 9 11:51 MANIFESTO
-rw-rw-r--. 1 ec2-user ec2-user 151 Jan 9 11:51 Makefile
-rw-rw-r--. 1 ec2-user ec2-user 22607 Jan 9 11:51 README.md
-rw-rw-r--. 1 ec2-user ec2-user 1695 Jan 9 11:51 SECURITY.md
-rw-rw-r--. 1 ec2-user ec2-user 3628 Jan 9 11:51 TLS.md
drwxrwxr-x. 8 ec2-user ec2-user 133 Jan 9 11:51 deps
-rw-rw-r--. 1 ec2-user ec2-user 107512 Jan 9 11:51 redis.conf
-rwxrwxr-x. 1 ec2-user ec2-user 279 Jan 9 11:51 runtest
-rwxrwxr-x. 1 ec2-user ec2-user 283 Jan 9 11:51 runtest-cluster
-rwxrwxr-x. 1 ec2-user ec2-user 1772 Jan 9 11:51 runtest-moduleapi
-rwxrwxr-x. 1 ec2-user ec2-user 285 Jan 9 11:51 runtest-sentinel
-rw-rw-r--. 1 ec2-user ec2-user 14700 Jan 9 11:51 sentinel.conf
drwxrwxr-x. 4 ec2-user ec2-user 16384 Jan 9 11:51 src
drwxrwxr-x. 11 ec2-user ec2-user 16384 Jan 9 11:51 tests
drwxrwxr-x. 9 ec2-user ec2-user 16384 Jan 9 11:51 utils
ec2-userのidを変えてみる
このままec2-userのidを変えてみます。
sh-5.2$ sudo groupmod -g 2024 ec2-user
sh-5.2$ sudo usermod -u 2024 ec2-user
各フォルダ、ファイルの所有者がec2-userから1000になりました!!
sh-5.2$ pwd
/opt/redis-stable
sh-5.2$ ls -l
total 280
-rw-rw-r--. 1 1000 1000 20938 Jan 9 11:51 00-RELEASENOTES
-rw-rw-r--. 1 1000 1000 51 Jan 9 11:51 BUGS
-rw-rw-r--. 1 1000 1000 5027 Jan 9 11:51 CODE_OF_CONDUCT.md
-rw-rw-r--. 1 1000 1000 2634 Jan 9 11:51 CONTRIBUTING.md
-rw-rw-r--. 1 1000 1000 1487 Jan 9 11:51 COPYING
-rw-rw-r--. 1 1000 1000 11 Jan 9 11:51 INSTALL
-rw-rw-r--. 1 1000 1000 6888 Jan 9 11:51 MANIFESTO
-rw-rw-r--. 1 1000 1000 151 Jan 9 11:51 Makefile
-rw-rw-r--. 1 1000 1000 22607 Jan 9 11:51 README.md
-rw-rw-r--. 1 1000 1000 1695 Jan 9 11:51 SECURITY.md
-rw-rw-r--. 1 1000 1000 3628 Jan 9 11:51 TLS.md
drwxrwxr-x. 8 1000 1000 133 Jan 9 11:51 deps
-rw-rw-r--. 1 1000 1000 107512 Jan 9 11:51 redis.conf
-rwxrwxr-x. 1 1000 1000 279 Jan 9 11:51 runtest
-rwxrwxr-x. 1 1000 1000 283 Jan 9 11:51 runtest-cluster
-rwxrwxr-x. 1 1000 1000 1772 Jan 9 11:51 runtest-moduleapi
-rwxrwxr-x. 1 1000 1000 285 Jan 9 11:51 runtest-sentinel
-rw-rw-r--. 1 1000 1000 14700 Jan 9 11:51 sentinel.conf
drwxrwxr-x. 4 1000 1000 16384 Jan 9 11:51 src
drwxrwxr-x. 11 1000 1000 16384 Jan 9 11:51 tests
drwxrwxr-x. 9 1000 1000 16384 Jan 9 11:51 utils
idが1000の別のユーザー/グループを作成してみる
今度はidが1000のユーザー/グループを作成してみます。
sh-5.2$ sudo useradd -N redis-user -u 1000
sh-5.2$ sudo groupadd redis-group -g 1000
もう一度確認すると、idが1000のユーザー/グループがそれぞれ反映されました!!
sh-5.2$ pwd
/opt/redis-stable
sh-5.2$ ls -l
total 280
-rw-rw-r--. 1 redis-user redis-group 20938 Jan 9 11:51 00-RELEASENOTES
-rw-rw-r--. 1 redis-user redis-group 51 Jan 9 11:51 BUGS
-rw-rw-r--. 1 redis-user redis-group 5027 Jan 9 11:51 CODE_OF_CONDUCT.md
-rw-rw-r--. 1 redis-user redis-group 2634 Jan 9 11:51 CONTRIBUTING.md
-rw-rw-r--. 1 redis-user redis-group 1487 Jan 9 11:51 COPYING
-rw-rw-r--. 1 redis-user redis-group 11 Jan 9 11:51 INSTALL
-rw-rw-r--. 1 redis-user redis-group 6888 Jan 9 11:51 MANIFESTO
-rw-rw-r--. 1 redis-user redis-group 151 Jan 9 11:51 Makefile
-rw-rw-r--. 1 redis-user redis-group 22607 Jan 9 11:51 README.md
-rw-rw-r--. 1 redis-user redis-group 1695 Jan 9 11:51 SECURITY.md
-rw-rw-r--. 1 redis-user redis-group 3628 Jan 9 11:51 TLS.md
drwxrwxr-x. 8 redis-user redis-group 133 Jan 9 11:51 deps
-rw-rw-r--. 1 redis-user redis-group 107512 Jan 9 11:51 redis.conf
-rwxrwxr-x. 1 redis-user redis-group 279 Jan 9 11:51 runtest
-rwxrwxr-x. 1 redis-user redis-group 283 Jan 9 11:51 runtest-cluster
-rwxrwxr-x. 1 redis-user redis-group 1772 Jan 9 11:51 runtest-moduleapi
-rwxrwxr-x. 1 redis-user redis-group 285 Jan 9 11:51 runtest-sentinel
-rw-rw-r--. 1 redis-user redis-group 14700 Jan 9 11:51 sentinel.conf
drwxrwxr-x. 4 redis-user redis-group 16384 Jan 9 11:51 src
drwxrwxr-x. 11 redis-user redis-group 16384 Jan 9 11:51 tests
drwxrwxr-x. 9 redis-user redis-group 16384 Jan 9 11:51 utils
おわりに
インフラエンジニアになって1年と少しですが、まだまだ知らないことばかりですね。。。
先輩エンジニアは偉大だなと思う反面、自分はまだまだなと改めて感じました。
いろいろな経験をさせてもらえる環境に感謝して、できることを少しずつ増やしていきたいです!