Como corrigir GID de arquivos em / proc?

2

Não sei como isso aconteceu, mas os IDs de grupo de todos os arquivos no diretório /proc (incluindo arquivos não relacionados ao processo, como / proc / uptime) são definidos como 1001 em vez de raiz. Esse era o ID de uma conta de usuário sobressalente que foi excluída agora e, portanto, o GID 1001 agora está listado como UNKNOWN pelo comando stat .

Não é possível alterá-los para o root usando chown ou chgrp (em sudo ). Mesmo depois de uma reinicialização, os GIDs ainda estão configurados para 1001.

    
por Ben 17.07.2018 / 04:17

1 resposta

3

/proc não é um sistema de arquivos ao vivo, mas é um pseudo sistema de arquivos que expõe estruturas de dados dentro do kernel Linux onde você pode manipulá-las ou lê-las usando as ferramentas CLI que parecem mais familiares quando lidam com sistemas de arquivos. Por exemplo. cat , echo , etc.

Como você alterou o UID / GID deste usuário, é provável que esses processos estejam em execução como esse usuário, antes de você fazer essa alteração. Eu simplesmente reiniciei o sistema e eles devem desaparecer, já que eles estão realmente apenas em /proc como processos ativos em execução no seu sistema.

Exemplo

Vamos começar com um usuário:

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

Agora, execute nosso processo de exemplo:

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

Observe o processo:

$ 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

Agora, se comentarmos a entrada user1 em nosso arquivo /etc/passwd , teremos o mesmo cenário:

$ 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

Não podemos alterar esses arquivos, porque eles não são arquivos reais, eles são internos ao kernel do Linux.

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

Aviso, nenhum efeito:

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

NOTA: O mesmo problema se aplica aos arquivos /etc/passwd e /etc/group . Estou apenas destacando as coisas acima usando o usuário & Cenário UID, o mesmo vale para o grupo & GID.

Por acaso, se eu descomentar o meu user1 em /etc/passwd as coisas voltam ao normal:

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