Amazon LinuxにRedisをインストールするとファイルの所有者がec2-userになってしまう問題

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年と少しですが、まだまだ知らないことばかりですね。。。

先輩エンジニアは偉大だなと思う反面、自分はまだまだなと改めて感じました。

いろいろな経験をさせてもらえる環境に感謝して、できることを少しずつ増やしていきたいです!

この記事をシェアする
著者:アミ
AWSエンジニア。好きなAWSサービスはAMIです!