Как механизм идентификатора пользователя набора работает в Unix?

mmv является выдающейся утилитой, которая также позволит Вам делать массовое переименование файлов. (Я имел к sudo apt-get install mmv на моем компьютере для установки его.) Простой пример использования: предположите, что у Вас есть каталог файлов с расширением.JPG, что требуется измениться на нижний регистр .jpg. Следующая команда добивается цели:

mmv \*.JPG \#1.jpg

Обратная косая черта используется, чтобы показать, что подстановочный знак подходит. */JPG соответствует чему-либо расширению JPG. В "к" части команды, № 1 использует совпавший текст от первого подстановочного знака для переименования файла. Конечно, можно поместить другой путь перед № 1, чтобы также переместить файл.

12
11.12.2012, 14:00
3 ответа

Вы могли бы знать нормальное чтение, записать и выполнить полномочия для файлов в Unix.

Однако во многих приложениях, этот тип структуры разрешения - например, предоставление данных полномочий пользователя или полные полномочия считать данный файл или никакое разрешение вообще для чтения файла - слишком крупен. Поэтому Unix включает другой бит полномочий, set-user-ID бит. Если этот бит установлен для исполняемого файла, то каждый раз, когда пользователь кроме владельца выполняет файл, тот пользователь получает все чтение/запись/полномочия на исполнение файла владельца в доступе к любому из других файлов владельца!

Установить идентификатор пользователя набора укусило для файла, ввести

 chmod u+s filename

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

 chmod 4755 filename

Это также упоминается как Сохраненный UID. Файл, который запускается, который имеет UID набора, обдумал, сохраненным UID будет UID владельца файла. Иначе сохраненным UID будет Реальный UID.

Что такое эффективный uid?

Этот UID используется для оценки полномочий процесса выполнить конкретное действие. EUID может быть изменен или на Реальный UID или на Суперпользователя UID если EUID! =0. Если EUID=0, это может быть изменено на что-нибудь.

Пример

Пример такой программы passwd. При списке его полностью Вы будете видеть, что это имеет бит UID набора, и владелец является "корнем". Когда обычный пользователь, скажем "mtk", выполнения passwd, это запускается с:

Real-UID = mtk  
Effective-UID = mtk  
Saved-UID = root

Ссылка 1
Ссылка 2

10
27.01.2020, 19:55

man credentials хороший источник информации в этом случае. См. также этот questiin на ТАК. Поскольку историческое объяснение видит это заархивированное сообщение.

Вместо того, чтобы звонить "устанавливает UID" и "эффективный UID" механизм, целое понятие UIDs нужно назвать этим. Объяснение для существования различного UIDs является различными проблемами с разделением полномочия. Даже постоянные (непривилегированные) пользователи иногда должны делать вещи (ресурсы доступа), что только привилегированные пользователи могут. Для достижения этого легко программы могут изменить свой UIDs. Существует 3 типа их:

  • реальный UID - UID, который владеет процессом

  • эффективный UID - UID, который процесс в настоящее время выполняет как - это определяет фактические возможности процесса в какой-то конкретный момент. Это также что ps шоу Вы в поле USER.

  • сохраненный устанавливает UID - заполнитель, используемый для переключения назад и вперед между реальным и эффективным UIDs

Потребность в последней возникает из факта, который обычные пользователи могут только переключить между этими тремя, и ничто иное и setuid программа обычно не должны знать так или иначе, кто был пользователем, который загрузился, это (плюс реальный UID не должен быть изменен, так как это создало бы еще большую путаницу).

5
27.01.2020, 19:55

expalanation mtk является хорошим.

passwd примером является одно из расширения полномочий - passwd, всегда работает как корень, так как это должно изменить файлы, которые только базируются, позволяется измениться. Это делает это важным, что passwd исполняемый файл не быть подверженным переполнению буфера, и т.д., такой, что умный обычный пользователь смог помещать его в использование, для которого, не был предназначен.

Другое объяснение состоит в том, чтобы защитить пользователя таким же образом, поскольку Вы могли бы использовать su если Вы зарегистрированы как корень - чтобы уменьшить или ограничить Ваши полномочия для определенные задачи, не наращивают их. Например, если у меня будет разрешение запустить сервис демона, который не требует доступа к моему материалу и имеет его собственный материал, который является всем, в чем требуется (например, регистратор), выполняя его, то suid будет означать, что это только имеет доступ к тому материалу и не моему или любому elses.

Обратите внимание, что возможно установить uid программно, даже если suid укусил, не установлен на исполняемом файле, однако, который не будет работать на эскалацию. Т.е., если Вы - обычный пользователь и пишете программу, которая устанавливает uid в какой-то момент сам, та программа не может переключиться на корень. Apache прокладывает себе путь, я верю. Это обычно запускается корнем и имеет один процесс, что затем дети ветвлений, которые переключают uid на non-privelleged пользователя (например, "httpd"). Те дочерние процессы - то, что делает фактическую работу веб-сервера.

1
27.01.2020, 19:55

Теги

Похожие вопросы