首页/系统/Linux 运维命令速查/install 复制文件并设定权限
文件与目录76 条

install 复制文件并设定权限

比 cp 更适合部署:一次完成「复制 + 权限 + 属主 + 建目录链」,脚本里安装二进制与配置文件的标配。

Linux 运维命令速查系统更新于 2026-10-13

install 是什么

install 是部署场景下比 cp 更合适的复制命令:它在一次调用里完成复制、设定权限、指定属主属组,还能顺手创建父目录链。写部署脚本时,把「复制二进制到 /usr/local/bin 并设为 0755」「把配置放到 /etc 并设为 0644、属主 root」「创建数据目录并给应用用户 0750」这些动作各压成一行,既短又不留隐患。

基本信息

用途复制文件或创建目录,同时设定权限与属主
语法install [选项] 源文件... 目标;install -d 目录... 用于建目录
常用选项-m 权限、-o 属主、-g 属组、-d 视为目录、-D 自动创建父目录、-t 指定目标目录
所属GNU coreutils(copy 家族,与 cp 同源)

典型使用场景

  • 部署二进制:复制到 /usr/local/bin 并一次设成 0755,省掉后续 chmod
  • 安装配置文件:放到 /etc 下并设成 0644、属主 root,避免权限过宽
  • 创建数据目录:用 -d 建目录并直接带权限与属主,替代 mkdir 加 chmod 加 chown 三步
  • 目录链补齐:目标路径层级很深时用 -D 自动创建,脚本更短
  • 批量铺配置:用 -t 指定目标目录,一次安装多个文件

常用示例

常用示例
install -m 0755 app /usr/local/bin/app                   # 部署可执行文件
install -m 0644 app.conf /etc/app/app.conf                # 配置文件设为只读可复制
install -d -m 0755 -o www -g www /var/www/uploads         # 建目录并设权限与属主
install -D -m 0644 conf/app.conf /etc/app/conf.d/app.conf # 父目录不存在时自动创建
install -m 0644 -t /etc/app/conf.d/ a.conf b.conf         # 多个文件装到同一目录
install -b -m 0644 next.conf /etc/app/app.conf            # GNU 版本可留备份

常用选项对照

选项作用注意
-m 权限设置目标文件或目录的权限八进制写法,如 0755、0644
-o / -g设置属主与属组需要足够权限,通常以 root 执行
-d把参数当目录处理一次可建多个目录,替代 mkdir 加改权限
-D自动创建目标路径的父目录部署脚本里很常用
-t 目录指定目标目录,源码可多个多个文件同目录时比逐个写更省事
-b覆盖前留备份GNU coreutils 支持,移植时需确认
install 覆盖目标文件时不询问,这也是它在脚本里受欢迎的原因。但用于配置文件时最好先做差异对比或启用备份,避免把本地调整无声地覆盖掉。
替换正在运行的二进制时,进程仍持有旧文件(旧的 inode),要重启服务才会加载新版本。这一点与 cp 覆盖的行为一致,部署后记得配套重启。

易错点

  • 把 install 当成 cp 用却忽略权限参数:目标文件会带上默认权限,部署出的可执行文件可能没有执行位
  • 覆盖生产配置不留备份:install 不询问直接覆盖,脚本里应显式备份或启用备份选项
  • 替换运行中的二进制后不重启服务:进程仍用旧文件,看起来「部署没生效」
  • 用 -o 指定不存在的用户:命令会直接失败,部署流程里应先确保相关系统用户已创建

数据来源与参考

  • man 1 install(GNU coreutils 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌