/procでファイルのGIDを変更する方法は?

/procでファイルのGIDを変更する方法は?

これがどのように発生したかはわかりませんが、私の/procディレクトリにあるすべてのファイル(/ proc / uptimeなどのプロセスに関連していないファイルを含む)のグループIDは、ルートではなく1001に設定されています。これは現在削除されている代替ユーザーアカウントのIDなので、コマンドはGID 1001をUNKNOWNとして一覧表示しますstat

chownまたはchgrp(下)を使ってsudorootに変更することはできません。再起動後もGIDはまだ1001に設定されています。

ベストアンサー1

/procこれは実際のファイルシステムではありませんが、ファイルシステムを操作するときによく知られているCLIツールを使用してデータ構造を操作または読み取ることができるLinuxカーネルのデータ構造を公開する擬似ファイルシステムです。例えば。cat、、echoなど。

このユーザーのUID / GIDを変更したため、変更する前にこれらのプロセスがそのユーザーとして実行されている可能性があります。システムを再起動すると、実際には/procシステムで実行されているアクティブプロセスなので消えます。

はい

ユーザーから始めましょう。

$ getent passwd user1
user1:x:1001:1001::/home/user1:/bin/bash

次に、サンプルプロセスを実行してください。

$ su -c "sleep 1000" user1 &
[1] 1677

プロセスに注意してください。

$ ps auxf | grep [s]leep
root      1676  0.0  0.2 195956  2424 pts/1    S    22:59   0:00                      \_ su -c sleep 1000 user1
user1     1677  0.0  0.0 107948   348 ?        Ss   22:59   0:00                      |   \_ sleep 1000

user1これで、ファイル内のアイテムをコメントアウトすると、/etc/passwd同じシナリオが表示されます。

$ find /proc/1677 -ls | head
258536    0 dr-xr-xr-x   9 1001     user1           0 Jul 16 22:59 /proc/1677
272483    0 dr-xr-xr-x   3 1001     user1           0 Jul 16 23:01 /proc/1677/task
272527    0 dr-xr-xr-x   6 1001     user1           0 Jul 16 23:01 /proc/1677/task/1677
272528    0 dr-x------   2 1001     user1           0 Jul 16 23:01 /proc/1677/task/1677/fd
272570    0 lrwx------   1 1001     user1          64 Jul 16 23:01 /proc/1677/task/1677/fd/0 -> /dev/pts/1
272571    0 lrwx------   1 1001     user1          64 Jul 16 23:01 /proc/1677/task/1677/fd/1 -> /dev/pts/1
272572    0 lrwx------   1 1001     user1          64 Jul 16 23:01 /proc/1677/task/1677/fd/2 -> /dev/pts/1
272529    0 dr-x------   2 1001     user1           0 Jul 16 23:01 /proc/1677/task/1677/fdinfo
272573    0 -r--------   1 1001     user1           0 Jul 16 23:01 /proc/1677/task/1677/fdinfo/0
272574    0 -r--------   1 1001     user1           0 Jul 16 23:01 /proc/1677/task/1677/fdinfo/1

このファイルは実際のファイルではなく、Linuxカーネルの内部ファイルなので、変更できません。

$ sudo chown user2 /proc/1677/task/1677/fdinfo/1

これは何の効果もありません。

$ ll /proc/1677/task/1677/fdinfo/1
-r-------- 1 1001 user1 0 Jul 16 23:01 /proc/1677/task/1677/fdinfo/1

メモ:同じ問題/etc/passwd/etc/groupファイルにも当てはまります。上記を強調するために、ユーザーとUIDのシナリオを使用しただけです。グループやGIDも同様です。

ところで、コメントを外すとuser1全てが/etc/passwd正常に戻ります。

$ ll /proc/1677/task/1677/fdinfo/1
-r-------- 1 user1 user1 0 Jul 16 23:01 /proc/1677/task/1677/fdinfo/1

おすすめ記事