chmod и с чем его едят

Последнее время мне все чаще задают новички вопрос о том, что такое chmod и какие права должны быть на файл. Об этом не мало и подробно уже написано, но и я решил написать пару слов об этой преполезнейшей вещице разделения прав доступа.

Что же это такое? chmod – это команда, позволяющая устанавливать права доступа на файлы и каталоги для разграничения этих самых прав.

Существует символьное и цифровое представление прав доступа. Пример, rwxr-xr-x или 755 (в данном случае символ «-» – это не минус, а прочерк, пустое место). «Как же их «пересчитывать», задавал я себе когда-то вопрос и долго не  мог найти никакой толковой информации по этому поводу. Тогда еще не было wikipedia и гугл многое найти еще не мог. Яндекс же скромно отмалчивался.

Но сначала надо разобраться, почему именно такое представление имеют права доступа в Unix-like ОС.

Полные права на объект представляются как RWXRWXRWX. Т.е. имеют три группы по RWX.

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

2-я группа – это права для группы (например, юзер vasya, группа users. Вот разрешения для группы users тут и указываются. Группа может не принадлежать владельцу, т.е. владелец будет в группе users2, а права будут установлены для группы users).

3-я группа – все остальные пользователи.

Все просто и понятно. Далее не намного сложнее:

R – Read

W – Write

X – eXecute (для файлов) или search (для каталогов)

Таким образом rwxr-xr-x – это все права для владельца, право чтения/запуска(листинга каталога) для группы и остальных пользователей.

Все просто. Далее разберем как пересчитать это дело в цифровое представление прав.

В принципе, тут достаточно привести такие равности:

R = 4

W = 2

X = 1

Путем сложения в каждой группе и переводим rwxr-xr-x: 4+2+1=7, 4+1=5. Получаем 755.

Или же 644 = rw-r–r–. Вот так все просто.

Поделиться этой заметкой с друзьями:

Добавь меня:

Вы можете оставить комментарий, или поставить трэкбек со своего сайта.

15 комментариев(я)

  • 27.10.2008 15:28, Dmitry сказал:

    А не проще пользоваться битовыми масками? Права доступа разбиваются на триады прав доступа для владельца/группы/всех. Соответственно в каждой триаде 1 – разрешен доступ, 0 – запрещен.
    т.е. RWX – это 111, если перевести из двоичной в десятичную систему – 7
    RW – 110 – 6
    RX – 101 – 5
    т.е. права 755 это 111 101 101 – RWX R-X R-X

    • 28.10.2008 00:14, Silver Ghost сказал:

      @Dmitry: Спасибо за подробное дополнение. Но все же,разве у меня не то же самое описано? :)

      • 28.10.2008 07:49, www2 сказал:

        Ну-ну, считайте битовые маски, а я буду пользоваться способом, в котором больше семантики.

        Нужно добавить группе право на запись – «chmod g+w file»,
        Нужно отнять все права у «остальных» – «chmod o= file»,
        Нужно владельцу дать право чтения и записи, группе добавить право чтения, а у остальных отнять права – «chmod u=rw,g+r,o= file»,
        Нужно сделать всё то же самое, но для каталога рекурсивно – соответственно «chmod -R g+w dir», «chmod -R o= dir», «chmod -R u=rw,g+r,o= dir».

        Мне совершенно не нужно напрягаться и вычислять что-то в уме, я лишь кратко записываю свои мысли.

        • 20.10.2009 09:46, Igorka сказал:

          Числа, мнемоника… Кто как привык, так и делает и спор здесь неуместен. Вот мне, например, совершенно не нужно напрягаться, чтобы, что-то вычислить. Все и так ясно :) Мне удобно пользоваться числовым представлением когда я задаю права для новых объектов, а мнемоническими спецификациями удобнее пользоваться когда изменяешь права для существующих объектов.

          • 30.10.2009 21:52, Dzutte сказал:

            Dmitry – 1 v des9tichnoy eto 9, a ne 7.
            No k vashemu schastyu chmod polzuetsa vosmerichnimi znacheniyami numeric argumentov a v vosmerichnoy 111 eto kak raz taki 7. No proshe delat kak avtor: 4=R 2=W 1=X i summiruem

            • 18.12.2009 20:21, Нейтроник сказал:

              День добрый господа.
              Я сделал величайшую ошибку: поменял права на папку wp-content/templates на 666 :(
              теперь папка не видна мне :(
              к хостеру обращаться не могу.
              какие есть варианты?
              может быть где-то прописать другой путь к темплейтам и залить папку скажем templates2?

            • 13.02.2010 19:50, mixas сказал:

              dzutte, вообще то он все правильно сказал и посчитал, 111 в двоичной системе это 7 в десятичной к вашему сведению, и так же рассчитываются все остальные числа. и получается 3 отдельные десятичные числа.

              • 04.12.2010 08:29, niva сказал:

                Права доступа можно назначить через этот онлайн калькулятор allcalc.ru/node/251

                • 04.12.2010 10:44, Silver Ghost сказал:

                  Не… Посчитать можно, а назначить – вряд ли. :)

                • 5 старых комментариев не отображается. Нажмите, чтобы отобразить все.
                (Обязательно)
                (Обязательно, не публикуется)

                Надпись "Выполнено на 99%" радует только первые три часа....