chmod c 4 значным параметром

Установка, обновление, настройка Linux

Модераторы: Olej, adminn

ArhiChief
Интересующийся
Сообщения: 2
Зарегистрирован: 19 апр 2012, 02:36
Контактная информация:

chmod c 4 значным параметром

Непрочитанное сообщение ArhiChief » 11 окт 2012, 17:54

Всем доброго времени суток. Как-то наткнулся на странное использование команды chmod

Код: Выделить всё

$chmod 7777 filename
При вызове справочного руководства по команде, что-либо проясняющее ситуацию найдено не было. Гугл тоже не дал результатов где используется chmod с 4 значным числом.

Собственно вопрос: что в данном случае изменяет данная команда?

Заранее спасибо.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: chmod c 4 значным параметром

Непрочитанное сообщение Olej » 12 окт 2012, 13:09

ArhiChief писал(а):Как-то наткнулся на странное использование команды chmod

Код: Выделить всё

$chmod 7777 filename
...
Собственно вопрос: что в данном случае изменяет данная команда?
Ничего странного:

Флаги прав любого файла, кроме триады rwx для каждого из: user, group, others, имеет ещё 3 битовых флага: setUID, setGID и "закрепляющий бит" ("бит прилипания"). Вот 3 группы rwx составляют 3 oct значения, а 3 общих для файла бита - ещё одно oct значение, но поскольку по умолчанию эти биты =0, то обычно они не показываются.

Слегка эти вопросы затрагиваются в рукописиИнструменты Linux для Windows-программистов (а ещё куда лучше посмотреть сильно расширенную последнюю редакцию ... здесь же на форуме: http://rus-linux.net/nlib.php?name=/MyL ... 06-09.html).

Вы можете всё это проверить и в деталях уточнить и сами:

1. Создаём обычный файл (в каком-то временном пустом каталоге):

Код: Выделить всё

bash-4.2$ touch f1
bash-4.2$ ls -lnHG
итого 0
-rw-rw-r--. 1 1000 0 окт.  12 13:01 f1
2. Установите все 3 дополнительных бита:

Код: Выделить всё

bash-4.2$ chmod 7666 f1
bash-4.2$ ls -lnHG
итого 0
-rwSrwSrwT. 1 1000 0 окт.  12 12:34 f1
Вот так это теперь поменялось.

3. А теперь смотрите этот файл в менеджере mc - F9 -> "Файл" -> "Права доступа":
mc_051.png
mc_051.png (104.24 КБ) 4222 просмотра
Наглядно?

4. Ещё у вас есть такая любопытная команда для этих дел:

Код: Выделить всё

bash-4.2$ stat -c%a f1
7666
bash-4.2$ stat f1
  Файл: «f1»
  Размер: 0         	Блоков: 0          Блок В/В: 4096   пустой обычный файл
Устройство: 801h/2049d	Inode: 792872      Ссылки: 1
Доступ: (7666/-rwSrwSrwT)  Uid: ( 1000/    olej)   Gid: ( 1000/    olej)
Контекст: unconfined_u:object_r:user_home_t:s0
Доступ: 2012-10-12 13:01:36.382763227 +0300
Модифицирован: 2012-10-12 13:01:36.382763227 +0300
Изменён: 2012-10-12 13:06:24.508282258 +0300
 Создан: -
Модифицируя формат stat (1-я команда) вы можете смотреть всё что угодно, см.:

Код: Выделить всё

bash-4.2$ man 1 stat
...

ArhiChief
Интересующийся
Сообщения: 2
Зарегистрирован: 19 апр 2012, 02:36
Контактная информация:

Re: chmod c 4 значным параметром

Непрочитанное сообщение ArhiChief » 13 окт 2012, 18:50

Благодарю за разъяснения, и последний вопрос, а для чего нужны setUID и setGID? как я понял из названия они означают установить User ID и Group ID и прочитав на Wikipedia позволяют запускать файл с правами владельца... Это разве не уязвимость? Поправьте, если я что-то не такпонял....

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: chmod c 4 значным параметром

Непрочитанное сообщение Olej » 13 окт 2012, 23:56

ArhiChief писал(а):а для чего нужны setUID и setGID? как я понял из названия они означают установить User ID и Group ID и прочитав на Wikipedia позволяют запускать файл с правами владельца... Это разве не уязвимость?
Это давно известная и описанная уязвимость.
Но это ограниченная уязвимость, права root (как правило, именно это) получает не пользователь, а запущенная пользователем программа, и эта программа не может выйти за рамки предписанных ей (её программным кодом) возможностей.

Но без возможности setUID многие необходимые возможности в системе нельзя было бы обеспечить для ординарного пользователя, система стала бы слишком грубой, неповоротливой, "кондовой" ;-) для ординарного пользователя, пользователь не захотел бы с ней работать. Начиная с того, что пользователь не мог бы сменить свой собственный пароль.

Ну, не наклеивать же на монитор этикетку с passwd для root для каждого пользователя? :lol:

Это давно обсуждённый вопрос и принятое решение для всех UNIX систем задолго до Linux.

Ответить

Вернуться в «Администрирование Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя