find /tmp/backup/ -name "*.php" | xargs -I % cp % /home/mysite/public_html
Каждый процесс в подобной UNIX системе, точно так же, как каждый файл, имеет владельца (пользователь, или настоящий или система "псевдопользователь", такой как daemon
, bin
, man
, и т.д.) и владелец группы. Владелец группы для файлов пользователя обычно, что основная группа пользователя, и подобным способом, любые процессы Вы запуск обычно принадлежит Вашему идентификатору пользователя и Вашему идентификатору основной группы.
Иногда, тем не менее, необходимо поднять полномочия выполнить определенные команды, но не желательно дать полные административные права. Например, passwd
управляйте доступом потребностей к теневому файлу паролей системы, так, чтобы он мог обновить Ваш пароль. Очевидно, Вы не хотите давать каждому пользователю полномочия пользователя root, именно так они могут изменить свой пароль - который, несомненно, привел бы к хаосу! Вместо этого там должен иначе временно предоставить поднятые полномочия пользователям выполнить определенные задачи. Для именно это SETUID и биты SETGID. Это - способ сказать ядру временно повышать полномочия пользователя на время выполнения отмеченной команды. Двоичный файл SETUID будет выполняться с полномочиями владельца исполняемого файла (обычно root
), и двоичный файл SETGID будет выполняться с полномочиями группы владельца группы исполняемого файла. В случае passwd
команда, которая принадлежит root
и SETUID, он позволяет обычным пользователям непосредственно влиять на содержание файла паролей, управляемым и предсказуемым способом, путем выполнения с полномочиями пользователя root. Существуют многочисленный другие SETUID
команды в подобных UNIX системах (chsh
, screen
, ping
, su
, и т.д.), все из которых требуют поднятых полномочий работать правильно. Существуют также некоторые SETGID
программы, где ядро временно изменяет GID процесса, для предоставления доступа к файлам журнала, и т.д. sendmail
такая утилита.
sticky bit
служит немного отличающейся цели. Его наиболее популярный способ использования должен гарантировать, что только учетная запись пользователя, которая создала файл, может удалить его. Думайте о /tmp
каталог. Это имеет очень либеральные полномочия, которые позволяют любому создавать файлы там. Это хорошо, и позволяет процессам пользователей создавать временные файлы (screen
, ssh
, и т.д. храните информацию состояния в /tmp
). Защищать временные файлы пользователя, /tmp
имеет липкий набор битов, так, чтобы только я мог удалить свои файлы, и только можно удалить Ваши. Конечно, корень может сделать что-либо, но мы должны надеяться, что системный администратор не нарушен!
Для нормальных файлов (то есть, для неисполняемых файлов), существует мало точки в установке битов SETUID/SETGID. SETGID на каталогах в некоторых системах управляет владельцем группы по умолчанию для новых файлов, созданных в том каталоге.
Я думаю, что Вы имеете в виду бит "SGID" файла, который не является тем же как его GID.
Вот типичный файл на моем компьютере (вывод ls-l):
-rw-r----- 1 bristol users 16 2012-07-23 11:36 file.txt
abbbcccddd <-- See explanation below.
Если Вы смотрите на первые 10 символов,
(a)-: Это - просто простой файл (в противоположность каталогу, символьной ссылке, канал и т.д....)
(b) rw-: владелец может считать и записать этот файл, но не выполнить его. Владельцем является "Бристоль", как Вы видите позже в строке.
(c) r-: члены группы, этот файл принадлежит ("пользователи" в примере) кроме владельца, могут читать, но не записать или выполнить этот файл.
(d)---: Кто-либо еще не может получить доступ к этому файлу вообще (кроме корня, конечно).
Поле GID является тем, которое говорит Вам, которые группируются, этот файл принадлежит - в этом случае "пользователи".
Поле, которое Вы, вероятно, имели в виду, на основе Вашего описания, является SGID, укусил и здесь лучшее объяснение, чем я мог придумать:
http://www.codecoffee.com/tipsforlinux/articles/028.html
Короткая версия: если исполняемый файл имеет набор битов SGID, то любой, кто не находится в группе, но может выполнить этот файл временно, получает права этой группы, в то время как программа выполняется.
Например, если Вы сделали, чтобы группа "буферизовала", который может считать и записать файлы в каталоге спулера печати, Вы не хотите просто, чтобы любой смешал с этим каталогом, но Вы действительно хотите, чтобы они смогли распечатать файлы, можно сделать некоторую программу печати, или сценарий сделали, чтобы группа "буферизовала" и установила бит SGID и когда любой запускает эту программу, программа может теперь записать в каталог спулера без человека, выполняющего его получающий полный доступ.
drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp
. Что делает abbbcccddt
средняя (буква 't')? - Я понимаю, что "d=directory", "rwx=read, пишут, выполнитесь"; но я никогда не видел 't' в конце прежде. То специальное разрешение для tmp папки?
– Kevdog777
24.07.2012, 18:31
GID, поскольку Вы нашли, Идентификационный номер группы. Это - просто удобный путь к ОС для выражения (пользователь) группы, связанной с чем-то (процесс, файл, и т.д.); вместо идентификатора потенциально длинной строки это может быть выражено как число фиксированного размера.
В значении полномочий файла четырех восьмеричных цифр (например, 0755), третья цифра указывает полномочия группы в файл. При исключении первой цифры это - вторая цифра, которая указывает полномочия группы. Обратите внимание, что файлы и каталоги рассматривают то же в этом отношении, но что точное значение каждого бита полномочий несколько неинтуитивно в случае каталогов.
Эти два понятия связаны, но служат совсем другим целям.
Что касается Вашего вопроса "даже важно установить те полномочия?"; они всегда устанавливаются на что-то, но так как в большинстве случаев начальная цифра 0 ("ничто специальное"), это имеет тенденцию быть опущенным для краткости. Необходимо ли указать, что некоторое другое значение зависит полностью от шаблона использования для рассматриваемого файла или каталога.