文件和文件夹权限递归

文件和文件夹权限递归

我是 Ubuntu 的新用户。以前我用的是 Windows。我在每个步骤中都遇到了权限问题。实际上,我正在寻找像 Windows 一样的文件和文件夹权限。我读了几篇关于此内容的文档,但还是搞不清楚。

例如,我想获得该目录/opt/lampp/htdocs及其子目录的所有类型的权限。

我尝试了以下命令

sudo chown -R abu:abu /opt/lampp/htdocs

但什么也没发生。

有人能在这方面帮助我吗?

答案1

如果命令有效,则不会输出任何内容,除非您添加 V 选项以使其产生详细的输出。我建议您阅读chmod可用的手册这里或者通过运行man chmod,您应该确保您知道每个命令在做什么。

为了使其递归工作,您只需要传递-R递归标志 - 例如,此命令将使文件夹中的所有内容都/opt/lampp/htdocs具有权限-rwxr-xr-x(文件夹所有者可以读取、写入和执行,组和其他所有人都可以读取和执行:

sudo chmod -R 755 /opt/lampp/htdocs

请注意,我认为这适用于文件和目录,如果目录没有可执行权限,它们将无法工作(请参阅这里)。所以如果你不希望文件可执行,你将需要使用如下命令(可能以 root 身份):

find /path/to/base/dir -type d -exec chmod 755 {} +
find /path/to/base/dir -type f -exec chmod 644 {} +

如果你想知道这个命令的作用,你可以阅读 find 手册的相关部分 ( man find)。基本上,它会找到指定路径中的所有文件/文件夹并更改它们的权限。

如果您想成为文件的所有者(和组)(对于服务器和系统配置文件可能不建议这样做),以便您可以更改(写入)它们,请咨询这个问题。也可以通过加入对文件具有写权限的组,或使所有“其他”用户对文件具有写权限来实现

答案2

您看不到任何内容,因为这些命令都不是用来输出任何内容的,但这并不意味着没有做出更改;

要获得所做更改的可见反馈,您可能只需ls -l在每个受影响的目录上运行以检查其内容,但是更简洁的方法是安装tree并使用它列出每个目录/文件以及所需的属性(递归):

tree -u -g -p
  • -u:列出目录/文件以及所有者
  • -g:列出目录/文件以及组
  • -p:列出目录/文件以及权限
user@user-X550CL ~/tmp % tree -u -g -p
.
└── [drwxrwxr-x user     user    ]  dir
    ├── [-rw-rw-r-- user     user    ]  file1
    ├── [-rw-rw-r-- user     user    ]  file2
    ├── [-rw-rw-r-- user     user    ]  file3
    ├── [drwxrwxr-x user     user    ]  subdir1
    ├── [drwxrwxr-x user     user    ]  subdir2
    └── [drwxrwxr-x user     user    ]  subdir3

4 directories, 3 files
user@user-X550CL ~/tmp % find . -type d -exec chmod 755 {} \;
user@user-X550CL ~/tmp % find . -type f -exec chmod 644 {} \;
user@user-X550CL ~/tmp % tree -u -g -p                       
.
└── [drwxr-xr-x user     user    ]  dir
    ├── [-rw-r--r-- user     user    ]  file1
    ├── [-rw-r--r-- user     user    ]  file2
    ├── [-rw-r--r-- user     user    ]  file3
    ├── [drwxr-xr-x user     user    ]  subdir1
    ├── [drwxr-xr-x user     user    ]  subdir2
    └── [drwxr-xr-x user     user    ]  subdir3

4 directories, 3 files

相关内容