複数ユーザのUIDとGIDを一緒にしてみる

みなさんこんにちは。
最近の朝食が高確率でからあげ君レッドになっている浜田です。
今回は2つのユーザの権限を同じにしてみたらどうなるのかを
紹介したいと思います。

準備 初期状態

まず検証環境の初期状態をお見せいたします。
手順としては、始めにUID:GIDが異なる2つのユーザを準備します。

[root@test-server ~]# cat /etc/passwd
user01:x:10011:10011::/home/user01:/bin/bash
user02:x:10012:10012::/home/user02:/bin/bash
[root@test-server ~]# cat /etc/group
user01:x:10011:
user02:x:10012:

 
ホームディレクトリには両ユーザの共通ディレクトリである /home/tmp を
設置しておきます。
 

[root@test-server ~]# ll /home/
合計 0
drwxrwxrwx 4 root root 30 3月 4 17:44 tmp
drwx------ 6 user01 user01 154 3月 4 17:48 user01
drwx------ 4 user02 user02 112 3月 4 17:41 user02

 
そしてuser01配下とtmp配下に、いくつか権限の違うディレクトリと
ファイルを設置します。

[root@test-server ~]# ll -R /home/user01/
/home/user01/:
合計 0
drwxr-xr-x 2 user01 user01 24 3月 4 17:48 dir01
drwxr-xr-x 2 user02 user02 24 3月 4 17:48 dir02
-rwxr-xr-x 1 denet denet 0 3月 4 17:48 testfile
/home/user01/dir01:
合計 0
-rw-rw-r-- 1 user01 user01 0 3月 4 15:12 hogehoge01
[root@test-server ~]# ll -R /home/user02/
/home/user01/dir02:
合計 0
-rw-rw-r-- 1 user02 user02 0 3月 4 15:12 hogehoge02
[root@test-server ~]# ll -R /home/tmp/
/home/tmp/:
合計 0
drwxr-xr-x 2 user01 user01 24  3月  4 17:46 dirA
drwxr-xr-x 2 user02 user02 24  3月  4 17:46 dirB
/home/tmp/dirA:
合計 0
-rw-rw-r-- 1 user01 user01 0  3月  4 17:46 hogehoge01
/home/tmp/dirB:
合計 0
-rw-rw-r-- 1 user02 user02 0  3月  4 17:46 hogehoge02

では、早速検証を進めましょう。

検証1 2つのユーザのUID:GIDを同じものにする

さて、この状態でusermodコマンドでuser01のUID:GIDをuser02と同じものに
したらどうなるでしょう。
変更するコマンドは以下の通り。

usermod user01 -o -u 10012 -g 10012

本来は既に存在しているUIDは設定できませんが「-oオプション」を
指定する事でUIDの重複を許可することが出来ます。
結果は以下の通り。

[root@test-server ~]# ll -R /home/user01/
/home/user01/:
合計 0
drwxr-xr-x 2 user01 user02 24  3月  4 17:48 dir01
drwxr-xr-x 2 user01 user02 24  3月  4 17:48 dir02
-rwxr-xr-x 1 denet  denet   0  3月  4 17:48 testfile
/home/user01/dir01:
合計 0
-rw-rw-r-- 1 user01 user02 0  3月  4 15:12 hogehoge01
/home/user01/dir02:
合計 0
-rw-rw-r-- 1 user01 user02 0  3月  4 15:12 hogehoge02
[root@test-server ~]# ll -R /home/tmp/
/home/tmp/:
合計 0
drwxr-xr-x 2  10011 user01 24  3月  4 17:46 dirA
drwxr-xr-x 2 user01 user02 24  3月  4 17:46 dirB
/home/tmp/dirA:
合計 0
-rw-rw-r-- 1 10011 user01 0  3月  4 17:46 hogehoge01
/home/tmp/dirB:
合計 0
-rw-rw-r-- 1 user01 user02 0  3月  4 17:46 hogehoge02

注目点としては、user01配下においてtestfileを除いた全ての
ディレクトリとファイルの権限が user01:user02 になっています。
なぜUIDとGIDが異なっているかですが、同じUID:GIDのユーザが存在する場合、
/etc/passwd/etc/group で上にあるものが優先されます。


[root@test-server ~]# cat /etc/passwd
user01:x:10012:10012::/home/user01:/bin/bash
user02:x:10012:10012::/home/user02:/bin/bash
[root@test-server ~]# cat /etc/group
user01:x:10011:
user02:x:10012:

そのため、/etc/passwdの順番を変えるとUIDの表記も変わります。


[root@test-server ~]# cat /etc/passwd
user02:x:10012:10012::/home/user02:/bin/bash
user01:x:10012:10012::/home/user01:/bin/bash
[root@test-server ~]# /home/user01/
/home/user01/dir01:
合計 0
-rw-rw-r-- 1 user02 user02 0  3月  4 15:12 hogehoge01
/home/user01/dir02:
合計 0
-rw-rw-r-- 1 user02 user02 0  3月  4 15:12 hogehoge02

もちろん、/etc/groupの順番を変えた場合はGIDが変化します。

検証2 権限を戻してみる

では、この状態から権限を元に戻してみたらどうなるでしょうか。


[root@test-server ~]# usermod user01 -o -u 10011 -g 10011
[root@test-server ~]# ll -R /home/user01/
/home/user01/:
合計 0
drwxr-xr-x 2 user01 user01 24  3月  4 17:48 dir01
drwxr-xr-x 2 user01 user01 24  3月  4 17:48 dir02
-rwxr-xr-x 1 denet  denet   0  3月  4 17:48 testfile
/home/user01/dir01:
合計 0
-rw-rw-r-- 1 user01 user01 0  3月  4 15:12 hogehoge01
/home/user01/dir02:
合計 0
-rw-rw-r-- 1 user01 user01 0  3月  4 15:12 hogehoge02
[root@test-server ~]# ll -R /home/tmp/
/home/tmp/:
合計 0
drwxr-xr-x 2 user01 user01 24  3月  4 17:46 dirA
drwxr-xr-x 2 user02 user02 24  3月  4 17:46 dirB
/home/tmp/dirA:
合計 0
-rw-rw-r-- 1 user01 user01 0  3月  4 17:46 hogehoge01
/home/tmp/dirB:
合計 0
-rw-rw-r-- 1 user02 user02 0  3月  4 17:46 hogehoge02

user01配下においてtestfileを除いた全ての権限がuser01:user01
なりました。
ユーザのUID:GIDを変更した際に、そのユーザの
ホームディレクトリ配下にある変更前のUID:GIDとなっている
ディレクトリやファイルも全て更新される
ことがわかります。
今回の場合、user01 と user02 のUID:GIDが同じものだったので
元々user02 のものだった dir02 なども変更されたということになります。
testfile については元々からUID:GIDのまったく違う所有者のものなので
変更がまったく有りませんでした。
また、user01配下に比べてtmp配下はまったく変更が有りません。

まとめ

さて、長々と書きましたがまとめとしては、

・GID:UIDの表記は/etc/passwdと/etc/groupの記載順で決まる

・ユーザのGID:UIDが変更された場合はそのユーザのホームディレクトリ配下にあってユーザ所有物のディレクトリ等にしか影響がない

ことが分かりました。
権限関連はいろいろややこしい部分も多く些細な変更でも大きな影響を
与える場合が有りますので、今後もいろいろいじってみて、その変更で
どのような影響が起きる可能性があるか推測できるようになりたいですね。
では、今回はこの辺で。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA