
Passei horas tentando descobrir por que não está dando certo, mas desisto agora, então aqui estou.
Minha configuração/problema: tenho um VPS remoto ao qual me conecto via SSH (chaves pub/priv, sem senha).
O usuário é debian.
Neste VPS, executo um postgres:14.3-alpine
contêiner docker.
Esta janela de encaixe possui dois volumes montados em /home/debian:
postgres-certs
postgres-data
O ID do usuário/grupo do usuário na janela de encaixe é 70. Mais informaçõesaqui:
Como você deve saber, existem regras de segurança em torno dos certificados, portanto, conforme explicado no link acima, defini os direitos 640 para postgres-certs
a pasta:
drw-r----- 2 0 70 4096 jun 7 22:45 postgres-certs
drwxr----- 19 70 1000 4096 jun 11 20:40 postgres-data
Como você pode ver, ambas as pastas têm direitos de leitura em grupo.
por favor encontre meus grupos:
debian@db-dev:~$ id
uid=1000(debian) gid=1000(debian) groups=1000(debian),70(docker-pg-alpine),998(docker)
Como você pode ver, estou nos grupos 70 e 1000, os mesmos definidos nas duas pastas.
Se eu tentar cat um arquivo em uma dessas pastas, eis o que recebo (funciona, é claro, se eu fizer o sudo):
debian@db-dev:~$ cat postgres-certs/server.crt
cat: postgres-certs/server.crt: Permission denied
Só para provar que o arquivo tem as mesmas permissões do diretório dele:
debian@db-dev:~$ sudo ls -ln postgres-certs/server.crt
-rw-r----- 1 0 70 2903 jun 7 22:44 postgres-certs/server.crt
Sim, eu desconectei (desconectei o ssh, até reiniciei), também parei meu contêiner para ter certeza de que não causaria nenhum problema.
Só não entendo por que não consigo colocar nenhum arquivo nessas pastas enquanto elas têm direitos de leitura de grupo e eu estou nos grupos...
Se vocês conseguirem descobrir o que há de errado, seria maravilhoso.
Responder1
Para acessar os arquivos, você precisa ter x
definido o diretório.
Para um arquivo, (x) permite executar se o arquivo for um programa.
Para um diretório, (x) permite inserir um diretório e acessar os arquivos.
De acordo coma chmod
página de manual, (x) permite permissão de pesquisa para diretórios.
As letras rwxXst selecionam bits de modo de arquivo para os usuários afetados: leitura (r), gravação (w), execução (ou pesquisa por diretórios) (x), execução/pesquisa apenas se o arquivo for um diretório ou já tiver permissão de execução para algum usuário (X), definir ID do usuário ou grupo na(s) execução(ões), sinalizador de exclusão restrita ou sticky bit (t).
De acordo com issoDocumento do sistema de arquivos Unix, (x) permite que você entre no diretório e acesse os arquivos.
Para diretórios, a permissão de execução permite que você entre no diretório (ou seja, faça cd nele) e acesse qualquer um de seus arquivos.
Para referência futura, você poderia usar:
sudo chmod g+x ~/postgres-certs
para adicionar permissão (x) para o grupo em um diretório.
No entanto, em vez de alterar a permissão para 650, você provavelmente deveria usar:
sudo cat postgres-certs/server.crt
em vez disso, para que você possa manter o conjunto de permissões padrão para o diretório.