Проблемы с правами на файлы в CentOS

Может кто-нибудь объяснить мне, как правильно управлять правами пожалуйста? У меня есть файл с этими правами:

8 -rw-r--r--+ 1 sntecard  sntecard    4669 Sep 18 12:34 index.php

Я захожу в эту папку пользователем myuser и пытаюсь ее изменить. Конечно я не могу Хорошо, я добавляю права на запись в группу и добавляю себя в группу sntecard (будучи root):

usermod -a -G sntecard myuser

chmod g+w index.php

Давайте проверим права: (ls -ls)

8 -rw-rw-r--+ 1 sntecard  sntecard    4669 Sep 18 12:34 index.php

Теперь давайте проверим, нахожусь ли я в группе: (grep sntecard /etc/group)

sntecard:x:503:sntecard,myuser

Круто, я в группе и теперь ДОЛЖЕН иметь права! Но нет. Я не могу написать этот файл. Невозможно через sFTP и невозможно через nano index.php. Ошибка доступа при записи файла.

Что я делаю не так?

PS Что на самом деле означает "+" в конце строки прав?

3 ответа

Решение

Я нашел ответ сам. "+" означает альтернативный ACL (списки доступа), установленные для этого файла. Когда мы смотрим на них, мы можем видеть

getfacl index.php

# file: index.php
# owner: sntecard
# group: sntecard
user::rw-
user:cyberuser:rwx              #effective:rw-
group::r--
mask::rw-
other::rw-

Это означает, что нет групповой доступ для записи. Изменить это на

setfacl -m group::rw- index.php

решает проблему.

На выходе из ls -ls:

 8 -rw-r--r--+ 1 sntecard  sntecard    4669 Sep 18 12:34 index.php

Число 8 является результатом -s опция и размер файла в блоках.

-rw-r--r--+ находятся в порядке читабельных прав для пользователя, который владеет им (-rw), другие пользователи в группе файла (-r-), другие пользователи, не входящие в группу файла (-r-) или всех пользователей (-).

Трейлинг + является признаком более расширенного контроля доступа. Они не могут быть отображены ls и требуют вспомогательных команд. В случае файловых систем, смонтированных, например, с опцией acl getfacl отображать и setfacl изменить POSIX ACL.

POSIX ACL переопределит простой ugoa разрешения, используемые chmod а также chown,

Если вместо завершающего плюса + точка . был бы отображен; это указывает на контекст SELinux, требующий -Z флаг в ls отображать их.

Для полноты 1 это счетчик ссылок, который будет 2 если была жесткая ссылка на файл и 3 для двух жестких ссылок и т. д. Для каталога это число составляет не менее двух и увеличивается с каждым файлом и / или каталогом в этом каталоге.

Затем владелец и группа, а затем фактический размер файла в байтах. Каталог с размером 0 это тот, который не содержит никаких файлов, таких как псевдофайловые системы, такие как /proc, /sys, и, кстати, управляемых автомонтировщиком. Чем отметка времени последней модификации, за которой следует фактическое имя файла.

Вы должны использовать id чтобы увидеть, каков ваш текущий пользователь и идентификатор группы. По сути, вы должны войти снова, чтобы забрать свой новый идентификатор группы.

PS Что на самом деле означает "+" в конце строки прав?

Это скрыто на информационных страницах (info ls)

Following the file mode bits is a single character that specifies
 whether an alternate access method such as an access control list
 applies to the file.  When the character following the file mode
 bits is a space, there is no alternate access method.  When it is
 a printing character, then there is such a method.

GNU `ls' uses a `.' character to indicate a file with an SELinux
 security context, but no other alternate access method.

A file with any other combination of alternate access methods is
 marked with a `+' character.
Другие вопросы по тегам