- Права доступа к файлам в Linux или почему rwxr-xr-x=755
- Пользователи и группы
- Файлы и права
- Буквы и цифры
- Это всё неправильно!
- Забытый минус
- Права доступа к файлам в Linux
- Права доступа к файлам и директориям в UNIX
- Что такое права?
- Кто может изменять права?
- Какие права можно устанавливать?
- Что означают все эти буквы и цифры?!
- Использование чисел вместо букв
- Настройка разрешений
- Установка разрешений с помощью FTP
- Установка разрешений с помощью SSH
- Использование буквенного способа
- Проверка разрешений
Некоторых людей придётся оставить в старом году
Права доступа к файлам в Linux или почему rwxr-xr-x=755
12.03.09 23:18 / Обновлено 23.11.11 15:48 | Версия для печати | Linux |
Пользователи и группы
Linux — многопользовательская система. Человек может отличать пользователей реальных (учётные записи людей, которые работают за компьютером) и системных (от имени которых запускаются системные процессы), но для машины разницы между ними нет никакой. Каждый пользователь представлен его уникальным идентификатором (UID, user ID), которым компьютер и оперирует в работе.
Пользователи могут объединяться в группы пользователей. В одной группе может находиться сколько угодно пользователей, так же как и один пользователь может состоять в скольких угодно группах. Любой пользователь обязательно состоит хотя бы в одной группе. По аналогии с пользователями, группы в cиcтеме также представлены их идентификаторами (GID, group ID).
При переименовании пользователя или группы новое имя присваивается прежнему ID, никаких других изменений не происходит и это очень удобно.
Посмотреть идентификатор пользователя можно командой id. Например:
$ id root uid=0(root) gid=0(root) groups=0(root)
Если имя не вводить, то выйдет информация про текущего пользователя. И кстати да, у root-а всегда UID=GID=0.
Файлы и права
Каждый файл в Linux принадлежит какому-либо пользователю (пользователь-владелец, владелец) и одновременно группе пользователей (группа-владелец). Пользователь-владелец не обязательно должен состоять в группе-владельце. Для каждого файла в Linux определяются отдельно права доступа для владельца, группы-владельца и для всех остальных пользователей.
Разновидностей прав доступа всего три: чтение, запись и выполнение, но их совместное использование даёт нам 2 3 =8 комбинаций (3 категории прав и 2 варианта для каждого права — установлено оно или нет, см. комбинаторику).
Рассмотрим права доступа к файлу, которые выводятся как:
Запись — rwx r-x r-x состоит из трёх блоков: это права доступа к файлу владельца , группы-владельца и всех остальных . Про первый символ минуса поговорим отдельно позже.
Буквы блока rwx определяют, соответственно, право доступа на чтение (r, read), запись (w, write) и выполнение (x, execute). Порядок букв менять нельзя. Если соответствующего права нет, то вместо буквы ставится минус (как, например, во втором и третьем блоках).
В данном примере у владельца файла полные права, а у группы и всех остальных — только чтение и выполнение, запись запрещена (удаление также относится к записи).
Буквы и цифры
Компьютер работает в двоичном коде. В двоичном коде он хранит данные на жёстком диске и в нём же производит вычисления.
Оперируя с числами в жизни мы имеем дело с десятичной системой счисления, так она называется потому, что все числа записываются десятью цифрами: от 0 до 9. В двоичной системе счисления цифр всего две: ноль и единица. К примеру, посчитаем от 0 до 7 в десятичной и двоичной системах, это поможет понять дальнейшее:
Десятичная система | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Двоичная система | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 |
Двоичная система (по 3 цифры) | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
Каждый блок rwx — это три бита информации по правам. Первый бит — чтение, второй — запись, третий — выполнение. Если право есть, бит равен 1, если нет — 0. То есть, для нашего примера, rwx = 111 = 7 , r-x = 101 = 5 , поэтому rwxr-xr-x = 111101101 = 755 .
Большинство сайтов даёт такое правило пересчёта: x=1, w=2, r=4, нужные права просуммировать. Например, r-x = 4+1 = 5. Это даёт метод пересчёта, но не приносит понимания. Понимать надо так: права на чтение и запись это r-x = 101 (в двоичной записи) = 100+1 (в двоичной системе) = 4+1 (в десятичной системе) = 5.
Математики нервно курят, настолько лихо я использую знак равенства.
Это всё неправильно!
Потому что права доступа к файлу задаются не 9, а 12 битами. То есть:
А всё то, о чём говорилось раньше — это укороченная запись прав.
На что уходят первые три бита?
Первый бит — SUID. Устанавливается на исполняемый файл. В этом случае файл выполнится от имени не текущего пользователя (как обычно и бывает), а от имени владельца файла. Группа для запуска — группа текущего пользователя.
Второй бит — SGID. Устанавливается на исполняемый файл. То же самое, что и для SUID, но для запуска подменяется не владелец, а группа.
Третий бит — Т-бит. Говорят, обычно устанавливается на папки. Если Т-бит установлен, то операция удаления больше не входит в операцию записи (w) и удалить файл может только его владелец.
Установка этих битов (и их комбинаций) в цифровом виде считается так же, как и установка прав. То есть, при установке Т-бита на файл с правами 755, получим права 1755.
Запись прав в буквенном виде всё-таки предназначена для человека, поэтому в ней есть нюансы. Установка SUID заменит x в блоке владельца на s и наш пример будет выглядеть как rwsr-xr-x . Установка SGID проделает то же самое с блоком группы-владельца: rwxr-sr-x . Установка Т-бита поменяет x на t в блоке остальных пользователей: rwsr-xr-t .
Забытый минус
Первый символ в этой записи — это тип файла, а его, как ни крути, мы поменять не сможем. Но знать полезно.
Источник
Права доступа к файлам в Linux
В этой статье мы поговорим об обозначении прав доступа к файлам в Unix подобных системах и на простых примерах разберем, что же обознают цифры 777, 755, 644 и т.д., а также символы drwxrwxrwx.
Права доступа могут быть представлены как в буквенном, так и цифровом виде, то есть к примеру
запись «777» является полностью идентична записи «drwxrwxrwx» или «-rwxrwxrwx».
Существует 3 вида прав доступа:
- чтение — обозначается как r (read),
- запись — обозначается как w (write),
- выполнение — обозначается как x (execute).
И 3 типа пользователей, которым эти права раздаются:
- Владелец файла или директории
- Группа пользователей, которой принадлежит владелец
- Все остальные
Рассмотрим символьное представление прав доступа.
к примеру «drwxrwxrwx» (полный доступ всем) можно поделить на 4 секции: d rwx rwx rwx
1 секция можеть быть либо «d»- директория, либо «-» — файл.
2 секция показывает права доступа владельца файла или директории.
r-чтение, w-запись, x- выполнение.
3 секция показывает права доступа группы в которой находится владелец, rwx — аналогично
4 секция показывает права доступа все остальных пользователей системы.
Расшифруем несколько примеров для закрепления:
Допустим мы имеем директорию test, ниже представлен ее вывод
gt# ls -la
total 6
drwxr-xr-x 3 igor users 512 May 16 11:06 .
drwxr-xr-x 5 igor users 512 May 16 11:05 ..
-rwxr-xr-x 1 igor users 0 May 16 11:06 script.pl
drwxr—— 2 igor users 512 May 16 11:06 test2
-rwxrw-r— 1 igor users 0 May 16 11:06 text.txt
Слева направо поля: права на объект, число ссылок на объект, имя владельца, группа к которой принадлежит владелец, размер объекта, дата и время последней модификации, имя объекта.
script.pl имеет права при которых владелец может все (rwx), а все остальные, в том числе пользователи группы владельца только чтение и выполнение (r-x).
test2 видим, что это директория, владелец может все (rwx), группа владельца только чтение (r- -), у все остальных никаких прав доступа нет (- — -).
text.txt владелец может все (rwx), группа владельца может читать и изменять файл (rw-), все остальные пользователи только читать (r- -).
Теперь рассмотрим цифровое значение прав доступа.
3 цифры прав доступа это 3 секции:владелец, группа владельца, все остальные.
У каждого типа доступа есть свое значение:
- r (чтение) — 4
- w (запись) — 2
- x (выполнение) — 1
Чтобы получить цифру доступа просто складываем права для каждой секции отдельно, то есть:
7 (4+2+1) — чтение, запись, выполнение;
6(4+2) — чтение, запись;
5(4+1) — чтение, выполнение;
4 — только чтение;
1 — только выполнение.
Если взять нашу директорию test, то права доступа будут выглядеть следующим образом:
script.pl 755 или -rwxr-xr-x
text.txt 764 или -rwxrw-r—
test2 740 или drwxr——
Чтобы изменить права доступа в Linux необходимо воспользоваться командой chmod
Источник
Права доступа к файлам и директориям в UNIX
категория Администрирование | |
дата | 16.07.2009 |
автор | clumsy |
голосов | 6 |
[Disclaimer: Данная статья была переведена в рамках «Конкурса на лучший перевод статьи» на сервисе Quizful. Ссылка на оригинал находится внизу страницы.]
Одной из сложных задач для начинающего веб-разработчика является правильное использование chmod для установки прав доступа к файлам на UNIX и Linux веб-серверах. Вы должны установить правильные права на CGI скрипты, чтобы не появлялись эти ужасные сообщения «500 Server Error». В этом руководстве, мы собираемся объяснить концепцию прав, и показать вам как устанавливать права используя FTP утилиты или при помощи Telnet.
Что такое права?
На веб-сервере UNIX, каждый отдельный файл и папка, хранящиеся на жестком диске имеет ряд прав, связанных с ним, в котором говорится, кто и что может делать с файлом. У каждого файла (и папки) также есть «владелец» и «группа» связанная с ним. Если вы создали файл, то как правило владельцем файла являетесь вы и ваша группа, или группе связанной с директорией в которой вы создали файл.
Кто может изменять права?
Есть три типа пользователей которые имеют доступ к файлам — Владелец файла, члены Группы, владеющей файлом и Остальные (все прочие). В UNIX эти 3 типа пользователей обозначаются буквами U (для Владельца, или Юзер), G (для Группы), и O (для Остальных).
Какие права можно устанавливать?
Есть три основных прав доступа котороые могут быть применены к файлам и директориям:
- Вы можете читать содержимое файлов. Для каталогов — просматривать перечень имен файлов в каталоге.
- Вы можете писать (или изменять) файл. Для каталогов — создание и удаление файлов из директории.
- Вы можете исполнять (запускать) файлы, если это бинарные программы или скрпты. Для каталогов — иметь доступ к файлам в директории.
Что означают все эти буквы и цифры?!
Здесь мы рассмотрим основы. Как вы можете заметить их не так уж и много на самом деле!
Путаница часто происходит, когда Вам надо сделать установку прав на сервере. Для CGI скриптов необходимо устанавливать права что-то вроде «Chmod 755» или «Убедитесь, что файл является исполняемым». Кроме того, при использовании FTP или SSH, вы увидите множество забавных букв рядом с файлами (например, rwxrw-rw). Сейчас мы объясним, что означают эти иероглифы!
Когда вы подключаетесь по FTP на ваш веб-сервер, вы вероятно увидите что-то типа этого возле каждого файла и папки:
Эта последовательность букв drwxrwxrwx означает права, установленные для этой папки (заметим, что их часто называют атрибутами FTP программы). Давайте разберем, что каждая из этих букв означает:
Как вы можете видеть, последовательность букв разделяется на 3 колонки по 3 буквы каждая, обозначающие каждый из типов пользователей (владелец, члены группы, и все остальные).
Существует также и буква «d» атрибут слева, который говорит нам о том, что данный объект является директорией.
Если любая из этих букв заменена на дефис (-), то это означает, что разрешение не установлено. Например:
Директория, у которой есть права на чтение, запись и исполнение для владельца, чтение и выполнение для группы и только выполнение для всех остальных.
Файл, который может быть прочитан и изменён всеми, но не исполняем ни для кого.
Файл который может прочитать и изменить пользователь, а прочитать только пользователи группы и остальные пользователи.
Использование чисел вместо букв
Как мы уже раньше говорили, вас будут часто просить установить права с помощью чисел таких, как «set 755 permissions». Что означают эти цифры?
Каждое из трех чисел соответствует каждой букве (r w x) о которых мы говорили ранее. Иными словами, первое число определяет права для владельца, второе число определяет права для группы, а третье число определяет права для всех остальных.
Каждое число может принимать одно из восьми значений в диапазоне от 0 до 7. Каждое значение соответствует определенным правам на чтение, запись и выполнение «, как указано в этой таблице:
Настройка разрешений
Два самых распространённых способа установить разрешения на файлы и папки это с помощью FTP или SSH. Давайте рассмотрим первым FTP.
Установка разрешений с помощью FTP
С помощью FTP вы сможете установить права на ваши файлы, выбрав файл (в отдельном окне) и правой кнопкой мыши выбрать необходимые вм опции, такие как CHMOD или Set permissions или же выбрав в меню пункт CHMOD / Set permissions.
Как видите, довольно легко установить или убрать права на чтение, запись и выполнение для владельца, группы и других, используя флажки. Кроме того, вы можете ввести в эквиваленте 3-значный номер, если вы уже знаете как (см. предыдущий раздел). Все очень просто!
Установка разрешений с помощью SSH
Другой распространенный способ установить разрешения на файлы с помощью SSH (или консоли). Это в целом быстрее, если вы хотите изменить права на большое количество файлов одновременно (например, изменение всех. CGI файлов в папке только на вполнение).
После того, как вы подключитесь по SSH к вашему серверу, и залогинетесь в систему, перейдите в папку, содержащую файлы, которые вы хотите изменить, например:
Использование буквенного способа
Вы можете использовать буквы u (владелец / пользователь), g (группы) и o (другие), чтобы установить разрешение для каждого из типов пользователей, а также r (чтение), w (запись) и x (выполнение) для установки прав.
Вы также можете использовать «a» вместо u, g и o, что является синонимом для всех пользователей (u, g, o).
Вы можете назначить разрешения, используя либо знак плюс (+), которое означает «добавить эти права», знак минус (-), что означает «удалить эти разрешения», или знак равенства (=), что означает «изменить разрешения для конкретного случая «. Например:
chmod a+x formmail.cgi добавляет разрешение на выполнение для всех пользователей в файле formmail.cgi (другими словами, делает исполняемый файл).
chmod u=rwx formmail.cgi чтение, запсь и выполнение для владельца (разрешений для группы и для других остаются без изменений).
chmod go-w formmail.cgi удаляет запись для группы и для других, в результате чего разрешения владельца остаются неизменными.
Проверка разрешений
Вы можете проверить разрешения на все файлы и папки в текущей директории с помощью команды:
Это покажет Вам разрешение для каждого файла и папки, так же, как и FTP программы.
Если Вам понравилась статья, проголосуйте за нее
Голосов: 6 Голосовать
Источник