Инструменты пользователя

Инструменты сайта


chmod

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

chmod [2015/10/02 07:29] (текущий)
Строка 1: Строка 1:
 +====== chmod ======
  
 +  * [[umask]] — функция изменяющая права доступа,​ которые присваиваются новым файлам и директориям по умолчанию.
 +  * [[find]] - наиболее эффективное средство поиска и «массовой обработки» файлов. Удобно использовать в связке с chmod.
 +
 +Права устанавливаются командой chmod. Команда chmod поддерживает установку прав как в восьмеричном представлении,​ так и в символьном (маска режима доступа). ​
 +
 +  * Назначение прав всем объектам текущего каталога,​ включая подкаталоги.<​file bash>
 +chmod -R 755 *
 +</​file>​
 +  * Значениями по умолчанию являются (umask 0022):<​file bash>
 +для файлов:​ 644 (-rw-r--r--)
 +для директорий:​ 755 (drwxr-xr-x)
 +</​file>​
 +  * **Использование chmod.** Рекурсивно изменить права доступа файла_или_папки <file bash>
 +chmod -R 755 имя_файла_или_папки ( 7 - хозяин,​ 5 - группа,​ 5 - другие)
 +</​file>​
 +  * Сменить рекурсивно права на 640 на все файлы начиная с текущей директории:​ <code bash>​find . -type f -exec chmod 640 {} \;
 +</​code>​
 +  * Сменить рекурсивно права на 750 на все директории начиная с текущей директории:<​code bash>​find . -type d -exec chmod 750 {} \;</​code>​
 +  * Поиск файлов с установленным [[SUID]] -битом. Для GUID perm будет 02000<​file bash>
 +find / -type f -perm -04000 -ls
 +4335260 ​ 340 -rwsr-xr-- ​  1 root     ​dip ​       347296 кві 21 20:35 /​usr/​sbin/​pppd
 +4326414 ​  20 -rwsr-sr-x ​  1 libuuid ​ libuuid ​    18904 вер ​ 2 21:35 /​usr/​sbin/​uuidd
 +...
 +</​file>​
 +  * Рекурсивно удалить атрибуты [[SUID]] и SGID:<​file bash>
 +chmod -R u-s,g-s directory
 +</​file>​
 +
 +**Популярные цифровые значения**:​
 +
 +  * 777 (-rwxrwxrwx) Каждый пользователь может читать,​ редактировать и запускать на выполнение
 +  * 1555 (-r-xr-xr-t) Каждый пользователь имеет право читать и запускать на выполнение;​ удалить файл может только владелец этого файла. Символ **t** обозначает Sticky бит, который указывает,​ что удалять файлы в этой директории может только владелец этого файла.
 +  * 2555 (-r-xr-sr-x) **GUID** Каждый пользователь имеет право читать и запускать на выполнение с правами группы(user group) владельца файла.
 +  * 2775 (drwxrwsr-x) **GUID** Созданные новые файлы всегда будут получать ту группу,​ какая стоит у папки, в которой они находятся. За это отвечает бит 2 в правах на папки. Это важно, если с этим файловым пространством (сайтом) работают несколько пользователей.
 +  * 4555 (-r-sr-xr-x) **SUID** Каждый пользователь имеет право читать и запускать на выполнение с правами владельца файла
 +
 +<note tip>​Символ **s** - означает [[SUID]]-бит. Программа с этим битом выполняется от того пользователя,​ которому принадлежит файл. Например,​ если ваша программа называется **daemon** и вы хотите запускать его от пользователя user группы users, то сделать надо примерно следующее:<​file bash>
 +chown user:users daemon
 +chmod ug+sx daemon
 +</​file></​note>​
 +====== Права доступа в Linux/Unux ======
 +
 +  * Источник:​ [[http://​help.ubuntu.ru/​wiki/​%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B0%D0%B2%D0%B0_unix|Права доступа Unix, SUID, SGID, Sticky биты]]
 +  * Источник:​ [[http://​www.linuxcenter.ru/​lib/​books/​kostromin/​gl_04_05.phtml|Права доступа к файлам и каталогам]]
 +
 +Поскольку [[Linux]] — система многопользовательская,​ для нее был разработан механизм разграничения доступа.
 +
 +В основе механизмов разграничения доступа лежат имена пользователей и имена групп пользователей. В Linux каждый пользователь имеет уникальное имя, под которым он входит в систему (логируется). Кроме того, в системе создается некоторое число групп пользователей,​ причем каждый пользователь может быть включен в одну или несколько групп. Создает и удаляет группы суперпользователь,​ он же может изменять состав участников той или иной группы. Члены разных групп могут иметь разные права по доступу к файлам,​ например,​ группа администраторов может иметь больше прав, чем группа программистов.
 +
 +<note important>​Хочется отметить,​ что пользователь '​root'​ всегда сможет получить доступ к Вашим файлам (вне зависимости какие были выставлены права) т.к. это супер-администратор (суперпользователь).</​note>​
 +
 +В индексном дескрипторе каждого файла записаны имя так называемого владельца файла и группы,​ которая имеет права на этот файл. Первоначально,​ при создании файла его владельцем объявляется тот пользователь,​ который этот файл создал. Точнее — тот пользователь,​ от чьего имени запущен процесс,​ создающий файл. Группа тоже назначается при создании файла — по идентификатору группы процесса,​ создающего файл.
 +
 +
 +Посмотреть права доступа на объекты можно командой ls или stat (которая выводим например права доступа сразу в символьном и цифровом виде). Утилита **ls**<​file bash>
 +ls -l /bin/ls
 +-rwxr-xr-x 1 root root 110080 Янв 14  2015 /bin/ls
 +</​file>​Утилита **stat**<​file bash>
 +stat /bin/ls
 +Доступ:​ (0755/​-rwxr-xr-x) ​ Uid: (    0/    root)   Gid: (    0/    root)
 +</​file>​
 +
 +<file bash>
 + ​- ​   rwx    r-x    r-x
 +---  -----  -----  -----
 + ​| ​    ​| ​     |      |
 + ​| ​    ​| ​     |      +----  Права доступа для всех остальных
 + ​| ​    ​| ​     |      ​
 + ​| ​    ​| ​     +----------- ​ Права доступа для группы
 + ​| ​    |
 + ​| ​    ​+------------------ ​ Права достува для владельца (read, write, execute)
 + |
 + ​+------------------------ Тип файла. "​-"​ означет,​ что это обычный файл.
 +                           "​d"​ - директория. "​l"​ - ссылка
 +</​file>​
 +
 +Для назначения прав используются три группы флагов,​ первая определяет права для владельца,​ вторая - права для основной группы пользователя,​ третья - для всех остальных пользователей в системе.
 +
 +**Для файлов**:​ r - право на чтение из файла; w - разрешает запись в файл (в частности перезапись или изменение);​ x - позволяет исполнить файл.
 +
 +**Для каталогов**,​ флаги r w x имеют несколько отличный смысл: r - позволяет читать только имена файлов в каталоге;​ x - позволяет иметь доступ к самим файлам и их атрибутам (но не именам);​ w имеет смысл только в сочетании с x, и позволяет (в дополнение к x) манипулировать с файлами в каталоге (создавать,​ удалять и переименовывать). w без x - не имеет никакого эффекта.
 +
 +
 +<note tip>​Для полноценного просмотра каталога,​ необходимы права на чтение каталога и доступ к файлам,​ а главное к их атрибутам,​ т.е. минимальные разумные права на каталог - 5 (r-x). Прав 4 (r–) хватит только на просмотр имен файлов,​ без атрибутов,​ т.е. не будет известен ни размер файла, ни его тип (что даже не позволит отличить директории от файлов).
 +
 +На практике для каталогов используется только три режима:​ 7 (rwx), 5 (r-x) и 0 (—).</​note>​
 +<note tip>​Очень любопытный режим доступа к каталогу - 3 (-wx): он позволяет делать в директории все, что угодно,​ но не позволяет прочитать имена объектов в директории. Т.е. если вам не известны названия объектов в этом каталоге,​ то вы сделать с ними ничего не сможете (даже удалить по маске * т.к. маску не к чему применять - имена то недоступны).
 +
 +В каталоге с режимом доступа 3 (-wx) можно создавать новые, переименовывать и удалять файлы и каталоги (если вы знаете их имя); читать,​ изменять,​ запускать файл (если достаточно на него прав, и опять же - вы знаете его имя). Можно даже менять права доступа на файлы и каталоги (если вы знаете имя). Но самое интересное,​ что если вы сможете перейти (по cd5)) в подкаталог такого каталога (а для этого вам опять нужно знать его имя), то там у вас будет «все в ожуре» (если конечно у этого подкаталога будет нормальный режим доступа).
 +
 +Никакой рекурсивный поиск/​удаление тоже не сможет залезть внутрь такого каталога - ему ведь нужны названия - а их из такого каталога - никак не получить.
 +
 +Но не надо думать,​ что такой каталог полноценно заменяет крипто-контейнер (т.е. может использоваться для хранения очень секретных данных). Да, имен объектов из такого каталога никак не получить,​ однако если попытаться создать объект с именем,​ которое уже существует,​ то такая операция закончится неудачей (т.е. мы получим подтверждение,​ что такое имя уже есть). Так же можно пытаться открыть (как файл или как каталог) объект с произвольным именем,​ если такого имени нет, то мы получим ошибку. Безусловно имя может быть очень длинным и шансы угадать его могут быть не велики,​ но не надо забывать,​ что права доступа могут сменить как владелец каталога так root. Да и пути доступа могут сохраниться в различных логах и файлах истории. </​note>​
загрузка...
chmod.txt · Последние изменения: 2015/10/02 07:29 (внешнее изменение)