Linux 的文件权限系统是其安全性的核心基石,用于控制谁(用户/用户组)可以对文件或目录进行什么操作(读/写/执行)。理解它至关重要。核心概念分为三部分:
1.权限类型 (What can be done?):
r(Read - 读取):cat / less 查看)。ls 列出文件)。w(Write - 写入):x(eXecute - 执行):./script.sh)。cd)并访问其内部的文件/子目录(能否访问内部文件还取决于文件本身的权限)。这是访问目录内容的基础。2.权限对象 (Who can do it?): 每个文件/目录都有三组权限,分别针对三类对象:
u(User/Owner - 文件所有者): 创建该文件/目录的用户。通常拥有最高权限。g(Group - 所属用户组): 文件/目录所属的用户组。组内成员共享这组权限。o(Others - 其他用户): 系统中既不是文件所有者,也不属于文件所属用户组的所有其他用户。3.权限表示法 (How is it shown?):
r, w, x, - 表示。使用 ls-l 命令查看文件/目录的详细信息时,第一列显示的 10 个字符就是权限信息:- 普通文件, d 目录, l 链接等)。rwx)。r-x)。r--)。-rw-r--r--:普通文件;所有者可读写,组和其他用户只能读。drwxr-x---:目录;所有者可读、写、进入;组用户可读、进入;其他用户无任何权限。u, g, o) 视为一个数字:r = 4w = 2x = 1- = 0u, g, o 三组的权限值按顺序组合成一个三位数。rwxr-xr--:r+w+x = 4+2+1 = 7r+-+x = 4+0+1 = 5r+-+- = 4+0+0 = 4rw-------:600 (u=6, g=0, o=0)rwxr-xr-x:755 (最常见的可执行程序/目录权限)rw-r--r--:644 (最常见的普通文件权限)关键命令:
ls-l (查看当前目录) 或 ls-l filename/dirnamechmodchmod[ugoa][+-=][rwx]filenameu 所有者, g 组, o 其他, a 所有(ugo)+ 添加权限, - 移除权限, = 设置精确权限chmod u+x script.sh:给所有者添加执行权限。chmod go-w secret.txt:移除组和其他用户的写权限。chmod a=rw report.log:设置所有人为可读写(无执行)。chmod NNN filename (NNN 是三位数字)chmod755app:设置权限为 rwxr-xr-x。chmod600.ssh/id_rsa:设置私钥为仅所有者可读写 (非常重要!)。chown username filename:修改文件所有者。chown username:groupname filename:同时修改所有者和所属组。chgrp groupname filename:修改文件所属组。(通常用 chown 更便捷)该用户反馈其正在使用服务器的Rstudio,突然发现工作目录下的文件全部丢失,就是突然就都没有了
然后管理员在命令行对用户目录进行检查时发现,文件实际上是存在的,并且不是空文件,整个文件夹占用磁盘空间是 3.4G:
进一步检查发现,该文件夹的权限有点不同,一般文件夹用户是有可执行权限的,但是截图所示文件夹的权限为
drw-r--r-- 怀疑是用户不小心修改了文件夹权限,导致文件夹不可执行,则用户在Rstudio中无法查看到该文件夹以及其子文件。
解决方法就会说,重新把文件夹权限修改为 755 即 drwxr-xr-x,就可以正常打开,数据也没丢失