TanodTools
RU

Калькулятор chmod

Задайте права доступа Unix флажками, восьмеричным числом вроде 755 или текстом rwxr-xr-x и получите соответствующие команды chmod.

Работает полностью в браузере

Права доступа
ВладелецГруппаПрочие
Чтение 4
Запись 2
Запуск 1

Числовая
Символьная

Что разрешает этот режим

КтоДля файлаДля каталога

Работает с девятью битами прав, а также setuid, setgid и sticky, как в POSIX chmod. Реальные файлы он не читает, владельцев не показывает и не охватывает ACL, атрибуты файлов и umask. Восьмеричные режимы должны состоять из 3 или 4 цифр.

Как определить режим chmod

  1. Отметьте флажки для владельца, группы и остальных или выберите типовой вариант, например 644 или 755. Можно также ввести восьмеричное число или девять букв, и флажки подстроятся.
  2. Посмотрите краткое описание того, что может делать каждый класс с файлом и с каталогом, и прочитайте предупреждение, если оно появилось.
  3. Скопируйте числовую или символьную команду chmod. Если хотите получить команду, готовую для вставки, сначала измените имя файла.

Как хранятся права доступа к файлам Unix

Каждый файл и каталог в Unix-подобной системе несёт короткий режим: три бита прав (чтение, запись, выполнение) для каждого из трёх классов (пользователь-владелец, группа-владелец, все остальные) и ещё три специальных бита. Всего получается двенадцать бит, а восьмеричное число — это те же биты, записанные по три, поэтому цифры доходят только до 7. Девятибуквенная запись из ls -l показывает те же биты буквами.

Чтение, запись и выполнение на каталоге означают другое. Чтение позволяет увидеть список имён внутри, запись — добавлять, переименовывать и удалять записи, а выполнение — входить в каталог и обращаться к содержимому по имени. Каталог с чтением, но без выполнения показывает имена и запрещает доступ ко всему внутри, что часто становится причиной запутанных ошибок прав.

Специальные биты меняют поведение режима. Setuid и setgid заставляют программу работать с правами владельца файла или группы, а не вызвавшего её пользователя; это мощный механизм, поэтому в большинстве систем для shell-скриптов он игнорируется. Setgid на каталоге заставляет новые файлы наследовать его группу, а sticky-бит на каталоге не даёт пользователям удалять файлы друг друга. Если вы не уверены, какой режим нужен файлу, начните с ограничительного и добавляйте только то, чего требует сообщение об ошибке.

Советы

Вопросы и ответы

Как работает восьмеричное число?

Каждая цифра складывает чтение (4), запись (2) и выполнение (1) для одного класса в порядке «владелец, группа, остальные». Так, 7 — это чтение, запись и выполнение, 5 — чтение и выполнение, а 4 — только чтение. 755 даёт владельцу всё, а остальным — чтение и выполнение. Необязательная четвёртая цифра спереди хранит setuid (4), setgid (2) и sticky (1).

Что означают буквы s, S, t и T?

Они заменяют x в позиции владельца, группы или остальных. Строчная буква означает, что специальный бит установлен и выполнение тоже включено; заглавная — что специальный бит установлен, а выполнение выключено, что обычно является ошибкой. Так, 4755 — это rwsr-xr-x, а 4644 — rwSr--r--.

Чем 644 отличается от 755?

644 — обычный режим для обычных файлов: владелец может читать и записывать, остальные — только читать. 755 добавляет выполнение для всех, которое нужно программам, скриптам и каталогам. Чтобы войти в каталог, нужен бит выполнения.

Почему 777 считается опасным?

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

Что делает sticky-бит?

На каталоге он не позволяет пользователям удалять или переименовывать чужие файлы, даже если они могут записывать в этот каталог. Поэтому у общих папок вроде /tmp режим 1777. В современном Linux на обычные файлы он не влияет.

Меняет ли этот инструмент что-нибудь на моём компьютере?

Нет. Он только вычисляет число и команды. Введённые данные никуда не отправляются, а команды вы запускаете сами в терминале.