24時間365日フルマネージドホスティングサービスのデイーネット

「AWS」導入無料キャンペーン!!絶賛受付中

複数ユーザの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が変更された場合はそのユーザのホームディレクトリ配下にあってユーザ所有物のディレクトリ等にしか影響がない

ことが分かりました。

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

では、今回はこの辺で。

  • このページの先頭へ

  • 東京本社
    〒105-0001東京都港区虎ノ門2-3-22 第一秋山ビル5F
    TEL:03-3591-8887 FAX:03-3591-8886
  • 大阪本社
    〒541-0041 大阪市中央区北浜2-6-11北浜エクセルビル5F
    TEL:06-6231-8887 FAX:06-6231-8897

  • 認証範囲はこちらをご覧ください。

Denet logo

クラウドサービス・データセンタ・高機能専有サーバ・共有サーバホスティングサービス 株式会社ディーネット
dot_bar