install
не только копирует файлы, но также меняет владельца и права доступа, а также удаляет символы отладки из исполняемых файлов. Это сочетается cp
с chown
, chmod
и strip
. Это удобный инструмент более высокого уровня, который выполняет общую последовательность элементарных задач.
Преимущество install
перед cp
установкой исполняемых файлов заключается в том, что если цель уже существует, она удаляет целевой файл и создает новый. Это избавляет от любых текущих свойств, таких как списки контроля доступа и возможности, которые можно рассматривать как как положительные, так и отрицательные стороны. При обновлении исполняемых файлов, если есть запущенные экземпляры этого исполняемого файла, они продолжают работать без изменений. Напротив, cp
обновляет файл на месте, если он есть. В большинстве вариантов Unix это происходит с ошибкой EBUSY¹, если целью является исполняемый файл; в некоторых случаях это может привести к сбою цели, поскольку он динамически загружает фрагменты кода, а изменение файла приводит к загрузке бессмысленного кода.
install
команда BSD (добавлена в 4.2BSD , т.е. в начале 1980-х) Это не было принято POSIX.
¹ «Текстовый файл занят». В этом контексте «текстовый файл» означает «двоичный исполняемый файл» по неясным историческим причинам .
Жиль "ТАК - перестань быть злым"
источник
rm
сcp
. Это означает, что он может перезаписывать используемые файлы, сначала отсоединив их (rm
).cp
один даст ошибку.Он обеспечивает стандартизированный способ управления собственностью и разрешениями файла или каталога при копировании файла или создании каталога с помощью одной команды.
источник
install
делает копию, за которой следуют chown и chmod, все отдельные системные вызовы, и не использует переименование на место (по крайней мере, для coreutils 8.13, версия GNU не использует). Если вы предполагаете, что все происходит атомарно, вы можете получить неприятный сюрприз.С помощью
install
команды мы можем скопировать файл с желанием разрешенияПример, который в основном используется при настройке ldap
Это спасет нас
chown ldap. /var/lib/ldap/DB_CONFIG
, если вы скопировали с помощью,cp
то вам также нужноchown
в этом сценарииисточник
Смотрите справочную страницу для
install
:выдержка
Другие полезные вещи, такие как установка с определенным владельцем, разрешениями и сохранение временных меток файлов, также могут быть достигнуты с помощью
install
.Рекомендации
источник
install
, а не просто сохранить существующие разрешения, как в случае сcp