Может кто-нибудь объяснить мне, как правильно управлять правами, пожалуйста? У меня есть файл с такими правами:
8 -rw-r--r--+ 1 sntecard sntecard 4669 Sep 18 12:34 index.php
Я получаю доступ к этой папке пользователем myuser и пытаюсь изменить ее. Конечно, не могу. Хорошо, я добавляю права записи для группы и добавляю себя в группу sntecard (являясь корневым):
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. Ошибка доступа при записи файла.
Что я делаю не так?
P.S. Что на самом деле означает "+" в конце строки прав?
На выходе 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
для изменения списков ACL POSIX.
POSIX ACL переопределит простой ugoa
разрешения, используемые chmod
и chown
.
Если вместо конечного плюса +
точка .
был бы отображен; который указывает контекст SELinux, требующий -Z
флаг в ls
чтобы отобразить их.
Для полноты картины 1
это счетчик ссылок, который будет 2
если была жесткая ссылка на файл и 3 для двух жестких ссылок и т. д. Для каталога это число не менее двух и увеличивается с каждым файлом и / или каталогом в этом каталоге.
Затем владелец и группа, а затем фактический размер файла в байтах. Каталог с размером 0
это тот, который не содержит никаких файлов, таких как псевдо-файловые системы, такие как / proc, / sys и те, которые, кстати, управляются автоматическим монтированием. Затем отметка времени последней модификации, за которой следует фактическое имя файла.
Вы должны использовать id
чтобы узнать, какой у вас текущий пользователь и идентификатор группы. По сути, вам следует снова войти в систему, чтобы получить новый идентификатор группы.
P.S. Что на самом деле означает "+" в конце строки прав?
Это скрыто на информационных страницах (информация 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.
Я сам нашел ответ. «+» означает альтернативный 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
решает проблему.