场景
在使用 Linux 过程中,总会意外地将文件或者文件夹存放在 /root
目录下,但是这个时候,普通用户无法访问到这个文件,即使我们将文件夹/文件移动到 /home/xxx
目录下,也会发现还是不能正常访问。
比如我们以管理员身份在 /root
目录下将一个 Music-Get/
移动到 /home/xxx
目录下,以普通用户身份执行 cd Music-Get/
,会提示 bash: cd: Music-Get/: 权限不够
!
分析
通过 sudo su
命令进入到 root 管理员模式下,执行以下两个指令查看 /root
目录的权限:
root@myvm:/# cd ~
root@myvm:~# ll
可以看到:
drwx------ 7 root root 4096 10月 23 10:42 root/
r 用数字4表示,代表读权限
w 用数字2表示,代表写权限
x 用数字1表示,代表执行权限
/root
文件夹的权限为 700(d rwx - - - - - -),拥有者为root,除管理员 root 用户外,其他用户无法访问此目录内的文件,如果想要普通用户可以访问它,其中一个办法是给这个文件夹赋一个 755以上 的权限,但是作为 /root
目录,为了安全着想,我们一般不这么做。
解决方案
方案一
以管理员身份将文件/文件夹移动到 /home/xxx
目录下,执行以下指令赋予普通用户(如:ximu)读写、访问此文件/文件夹的权限:
chown -R ximu:ximu /root/Music-Get/
其中,-R 代表处理指定目录及子目录下的所有文件,第一个 ximu 代表要赋予其使用权限,第二个 ximu 代表 ximu 用户对应的组。
此时,可以在普通用户(ximu)下对此文件夹进行操作,如果发现还是没有权限对其进行操作,使用 ll
命令查看此文件夹的权限,此文件夹至少拥有 d rwx --- ---
(即700-777)的权限才可以被普通用户操作,可以通过 chmod 700 Music-Get/
指令对 Music-Get/
目录进行授权。
方案二
以管理员身份将文件/文件夹移动到 /home/xxx
目录下,执行以下指令修改此文件/文件夹的权限属性:
chmod 700 Music-Get/
如果此文件/文件夹的拥有者是 root,需要赋予 777 的权限才行,这样普通用户才可以对此文件/文件夹进行读、写、执行操作。
总结
- 如果文件夹拥有者为 root,至少赋予其
d --- --- rwx
(即 007)的权限,才可以被普通用户读、写、执行。 - 如果文件夹拥有者为 root,其权限为 001,则只能对其进行执行操作,比如
cd
到这个目录(文件夹)里,但是进入后不能进行任何操作,比如:执行ls
命令会报 ls: 无法打开目录’.’: 权限不够, 执行vim
写文件会报 无法打开并写入文件。 - 如果文件夹拥有者为普通用户,至少赋予其
d r-x --- ---
(即 500)的权限,才可以被普通用户写、执行(500权限可以cd
到其文件夹下,执行ls
操作,但是无法写入)。 - 如果文件夹拥有者为普通用户,其权限为 100,则可以对其进行
cd
操作,但是进入到此文件夹下无法执行ls
(读)操作,亦无法对其进行写操作。