Проблемы с правами на файлы в 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.