个人工具

“UbuntuHelp:FilePermissionsRu”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
(新页面: {{From|https://help.ubuntu.com/community/FilePermissionsRu}} {{Languages|UbuntuHelp:FilePermissionsRu}} == Права доступа в системе Linux == Поскольку Linux...)
 
第1行: 第1行:
 
{{From|https://help.ubuntu.com/community/FilePermissionsRu}}
 
{{From|https://help.ubuntu.com/community/FilePermissionsRu}}
 
{{Languages|UbuntuHelp:FilePermissionsRu}}
 
{{Languages|UbuntuHelp:FilePermissionsRu}}
 
 
 
== Права доступа в системе Linux ==
 
== Права доступа в системе Linux ==
 
 
Поскольку Linux (да и UNIX вообще) - многопользовательская OS, в ней существует система прав доступа к файлам, служащая для защиты файлов каждого пользователя от влияния других пользователей системы.
 
Поскольку Linux (да и UNIX вообще) - многопользовательская OS, в ней существует система прав доступа к файлам, служащая для защиты файлов каждого пользователя от влияния других пользователей системы.
 
 
Права доступа подразделяются на три типа:
 
Права доступа подразделяются на три типа:
 
* '''чтение''' (read)
 
* '''чтение''' (read)
 
* '''запись''' (write)
 
* '''запись''' (write)
 
* '''выполнение''' (execute)
 
* '''выполнение''' (execute)
 
 
Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов - просматривать перечень имен файлов в каталоге (используя, например, команду '''ls'''). Разрешение на запись позволяет пользователю писать в файл, изменять его или удалять. Для каталогов это дает право cоздавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге. Наконец, разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Если на файле стоит атрибут ''Execute'', то независимо от его расширения он считается программой, которую можно запустить. (Вот почему в *nix не принято ставить исполняемым файлам расширения по типу DOS'овских ''*.com'', ''*.exe'', ''*.bat''. Вообще в Unix/Linux нет такого жесткого понятия ''расширение файла'', как в Dos/Windows, и система сама определяет тип файлов независимо от их расширения, но это - уже другая история...). Так же атрибут выполнения может стоять у shell-скриптов, CGI-скриптов, и у всего, что можно хоть как-то запустить. Разрешение на выполнение применительно к каталогам означает возможность выполнять команды вроде '''cd'''.
 
Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов - просматривать перечень имен файлов в каталоге (используя, например, команду '''ls'''). Разрешение на запись позволяет пользователю писать в файл, изменять его или удалять. Для каталогов это дает право cоздавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге. Наконец, разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Если на файле стоит атрибут ''Execute'', то независимо от его расширения он считается программой, которую можно запустить. (Вот почему в *nix не принято ставить исполняемым файлам расширения по типу DOS'овских ''*.com'', ''*.exe'', ''*.bat''. Вообще в Unix/Linux нет такого жесткого понятия ''расширение файла'', как в Dos/Windows, и система сама определяет тип файлов независимо от их расширения, но это - уже другая история...). Так же атрибут выполнения может стоять у shell-скриптов, CGI-скриптов, и у всего, что можно хоть как-то запустить. Разрешение на выполнение применительно к каталогам означает возможность выполнять команды вроде '''cd'''.
 
 
Эти типы прав доступа могут быть предоставлены для трех классов пользователей:
 
Эти типы прав доступа могут быть предоставлены для трех классов пользователей:
 
* '''владельцы''' - у каждого файла в Linux'e есть один владелец.
 
* '''владельцы''' - у каждого файла в Linux'e есть один владелец.
 
* '''группы''' - с каждым файлом связана группа пользователей этого файла.
 
* '''группы''' - с каждым файлом связана группа пользователей этого файла.
 
* '''остальные''' пользователи.
 
* '''остальные''' пользователи.
 
 
Владельцем файла становится юзер, который создал этот файл. Короче говоря, для файла все юзеры делятся на 3 типа: хозяин, или владелец, юзеры, состоящие в одной группе с владельцем, и все остальные юзеры. Для каждого типа - свои права. Учтите, что директории и все системные устройства в UNIX являются обычными файлами. Тот же самый /dev/fd0 - это не сам Floppy disk, а всего лишь файл, связанный с флопповодом. Поэтому, если root запретил юзеру доступ к этому файлу, тот не сможет использовать флопповод (так же обстоят дела с модемами, хардами и т.п.). Владельцем всех системных файлов является root. Он же имеет право забирать файлы у одного юзера и передавать их другому (менять владельца).
 
Владельцем файла становится юзер, который создал этот файл. Короче говоря, для файла все юзеры делятся на 3 типа: хозяин, или владелец, юзеры, состоящие в одной группе с владельцем, и все остальные юзеры. Для каждого типа - свои права. Учтите, что директории и все системные устройства в UNIX являются обычными файлами. Тот же самый /dev/fd0 - это не сам Floppy disk, а всего лишь файл, связанный с флопповодом. Поэтому, если root запретил юзеру доступ к этому файлу, тот не сможет использовать флопповод (так же обстоят дела с модемами, хардами и т.п.). Владельцем всех системных файлов является root. Он же имеет право забирать файлы у одного юзера и передавать их другому (менять владельца).
 
 
== Команда chmod ==
 
== Команда chmod ==
 
 
Изменить права доступа к файлу может либо его владелец, либо сам root. Делается это командой chmod. Существует две формы представления прав доступа: символьная и цифровая.
 
Изменить права доступа к файлу может либо его владелец, либо сам root. Делается это командой chmod. Существует две формы представления прав доступа: символьная и цифровая.
 
 
=== Символьная форма прав доступа ===
 
=== Символьная форма прав доступа ===
 
 
Если войти в любой каталог, где есть файлы, и набрать '''ls -l''', то появится список всех файлов в этом каталоге и права доступа в символьной форме. Строка прав доступа состоит из 10 символов. Первый символ указывает на тип файла: '''d''' - директория, '''-''' - обычный файл. Три последующих - права доступа владельца к этому файлу. Если первый символ из этих трех - '''r''', владелец имеет право читать этот файл, а если '''-''', то не имеет. Следующие 2 символа - '''w''' - писать и '''x''' - запускать. Если вместо них стоит '''-''', значит, владелец этого права не имеет. Еще 3 символа - права доступа группы, еще три - права всех остальных пользователей.
 
Если войти в любой каталог, где есть файлы, и набрать '''ls -l''', то появится список всех файлов в этом каталоге и права доступа в символьной форме. Строка прав доступа состоит из 10 символов. Первый символ указывает на тип файла: '''d''' - директория, '''-''' - обычный файл. Три последующих - права доступа владельца к этому файлу. Если первый символ из этих трех - '''r''', владелец имеет право читать этот файл, а если '''-''', то не имеет. Следующие 2 символа - '''w''' - писать и '''x''' - запускать. Если вместо них стоит '''-''', значит, владелец этого права не имеет. Еще 3 символа - права доступа группы, еще три - права всех остальных пользователей.
 
 
Примеры:
 
Примеры:
 
 
'''<code><nowiki>drwxrwxrwx</nowiki></code>''' - директория, к которой все имеют любые права доступа.
 
'''<code><nowiki>drwxrwxrwx</nowiki></code>''' - директория, к которой все имеют любые права доступа.
 
 
'''<code><nowiki>-rwxr--r--</nowiki></code>''' - обычный файл, владелец может делать все, а остальные - только читать.
 
'''<code><nowiki>-rwxr--r--</nowiki></code>''' - обычный файл, владелец может делать все, а остальные - только читать.
 
 
'''<code><nowiki>-r--------</nowiki></code>''' - обычный файл, который владелец может только читать, а остальные пользователи не видят.
 
'''<code><nowiki>-r--------</nowiki></code>''' - обычный файл, который владелец может только читать, а остальные пользователи не видят.
 
 
Важно заметить, что права доступа, которые имеет файл, зависят также от прав доступа к каталогу, в котором этот файл находится. Например, даже если файл имеет '''<code><nowiki>-rwxrwxrwx</nowiki></code>''', другие пользователи не смогут до него добраться, если у них не будет прав на чтение и выполнение каталога, в котором находится файл. Например, если юзер захочет ограничить доступ ко всем своим файлам, он может просто изменить права доступа своего домашнего каталога ''/home/user'' на '''<code><nowiki>drwx------</nowiki></code>'''. Таким образом, никто другой не будет иметь доступ в его каталог, а следовательно посторонним будут недоступны и все файлы. Так что, пользователь может не заботиться об индивидуальной защите своих файлов. Другими словами, чтобы иметь доступ к файлу, вы должны иметь доступ ко всем каталогам, лежащим на пути от корня к этому файлу, а также разрешение на доступ собственно к этому файлу. Обычно пользователи UNIX весьма открыты всеми своими файлами. По умолчанию файлам устанавливается защита '''<code><nowiki>-rw-r--r--</nowiki></code>''', которая позволяет другим пользователям читать файлы, но ни коим образом их не менять. Каталогам обычно устанавливаются права доступа '''<code><nowiki>drwxr-xr-x</nowiki></code>''', что позволяет другим пользователям ходить с правами экскурсантов по вашим каталогам, но ничего в них не трогать и не записывать.
 
Важно заметить, что права доступа, которые имеет файл, зависят также от прав доступа к каталогу, в котором этот файл находится. Например, даже если файл имеет '''<code><nowiki>-rwxrwxrwx</nowiki></code>''', другие пользователи не смогут до него добраться, если у них не будет прав на чтение и выполнение каталога, в котором находится файл. Например, если юзер захочет ограничить доступ ко всем своим файлам, он может просто изменить права доступа своего домашнего каталога ''/home/user'' на '''<code><nowiki>drwx------</nowiki></code>'''. Таким образом, никто другой не будет иметь доступ в его каталог, а следовательно посторонним будут недоступны и все файлы. Так что, пользователь может не заботиться об индивидуальной защите своих файлов. Другими словами, чтобы иметь доступ к файлу, вы должны иметь доступ ко всем каталогам, лежащим на пути от корня к этому файлу, а также разрешение на доступ собственно к этому файлу. Обычно пользователи UNIX весьма открыты всеми своими файлами. По умолчанию файлам устанавливается защита '''<code><nowiki>-rw-r--r--</nowiki></code>''', которая позволяет другим пользователям читать файлы, но ни коим образом их не менять. Каталогам обычно устанавливаются права доступа '''<code><nowiki>drwxr-xr-x</nowiki></code>''', что позволяет другим пользователям ходить с правами экскурсантов по вашим каталогам, но ничего в них не трогать и не записывать.
 
 
Но многие пользователи хотят держать других подальше от своих файлов. Установив права доступа файла '''<code><nowiki>-rw-------</nowiki></code>''', вы никому не покажете этот файл и не дадите записать в него. Также хорошо закрывает файлы защита соответствующего каталога '''<code><nowiki>drwx------</nowiki></code>'''.
 
Но многие пользователи хотят держать других подальше от своих файлов. Установив права доступа файла '''<code><nowiki>-rw-------</nowiki></code>''', вы никому не покажете этот файл и не дадите записать в него. Также хорошо закрывает файлы защита соответствующего каталога '''<code><nowiki>drwx------</nowiki></code>'''.
 
 
С правами доступа в символьной форме '''chmod''' работает так:
 
С правами доступа в символьной форме '''chmod''' работает так:
 
<pre><nowiki>
 
<pre><nowiki>
第47行: 第29行:
 
Кратко, вы выбираете из ''all'' (все), ''user'' (пользователь), ''group'' (группа) или ''other'' (другие). Далее указываете, либо вы добавляете права ('''+'''), либо лишаете прав ('''-'''). И наконец, вы указываете один или несколько режимов: ''read'', ''write''
 
Кратко, вы выбираете из ''all'' (все), ''user'' (пользователь), ''group'' (группа) или ''other'' (другие). Далее указываете, либо вы добавляете права ('''+'''), либо лишаете прав ('''-'''). И наконец, вы указываете один или несколько режимов: ''read'', ''write''
 
или ''execute''.
 
или ''execute''.
 
 
=== Числовая форма прав доступа ===
 
=== Числовая форма прав доступа ===
 
 
Теперь права доступа в числовой форме. Для некоторых эта форма может показаться более простой. Надо запомнить только следующее:
 
Теперь права доступа в числовой форме. Для некоторых эта форма может показаться более простой. Надо запомнить только следующее:
 
 
* 400 - владелец имеет право на чтение
 
* 400 - владелец имеет право на чтение
 
* 200 - владелец имеет право на запись
 
* 200 - владелец имеет право на запись
第61行: 第40行:
 
* 2 - остальные имеют право на запись
 
* 2 - остальные имеют право на запись
 
* 1 - остальные имеют право на выполнение
 
* 1 - остальные имеют право на выполнение
 
 
Теперь осталось только просуммировать числа, соответствующие тем правам доступа, которые мы хотим поставить файлу.
 
Теперь осталось только просуммировать числа, соответствующие тем правам доступа, которые мы хотим поставить файлу.
 
 
=== Примеры ===
 
=== Примеры ===
 
==== Символьная форма ====
 
==== Символьная форма ====
第86行: 第63行:
 
</nowiki></pre>
 
</nowiki></pre>
 
Запрещает все ('''read''', '''write''' и '''execute''') пользователям категории другие ('''other''').
 
Запрещает все ('''read''', '''write''' и '''execute''') пользователям категории другие ('''other''').
 
 
=== Числовая форма===
 
=== Числовая форма===
 
 
400+200+100+40+4=744
 
400+200+100+40+4=744
 
<pre><nowiki>
 
<pre><nowiki>
第94行: 第69行:
 
</nowiki></pre>
 
</nowiki></pre>
 
владелец может делать все, а остальные - только читать.
 
владелец может делать все, а остальные - только читать.
 
 
400+40+4=444
 
400+40+4=444
 
<pre><nowiki>
 
<pre><nowiki>
第100行: 第74行:
 
</nowiki></pre>
 
</nowiki></pre>
 
все имеют право только на чтение.
 
все имеют право только на чтение.
 
 
400+100+10+1=611
 
400+100+10+1=611
 
<pre><nowiki>
 
<pre><nowiki>
第106行: 第79行:
 
</nowiki></pre>
 
</nowiki></pre>
 
владелец может читать и выполнять, остальные - только выполнять.
 
владелец может читать и выполнять, остальные - только выполнять.
 
 
400+200+100+40+10+4+1=755
 
400+200+100+40+10+4+1=755
 
<pre><nowiki>
 
<pre><nowiki>
第112行: 第84行:
 
</nowiki></pre>
 
</nowiki></pre>
 
Классическая команда. Скрипт - это исполняемый файл, и все должны иметь к нему доступ на чтение и выполнение. Только владелец этого файла может его изменять или удалять.
 
Классическая команда. Скрипт - это исполняемый файл, и все должны иметь к нему доступ на чтение и выполнение. Только владелец этого файла может его изменять или удалять.
 
 
== Команда chown ==
 
== Команда chown ==
 
 
Изменение владельца файла осуществляется командой chown, например:
 
Изменение владельца файла осуществляется командой chown, например:
 
<pre><nowiki>
 
<pre><nowiki>
第123行: 第93行:
 
sudo chown -R <имя нового владельца> <имя каталога>
 
sudo chown -R <имя нового владельца> <имя каталога>
 
</nowiki></pre>
 
</nowiki></pre>
 
 
== Команда chgroup ==
 
== Команда chgroup ==
 
 
Изменение группы, которой принадлежит файл.
 
Изменение группы, которой принадлежит файл.
 
<pre><nowiki>
 
<pre><nowiki>
第134行: 第102行:
 
sudo chown -R <название новой группы> <имя каталога>
 
sudo chown -R <название новой группы> <имя каталога>
 
</nowiki></pre>
 
</nowiki></pre>
 
 
----
 
----
 
[mailto:[email protected] Valery V. Kachurov]
 
[mailto:[email protected] Valery V. Kachurov]
  
 
[[category:UbuntuHelp]]
 
[[category:UbuntuHelp]]

2007年11月30日 (五) 17:13的版本

Права доступа в системе Linux

Поскольку Linux (да и UNIX вообще) - многопользовательская OS, в ней существует система прав доступа к файлам, служащая для защиты файлов каждого пользователя от влияния других пользователей системы. Права доступа подразделяются на три типа:

  • чтение (read)
  • запись (write)
  • выполнение (execute)

Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов - просматривать перечень имен файлов в каталоге (используя, например, команду ls). Разрешение на запись позволяет пользователю писать в файл, изменять его или удалять. Для каталогов это дает право cоздавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге. Наконец, разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Если на файле стоит атрибут Execute, то независимо от его расширения он считается программой, которую можно запустить. (Вот почему в *nix не принято ставить исполняемым файлам расширения по типу DOS'овских *.com, *.exe, *.bat. Вообще в Unix/Linux нет такого жесткого понятия расширение файла, как в Dos/Windows, и система сама определяет тип файлов независимо от их расширения, но это - уже другая история...). Так же атрибут выполнения может стоять у shell-скриптов, CGI-скриптов, и у всего, что можно хоть как-то запустить. Разрешение на выполнение применительно к каталогам означает возможность выполнять команды вроде cd. Эти типы прав доступа могут быть предоставлены для трех классов пользователей:

  • владельцы - у каждого файла в Linux'e есть один владелец.
  • группы - с каждым файлом связана группа пользователей этого файла.
  • остальные пользователи.

Владельцем файла становится юзер, который создал этот файл. Короче говоря, для файла все юзеры делятся на 3 типа: хозяин, или владелец, юзеры, состоящие в одной группе с владельцем, и все остальные юзеры. Для каждого типа - свои права. Учтите, что директории и все системные устройства в UNIX являются обычными файлами. Тот же самый /dev/fd0 - это не сам Floppy disk, а всего лишь файл, связанный с флопповодом. Поэтому, если root запретил юзеру доступ к этому файлу, тот не сможет использовать флопповод (так же обстоят дела с модемами, хардами и т.п.). Владельцем всех системных файлов является root. Он же имеет право забирать файлы у одного юзера и передавать их другому (менять владельца).

Команда chmod

Изменить права доступа к файлу может либо его владелец, либо сам root. Делается это командой chmod. Существует две формы представления прав доступа: символьная и цифровая.

Символьная форма прав доступа

Если войти в любой каталог, где есть файлы, и набрать ls -l, то появится список всех файлов в этом каталоге и права доступа в символьной форме. Строка прав доступа состоит из 10 символов. Первый символ указывает на тип файла: d - директория, - - обычный файл. Три последующих - права доступа владельца к этому файлу. Если первый символ из этих трех - r, владелец имеет право читать этот файл, а если -, то не имеет. Следующие 2 символа - w - писать и x - запускать. Если вместо них стоит -, значит, владелец этого права не имеет. Еще 3 символа - права доступа группы, еще три - права всех остальных пользователей. Примеры: drwxrwxrwx - директория, к которой все имеют любые права доступа. -rwxr--r-- - обычный файл, владелец может делать все, а остальные - только читать. -r-------- - обычный файл, который владелец может только читать, а остальные пользователи не видят. Важно заметить, что права доступа, которые имеет файл, зависят также от прав доступа к каталогу, в котором этот файл находится. Например, даже если файл имеет -rwxrwxrwx, другие пользователи не смогут до него добраться, если у них не будет прав на чтение и выполнение каталога, в котором находится файл. Например, если юзер захочет ограничить доступ ко всем своим файлам, он может просто изменить права доступа своего домашнего каталога /home/user на drwx------. Таким образом, никто другой не будет иметь доступ в его каталог, а следовательно посторонним будут недоступны и все файлы. Так что, пользователь может не заботиться об индивидуальной защите своих файлов. Другими словами, чтобы иметь доступ к файлу, вы должны иметь доступ ко всем каталогам, лежащим на пути от корня к этому файлу, а также разрешение на доступ собственно к этому файлу. Обычно пользователи UNIX весьма открыты всеми своими файлами. По умолчанию файлам устанавливается защита -rw-r--r--, которая позволяет другим пользователям читать файлы, но ни коим образом их не менять. Каталогам обычно устанавливаются права доступа drwxr-xr-x, что позволяет другим пользователям ходить с правами экскурсантов по вашим каталогам, но ничего в них не трогать и не записывать. Но многие пользователи хотят держать других подальше от своих файлов. Установив права доступа файла -rw-------, вы никому не покажете этот файл и не дадите записать в него. Также хорошо закрывает файлы защита соответствующего каталога drwx------. С правами доступа в символьной форме chmod работает так:

chmod {a,u,g,o}{+,-}{r,w,x} <filenames>

Кратко, вы выбираете из all (все), user (пользователь), group (группа) или other (другие). Далее указываете, либо вы добавляете права (+), либо лишаете прав (-). И наконец, вы указываете один или несколько режимов: read, write или execute.

Числовая форма прав доступа

Теперь права доступа в числовой форме. Для некоторых эта форма может показаться более простой. Надо запомнить только следующее:

  • 400 - владелец имеет право на чтение
  • 200 - владелец имеет право на запись
  • 100 - владелец имеет право на выполнение
  • 40 - группа имеет право на чтение
  • 20 - группа имеет право на запись
  • 10 - группа имеет право на выполнение
  • 4 - остальные имеют право на чтение
  • 2 - остальные имеют право на запись
  • 1 - остальные имеют право на выполнение

Теперь осталось только просуммировать числа, соответствующие тем правам доступа, которые мы хотим поставить файлу.

Примеры

Символьная форма

chmod a+r stuff

Дает всем пользователям право читать файл stuff.

chmod +r stuff

То же самое, что и ранее (a - по умолчанию).

chmod og-x stuff

Лишает права на выполнение всех, кроме владельца.

chmod u+rwx stuff

Разрешает владельцу все (read, write и execute).

chmod o-rwx stuff

Запрещает все (read, write и execute) пользователям категории другие (other).

Числовая форма

400+200+100+40+4=744

chmod 744 stuff

владелец может делать все, а остальные - только читать. 400+40+4=444

chmod 444 stuff

все имеют право только на чтение. 400+100+10+1=611

chmod 611 stuff

владелец может читать и выполнять, остальные - только выполнять. 400+200+100+40+10+4+1=755

chmod 755 script

Классическая команда. Скрипт - это исполняемый файл, и все должны иметь к нему доступ на чтение и выполнение. Только владелец этого файла может его изменять или удалять.

Команда chown

Изменение владельца файла осуществляется командой chown, например:

sudo chown <имя нового владельца> <имя файла>

Для передачи каталога надо вводить:

sudo chown -R <имя нового владельца> <имя каталога>

Команда chgroup

Изменение группы, которой принадлежит файл.

sudo chown <название новой группы> <имя файла>

Для передачи каталога надо вводить:

sudo chown -R <название новой группы> <имя каталога>

Valery V. Kachurov