最直接方式是在sftp交互会话中执行chmod命令:连接后输入“chmod 644 filename.txt”设文件权限,“chmod 755 dirname”设目录权限,“chmod u+w config.conf”用符号模式精准调整;注意sftp的chmod不总支持-r,失败时需改用ssh登录后执行。

Linux 下使用 sftp 修改远程文件读写权限,最直接的方式是在 sftp 交互会话中调用 chmod 命令——它专为远程文件权限调整设计,无需退出会话、不依赖图形界面,且适用于所有标准 OpenSSH 服务端。
sftp 内直接执行 chmod 命令
进入 sftp 会话后,权限修改就是一条命令的事:
- 连接成功后(如
sftp user@host),在提示符sftp>后输入:chmod 644 filename.txt—— 给文件设为所有者可读写、组和其他人只读; - 给目录加执行权限(否则无法进入或列出内容):
chmod 755 dirname; - 递归修改整个目录及其子项(注意:sftp 的 chmod 不支持 -R 参数,但部分新版 OpenSSH 服务端已支持,若报错请改用 SSH 登录后执行):
chmod -R 755 dirname(仅当服务端支持时有效); - 用符号模式更精准控制:如仅给所有者增加写权限:
chmod u+w config.conf。
确认路径与权限现状
操作前建议先查看当前权限和路径是否正确:
- 用
ls -l查看远程文件详细权限、属主和大小; - 用
pwd确认当前所在远程目录; - 若提示
No such file,检查路径是否拼写错误或是否需先cd进入目标目录。
权限修改失败的常见原因与应对
即使命令语法正确,也可能因系统限制而失败:
-
没有写权限修改自身权限:若文件属主不是当前登录用户,且未获 sudo 权限,
chmod会拒绝。此时需切换到对应用户或通过 SSH 执行sudo chmod; -
文件系统挂载为 noexec 或 nosuid:某些挂载选项会禁用权限位变更,需管理员检查
mount输出; - sftp 服务被限制 chmod 功能:部分定制化 SFTP 服务(如 chroot 环境或 FileZilla Server)可能禁用该命令,此时必须改用 SSH 登录后操作。
替代方案:SSH 登录后用 chmod(最稳妥)
当 sftp 内 chmod 不可用或需批量/深度控制时,推荐此方式:
- 新开终端,SSH 登录:
ssh user@host; - 运行标准 chmod:
chmod 664 /var/www/html/index.php; - 递归设权限(如 Web 目录常用):
sudo chmod -R 644 /var/www/html/*.txt && sudo chmod -R 755 /var/www/html/{css,js,img}; - 顺带修正属主(常与权限配合使用):
sudo chown -R www-data:www-data /var/www/html。











