Windows通过scp给Linux传完文件夹,权限错误怎么办
一般是文件夹被错误设置执行权限。
这是一个非常经典的问题。从 Windows 复制文件到 Linux 时(尤其是通过 SCP 或解压 zip),权限位往往会丢失或被全部设置为 777(即全部变成绿底蓝字)。
切记不要简单地执行 chmod -R 755,因为这样虽然修好了文件夹,但会让所有的源代码文件(如 .c, .py, .txt)都变成“可执行程序”(绿色字体),这非常不规范,也会在编辑器里引起困扰。
你需要把文件夹和文件分开处理。请在 code 文件夹所在的目录下,依次运行以下两条命令:
第一步:恢复所有“文件夹”的权限
文件夹需要有“执行”权限才能被进入(cd),所以标准权限是 755。
find code/ -type d -exec chmod 755 {} +
code/:你的目标目录名。-type d:只查找目录(Directory)。-exec chmod 755 {} +:将找到的目录权限修改为 755。
第二步:恢复所有“文件”的权限
普通的源代码或文本文件不需要“执行”权限,所以标准权限是 644(所有者读写,其他人只读)。
find code/ -type f -exec chmod 644 {} +
-type f:只查找文件(File)。-exec chmod 644 {} +:将找到的文件权限修改为 644。
特殊情况补充
如果你在这个文件夹里包含脚本文件(例如 .sh 脚本或编译好的二进制程序),执行完第二步后,它们会变得不可运行。你需要单独把它们加回执行权限:
chmod +x code/your_script.sh
验证
执行完上述两步后,再次输入 ls -l code/,你应该会看到:
- 文件夹变成了深蓝色(无背景色)。
- 文件变成了普通白色或灰色(取决于你的配色方案)。
- 那些刺眼的绿色背景应该全部消失了。
