【Linux】非root用户在root用户目录下创建文件夹权限问
2024-09-30 本文已影响0人
Bogon
根据下面信息分析为什么没有权限创建目录?
$ id test
uid=1500(test) gid=1500(test) groups=1500(test)
$ ls -ld /data/
drwxr-xr-x 6 root root 61 Sep 25 16:20 /data/
$ umask
0022
$ mkdir /data/mysqlBackup
mkdir: cannot create directory ‘/data/mysqlBackup’: Permission denied
根据您提供的信息,无法创建目录的原因如下:
-
权限问题:您尝试在
/data/目录下创建mysqlBackup目录,但该目录的权限为drwxr-xr-x。这表示:- 所有者(
root)有读、写和执行权限。 - 同组用户(
root)有读和执行权限,但没有写权限。 - 其他用户(如
test)也有读和执行权限,但没有写权限。
因此,用户
test(UID 1500)没有权限在/data/目录下创建新目录。 - 所有者(
-
umask设置:您查看的
umask值为0022,这意味着新创建的目录默认将会有rwxr-xr-x的权限,这与/data/目录的权限相符。因此,umask设置不会影响您创建目录的权限。
综上所述,您无法在/data/目录下创建目录的原因是您没有写权限。要解决这个问题,您可以:
- 以root用户身份创建目录。
- 请求管理员更改
/data/目录的权限,允许其他用户写入。
# mkdir /data/mysqlBackup
# chown -R test:test /data/mysqlBackup
用户 test 无法在 /data/ 目录下创建目录的原因主要是由于该目录的权限设置和用户身份。
-
权限设置:
/data/的权限是drwxr-xr-x,具体如下:- 所有者(
root)具有读、写和执行权限。 - 同组用户(
root)和其他用户(如test)只有读和执行权限,没有写权限。
- 所有者(
-
用户身份:用户
test的 UID 是 1500,并且该用户不属于root组(gid 是 1500,与 UID 相同),因此它没有权限在/data/目录下写入。 -
写入权限:创建目录需要在父目录中具有写权限。由于
test没有对/data/目录的写权限,所以无法在该目录下创建任何子目录。
因此,test 用户无法在 /data/ 中创建目录的直接原因是缺乏必要的写入权限。