Может кто-нибудь объяснит мне, как правильно управлять правами, пожалуйста? У меня есть файл со следующими правами:
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. Что на самом деле означает "+" в конце строки прав?
Я сам нашел ответ. «+» означает альтернативный 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
решает проблему.
Вы должны использовать id
, чтобы узнать, какие у вас текущие идентификаторы пользователя и группы. По сути, вам следует снова войти в систему, чтобы получить новый идентификатор группы.
P.S. Что на самом деле означает "+" в конце строки прав?
Это скрыто на информационных страницах (info ls)
После битов режима файла идет один символ, который указывает есть ли альтернативный метод доступа, такой как список контроля доступа относится к файлу. Когда персонаж, следующий за файловым режимом биты - это пробел, альтернативного метода доступа нет. Когда он является печатный символ, то есть такой способ. GNU `ls 'использует расширение`.' символ для обозначения файла с SELinux контекст безопасности, но никакой другой альтернативный метод доступа. Файл с любой другой комбинацией альтернативных методов доступа отмечены знаком "+".
В выводе 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.
ACL POSIX переопределят простой ugoa
] разрешения, используемые chmod
и chown
.
Если вместо конечного плюса +
точка .
был бы отображен; это указывает на контекст SELinux, требуя флаг -Z
в ls
для их отображения.
Для полноты, 1
- это счетчик ссылок, который будет 2
, если была жесткая ссылка на файл и 3 для двух жестких ссылок и т. Д. Для каталога это число не менее двух и увеличивается с каждым файлом и / или каталогом в этом каталоге.
Затем владелец и группа, а затем фактический размер файла в байтах.Каталог размером 0
- это каталог, в котором нет файлов, таких как псевдофайловые системы, такие как / proc, / sys и, кстати, те, которые управляются автоматическим монтированием. Затем отметка времени последней даты изменения, за которой следует фактическое имя файла.