Невозможно получить доступ к файлам с разрешением 640, будучи членом их группы

Невозможно получить доступ к файлам с разрешением 640, будучи членом их группы

Я потратила много часов, пытаясь понять, почему что-то идет не так, но теперь я сдалась, и вот я здесь.

Моя настройка/проблема: У меня есть удаленный VPS, к которому я подключаюсь по SSH (ключи pub/priv, без пароля).
Пользователь — Debian.
На этом VPS я запускаю postgres:14.3-alpineконтейнер Docker.

У этого докера есть два тома, смонтированных в /home/debian:
postgres-certs
postgres-data

Идентификатор пользователя/группы пользователя в докере — 70. Дополнительная информацияздесь:
Как вы знаете, существуют правила безопасности, касающиеся сертификатов, поэтому, как объяснено по ссылке выше, я установил права 640 для postgres-certsпапки:

drw-r-----  2    0   70 4096 jun  7 22:45 postgres-certs
drwxr----- 19   70 1000 4096 jun 11 20:40 postgres-data

Как вы видите, обе папки имеют групповые права на чтение.
Пожалуйста, найдите мои группы:

debian@db-dev:~$ id
uid=1000(debian) gid=1000(debian) groups=1000(debian),70(docker-pg-alpine),998(docker)

Как видите, я нахожусь в группах 70 и 1000, которые определены в двух папках одинаково.
Если я попытаюсь выполнить команду cat для файла в одной из этих папок, вот что я получу (конечно, это сработает, если я использую sudo):

debian@db-dev:~$ cat postgres-certs/server.crt 
cat: postgres-certs/server.crt: Permission denied

Просто чтобы доказать вам, что файл имеет те же права доступа, что и его каталог:

debian@db-dev:~$ sudo ls -ln postgres-certs/server.crt 
-rw-r----- 1 0 70 2903 jun  7 22:44 postgres-certs/server.crt

Да, я вышел из системы (отключил ssh, даже перезагрузился), я также остановил свой контейнер, чтобы убедиться, что он не вызовет никаких проблем.
Я просто не понимаю, почему я не могу удалить ни одного файла из этих папок, если у них есть групповые права на чтение, а я вхожу в эти группы...
Если вы, ребята, сможете найти, в чем проблема, это было бы замечательно.

решение1

Для доступа к файлам необходимо иметь xнастройки для каталога.

  • Для файла (x) позволяет выполнить, если файл является программой.

  • Для каталога (x) позволяет войти в каталог и получить доступ к файлам.


В соответствии сchmodстраница руководства, (x) разрешает поиск по каталогам.

Буквы rwxXst выбирают биты режима файла для затронутых пользователей: чтение (r), запись (w), выполнение (или поиск каталогов) (x), выполнение/поиск только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для какого-либо пользователя (X), установка идентификатора пользователя или группы при выполнении (s), флаг ограниченного удаления или бит закрепления (t).

Согласно этомуДокумент файловой системы Unix, (x) позволяет войти в каталог и получить доступ к файлам.

Для каталогов разрешение на выполнение позволяет вам войти в каталог (т. е. выполнить команду cd в нем) и получить доступ к любым его файлам.


Для дальнейшего использования, вы можете использовать:

sudo chmod g+x ~/postgres-certs

для добавления (x) разрешения для группы в каталоге.

Однако вместо изменения разрешения на 650, вам, вероятно, следует использовать:

sudo cat postgres-certs/server.crt

вместо этого вы можете сохранить набор разрешений по умолчанию для каталога.

Связанный контент