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

14

Я сталкиваюсь со странной проблемой на машине Unix / Linux:

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

-rw-rw----

поэтому я ожидал, что смогу открыть этот файл, но это не так: я получу сообщение об ошибке «Отказано в доступе» при попытке просмотреть содержимое файла (используя cat).

Поскольку разрешения кажутся правильными, что еще может быть причиной этого? Существуют ли «первостепенные» ограничения разрешений? Если так, как я узнаю?

Lagerbaer
источник
2
Как насчет прав доступа к каталогу?
Карлсон
Если вы в нескольких группах, ваша текущая группа установлена ​​на A?
Code-Guru
2
@ Карлсон, если бы проблема была с правами доступа к каталогам, вы бы не смогли увидеть права доступа к файлу.
CJM
Покажите нам полный путь и имя файла, пожалуйста.
Джиппи
Это в /home/theotheruser/somefolder/bla.txt Я в нескольких группах.
Лагербаер

Ответы:

8

Вы вышли из системы и снова вошли в систему с момента добавления в группу A?

Если нет, то ваши текущие процессы входа в систему будут иметь только членство в группах, которое имело место во время входа в систему, а не изменения с тех пор. И любые дочерние процессы этого входа будут иметь одинаковое членство в группе (т. Е. Если вы вошли в X, то каждое приложение, включая ваш эмулятор терминала и оболочку)

Вы можете проверить это, войдя снова в другую консоль или через ssh, или что-то в этом роде exec sudo -u $(id -u -n) -i(чтобы эффективно убить и заменить текущую оболочку новой оболочкой - любые фоновые процессы, принадлежащие этой оболочке, будут потеряны)

саз
источник
Нет, это не было проблемой; Я вышел из системы и вернулся, но это не помогло.
Лагербаер
3

В NFS это зависит от того, какой режим безопасности вы используете, но в традиционном, список групп, к которым принадлежит пользователь, отправляется клиентом на сервер, и существует ограничение на количество групп, которые могут быть отправлены (это было 16 в последний раз я проверял).

Итак, клиент говорит: я uid 1234 и, кстати, я член групп 12, 13, 14 ... Если вы находитесь в более чем 16 группах, этот список будет сокращен, и будут группы для который сервер не знает, вы являетесь его участником.

Это, вероятно, объяснение этому. Только системный администратор локальной и / или удаленной машины может что-то сделать с этим, либо изменив модель безопасности или настройку сервера NFS, либо уменьшив количество групп, в которые вы входите.

Стефан Шазелас
источник
У меня есть сильное чувство, что это причина, потому что группа, которую я нахожусь в положении 19 в выводе команды "groups". Я покажу этот ответ системному администратору и посмотрим, поможет ли это. :)
Lagerbaer
Как бы вы изменили «модель безопасности» в NFS, чтобы решить эту проблему?
Дэнни
2

Как вы заметили в комментарии, у вас нет прав на чтение /home/username. Но читать /home/username/path1/path2/file, вам нужно выполнить разрешения для всего пути.

Чтобы отладить это, запустите namei -l /home/username/path1/path2/fileот имени пользователя, который читает файл.

Адам Трон
источник
Это была проблема в моем случае. Я хотел дать другому пользователю права на работу с подпапкой моего домашнего каталога, но у моего домашнего каталога есть доступ 700, поэтому они получили «Отказано в доступе» для любой команды.
Цербер
1

Может быть ACL. Видеть

getfacl the-file

Возможно, по какой-то причине группы, в которые вы должны входить, установлены неправильно. Проверить с

id -a

Как насчет

namei -xl "$(readlink -f the-file)"

getfattr -dm- the-file

sudo lsattr the-file

В каком типе файловой системы она находится?

Какой-либо apparmor, SELinux или любой другой обязательный контроль доступа в системе?

Вы уверены, что файл не содержит текст «Отказано в доступе», верно ;-)?

Стефан Шазелас
источник
Нет, специального ACL нет, он просто повторяет то, что говорят мне стандартные флаги, а id -a говорит, что я нахожусь в группе этого файла
Lagerbaer
Странно то, что я вижу файлы другого пользователя, принадлежащего к группе B, членом которого я тоже являюсь ...
Lagerbaer
Файловая система выглядит как nfs4. namei дает мне / и дом, принадлежащий root, root. / home / имя пользователя, принадлежащее имени пользователя и группе X (участником которого я не являюсь), остальное - / home / username / path1 / path2 / file, где path1 принадлежит имени пользователя и группе X, а path2 принадлежит имени пользователя, и группа А, членом которой я являюсь.
Лагербаер