/proc
— это не живая файловая система, а скорее псевдофайловая система, которая предоставляет структуры данных внутри ядра Linux, где вы можете либо манипулировать ими, либо считывать их с помощью инструментов CLI, которые кажутся более привычными при работе с файловыми системами. Например. 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