Почему я не могу изменить права доступа к файлам, к которым у меня есть доступ?

5

Я зашел на сервер как пользователь «ubuntu», и у меня есть файлы, которые выглядят так:

-rw-rw-r-- 1 www-data www-data 33150 2012-06-04 22:17 file-a.png
-rw-rw-r-- 1 www-data www-data 36371 2012-06-04 22:15 file-b.png
-rw-rw-r-- 1 www-data www-data 41439 2012-06-04 22:16 file-c.png

Пользователь ubuntu является членом группы www-data:

groups ubuntu

производит

ubuntu : ubuntu www-data

Значит, не могу ли я изменить другие разрешения, так как у меня есть доступ к файлу? Я не эксперт в отношении пользователей / групп. Так что это просто озадачивает меня.

Я пытаюсь запустить:

chmod o-r *

Я понимаю, что могу сделать это с помощью sudo, легко, но я пытаюсь понять, почему я не могу изменять файлы без sudo.

    
задан Erik 07.06.2012 в 18:20
источник

2 ответа

7

Только владелец файла может изменить свои разрешения

Как отметил jackweirdy , только владелец файла (или root ) может изменить права доступа к файлу. Являясь членом группы, имеющей какой-либо доступ к файлу, вы получаете возможность изменять разрешения файла.

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

Например, рассмотрите эти разрешения, как в вашей конкретной ситуации:

-rw-rw-r--

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

Предположим, что www-data (или кто-то, у кого есть возможность запускать команды как www-data или root ), установили эти разрешения с намерением оставить других пользователей в группе-владельцем от выполнения файла. Если другие пользователи в группе могут изменять разрешения, они могут запускаться:

chmod g+x file-a.png

И тогда они получат возможность выполнить файл. Такая способность сделает групповые разрешения бесполезными.

В отличие от этого, причина разрешения пользователей, даже если пользователь владеет этим файлом, заключается не в том, чтобы ограничить владельца от чего-либо с файлом, а скорее для того, чтобы защитить пользователя от действий с файлом, t хотите . Например, файлы, которые не являются программами или которые могут быть программами, но только что полученными из ненадежного источника, такого как Интернет, как правило, имеют бит выполнения, установленный на 0, даже для владельца, в свою пользу. В этом случае владельцу необходимо и необходимо изменить это.

Отдельная проблема, позволяющая членам владельца группы (не являющемуся владельцем) изменять права доступа, заключается в том, что это отдельная способность, не учитываемая r , w или x . Даже если бы группа читала, записывала и выполняла разрешения, это не обязательно означает, что они должны иметь возможность изменять разрешения. (Например, предположим, что у вас есть файл, в котором владелец не является членом владельца группы. Если члены владельца группы могут изменять разрешения, они могут лишить владельца прав. Владелец может изменить это. но это все равно нарушит любые автоматизированные задачи, которые пользователь запланировал, используя этот файл.)

Предоставление пользователям возможности стать владельцем

Когда файл принадлежит пользователю, например www-data , который не является фактическим лицом, вы можете разрешить некоторым людям выполнять действия в качестве этого пользователя. sudo не просто облегчает возможность выбора пользователям выполнять команды как root . Это также облегчает возможность выбора пользователей для запуска команды в качестве других указанных пользователей. Вы можете настроить все, чтобы каждый из групп www-data имел возможность запускать команды в качестве пользователя www-data , включая изменение разрешений на файлы, принадлежащие www-data . (Однако убедитесь, что вы понимаете последствия этого. В зависимости от того, как настроена ваша система, пользователи www-data могут планировать задачи, выполняемые как www-data , и смогут вообще что-либо делать с любым файлом принадлежащий www-data , и для любого процесса, выполняемого как www-data .)

Информацию о том, как установить это, см. man sudoers . Если вы решите, что хотите сделать это, и у вас есть проблемы, вы можете опубликовать отдельный вопрос об этом.

Разрешить не владельцам изменять разрешения файла?

Я думаю, что может быть возможно разрешить некоторым пользователям, которые не владеют файлом, изменить некоторые или все разрешения файла, используя Списки контроля доступа . Однако я вряд ли использовал ACL на Ubuntu. Если вы заинтересованы в достижении этого, вам может потребоваться опубликовать еще один вопрос, если это возможно, и если да, то как это сделать.

    
ответ дан Eliah Kagan 07.06.2012 в 19:08
1

В принципе, ваши разрешения позволяют пользователю www-data или любому пользователю в пределах только для доступа к записи и записи в группе www-data. Только владелец может изменять групповые права доступа к файлу или каталогу и к одному из которых пользователь отличается.

В вашей ситуации Ubuntu не может изменять разрешения, потому что Ubuntu не владеет этими файлами и не имеет права на это, только другие данные могут быть изменены только с помощью www-data или root.

    
ответ дан ash 07.06.2012 в 18:56