It-e.RU
Цифровой двигатель вашего бизнеса.

Права в unix

Права в unix

Эта небольшая заметка более широко осветит использование прав в unix. И, возможно, позволит вам взглянуть на безопасностью в юникс немного иначе.


Эта небольшая заметка более широко осветит использование прав в unix. И, возможно, позволит вам взглянуть на безопасностью в юникс немного иначе.

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

А можно использовать расширенные права:

  • 0 - обычные права доступа
  • 1 - бит устойчиивости. Его можно применить только для директории. В такой директории владелец имеет право удалять, переименовать только те файлы, которыми он владеет, причем при наличии права писать в эту директорию.
  • 2 - установка идентификатора группы (setgid). Когда такой бит установлен для исполняемого файла, файл исполняется в правами группы, владеющей файлом, то есть не с правами запустившего файл.
  • 3 - является сокупностью первых, то есть права 3755 устанавливают бит устойчивости и идентификатор группы.
  • 4 - установка идентификатора пользователя (setuid). Когда такой бит установлен для исполняемого файла, файл исполняется в правами пользователя, владеющего файлом, то есть не с правами запустившего файл.

Для установки используем символьный метод:

  • chmod u+s - установим setuid бит.
  • chmod g+s - установим the setgid бит.
  • chmod u+t - установим бит устойчивости.

или цифровой:

  • chmod 0777 - обычные права доступа: чтение/выполнение/запуск для всех.
  • chmod 1777 - установим бит устойчивости и чтение/выполнение/запуск для всех.
  • chmod 4777 - установим setuid и чтение/выполнение/запуск для всех.
  • chmod 2777 - установим setgid и чтение/выполнение/запуск для всех.

Можно комбинировать:

  • chmod 6777 - setuid/setgid и чтение/выполнение/запуск для всех.

Теперь просмотрите права листинг директории (ls -l), setuid/setgid отображается как 's', запуск программ и их результат выолнения будет с правами либо группы, либо владельца. Sticky bit позволяет совершать манипуляции с файлами только владельцу. Хороший пример - это директория /tmp, в которой запись открыта для всех пользователей, но не желательно удаление чужих файлов.

  • -rws--S--x 1 max max 6335 Jan 12 09:47 test

Первая 's' - это setuid. Вторая 's' - это setgid. Если sticky bit был установлен, вы увидите 't' в последней позиции строки индикации прав такой как 'x' в данном случае. В примере вторая 's' показывает, что у группы нет прав на выполнение файла.Таким образом без setuid\setgid права были бы чтение/выполнение/запуск для владельца и запуск для всех или (-rwx-----x). Но теперь если другой пользователь запишет в директорию, то результат записи будет не с правами писавшего, а с правами владельца директории.

Используйте setuid,setgid и sticky bit аккуратно, т.к это не правильное использование может примвести к возникновению проблем безопасности в системе.


Пожалуйста, уважайте труд автора, при копировании материалов сохраняйте ссылку на источник!

Комментарии (0)



Добавление комментариев закрыто.