Azure Ubuntu虚拟机修改文件夹所有权/权限后无效果,SCP上传提示Permission denied
兄弟,我之前在Azure上折腾Ubuntu VM的时候也碰到过类似的权限问题,给你几个排查方向,一步步来:
1. 先确认路径有没有写错
别笑,有时候忙起来手滑打错路径太正常了!你再核对一下/folder1/folder2是不是真的存在,执行ls -d /folder1/folder2看看能不能正确列出这个目录,避免白忙活。
2. 父目录的权限也很关键
你只给了/folder1/folder2权限,但user1得能先进入/folder1才能访问子目录啊!执行ls -ld /folder1看看权限,确保user1对/folder1至少有x(执行)权限——这个权限是让用户能“进入”目录的基础。如果父目录权限不够,哪怕子目录权限全开也没用。
3. 别用ls -l看ACL权限,用getfacl!
ls -l只能显示文件/目录的基础权限(所有者、组、其他),你用setfacl加的是扩展ACL权限,得用getfacl /folder1/folder2才能看到有没有生效。执行这个命令看看输出里有没有user:user1:rwx的条目,要是有的话说明ACL已经加上了。
4. 检查chown命令是否完整
你执行的是sudo chown user1 /folder1/folder2,这个只改了目录的所有者,没改所属组。有时候系统里user1的组不是同名组,可能会有影响?可以试试sudo chown user1:user1 /folder1/folder2把所有者和组都改成user1,再看ls -l的输出是不是变了。
5. 排查是不是挂载的存储导致权限被覆盖
如果/folder1/folder2是挂载的Azure存储(比如File Share),挂载的时候可能加了uid/gid或者umask选项,会直接覆盖你设置的权限。执行mount命令看看这个目录的挂载参数,要是有这类选项,得调整挂载配置(比如/etc/fstab)才行。
6. 最后试试手动测试权限
切换到user1用户(su - user1),然后试试在/folder1/folder2里创建一个文件(touch /folder1/folder2/test.txt),如果也提示权限拒绝,那说明问题确实在目录权限上;如果能创建,那可能是SCP的问题(比如本地用户的权限、网络端的配置)。
按这几步排查下来,应该能找到问题所在!
备注:内容来源于stack exchange,提问作者Mumfi

