3

Бах заявляет следующее:

mkdir - это типичная программа setuid . Только процесс с корнем Effective UID может создать папку. (Раздел 7.6, Страница 229)


Я проверил разрешения на него в Ubuntu 12.04, бит setuid не установлен.

-rwxr-xr-x 1 root root 42624 Oct  2 08:55 mkdir
   ^??

Затем я проверил другие программы, которые должны иметь этот набор, такие как ping и su и они установили его.

-rwsr-xr-x 1 root root 34740 Nov  8  2011 ping
   ^---there it is 

Итак, как работает mkdir ? С тех пор, как Бах написал это, все изменилось?

3 ответа3

5

Вызов mkdir() существует с BSD 4.2. Позднее он был добавлен в SYSV 3.0. См .:http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html.

BSD 4.2 вышел в 1984 году:http://www.unix.org/what_is_unix/history_timeline.html

Если доступ к точке входа в режиме ядра в UNIX через системный вызов разрешен из пользовательского режима без ограничений, как указывает duskwuff, тогда setuid не требуется.

3

Больше нет необходимости иметь права суперпользователя для создания папки. Теперь вместо этого есть системный вызов mkdir() который любой процесс может использовать для создания каталога.

1

С тех пор, как Бах написал это, все изменилось?

Именно так. Разрешение на создание каталога в настоящее время основано на разрешении на запись в родительский каталог или на бит t (для /tmp-подобных каталогов, где каждый может создать каталог, но вы можете удалять только те файлы, которые принадлежат вам).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .