目录

ubuntu 上传服务器文件提示: Permission denied

最近在ubuntu 服务器部署应用时,用scp命令刚执行就报错“Permission denied”,一开始以为是密码输错了,反复验证后才发现是目标目录权限没配置对。

后来,发现原因无非就那几种——权限不足、用户归属不对、SSH配置限制等。

这篇把从基础排查到处理的几种方法全讲透,每种都附实操命令和避坑点,希望能够帮助大家避坑。

原因分析

Ubuntu的权限机制很严格,上传文件报错大概率是以下3种原因,排查时按这个顺序来,能快速定位问题:

  • 目标目录权限不足:要上传文件的目录(比如/var/www)当前用户没有写入权限,这是最常见的原因;
  • 文件/目录归属错误:目标目录的所有者是root,而你用普通用户(比如ubuntu)上传,即使权限显示“755”也无法写入;
  • SSH服务配置限制:通过SSH上传(scp/sftp)时,SSH配置文件禁止了该用户的写入权限,或限制了上传目录。

快速排查技巧:先执行ls -ld 目标目录路径(比如ls -ld /var/www),查看目录的权限和所有者,第一时间判断是权限还是归属问题。

解决方法:赋予目录权限

一般情况是操作的数据目录没有写权限,主要原因:

  • 当前登录用户非 root 用户,无该目录写权限
  • 当前数据目录被限制了写权限
# 建议先切换到 root 用户
su -

# 如果切换到root用户可以正常上传,则不需要执行以下步骤
# 给目录授权写权限
sudo chmod 777 <数据目录>

常见问题

Q1:执行sudo chmod后还是提示Permission denied?

大概率是目录挂载了NTFS或FAT32格式的磁盘,这类文件系统不支持Linux权限机制。

解决方法:

① 重新挂载磁盘并指定权限,比如sudo mount -t ntfs-3g /dev/sdb1 /mnt/data -o uid=ubuntu,gid=ubuntu

② 或把文件先传到Ext4格式的目录(如/var/www),再复制过去。


如果遇到特殊场景的报错,欢迎在评论区留环境信息和报错日志,一起交流解决!

版权声明

未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!

本文原文链接: https://fiveyoboy.com/articles/ubuntu-upload-err-1/

备用原文链接: https://blog.fiveyoboy.com/articles/ubuntu-upload-err-1/