我必须完成以下家庭作业(在 Fedora 上):
- 组成 3 组 S,F,A
- 将一些用户添加到组中
- 为每个组创建一个文件,只有组成员可以使用。
我以 root 身份登录并在桌面上创建 mkdir SFA,然后使用 chmod 在文件夹中提供 wrx,使用 chgrp 在目录 A 中提供组 A,但如果我以组 AI 中的用户身份登录,则无法在桌面上看到目录 A,我做错了什么?
另外,如果我有一个只能由其组成员访问的文件夹,我可以在其中创建一个子文件夹并向不属于父文件夹组的用户授予该子文件夹的访问权限吗?
答案1
Gnome 中的桌面(我假设您正在使用)是用户的子目录$HOME
,具体来说$HOME/Desktop
。因此,如果您以 root 身份登录并在 root 的桌面上创建文件或文件夹,其他用户将无法在他们的桌面。另外,默认情况下,普通用户无法访问 root 的 $HOME。
不要在 root 的桌面中创建目录,而是在例如用户 A 的桌面中创建它。
现在,设置好文件夹后,如果您想让不属于父文件夹组的用户访问子文件夹,则需要允许执行(而不是读取或写入)父文件夹。访问子文件夹的唯一方法是拥有 ts parent 的执行权限。例如,运行以下命令root
:
创建一个文件夹并授予
rwx
其所有者和组成员权限,并仅x
向其他所有人授予权限:mkdir /foo chmod 771 /foo/
/foo
创建一个可供所有人自由访问的 子目录并在其中创建一个测试文件:mkdir /foo/bar chmod 777 /foo/bar/ touch /foo/bar/file.txt chmod 766 /foo/bar/file.txt
这是我们目前所创造的:
# ls -l / | grep foo
drwxrwx--x 3 root root 4096 Apr 16 14:31 foo
# ls -l /foo
drwxr--r-- 2 root root 4096 Apr 16 14:31 bar
# ls -l /foo/bar
-rwxrw-rw- 1 root root 0 Apr 16 14:47 file.txt
因此,如果我现在以不属于组的用户身份登录root
,我将无法读取或写入/foo
,但我将要能够读取和写入/foo/bar
:
$ whoami
terdon
$ groups
users
$ ls /foo
ls: cannot open directory /foo/: Permission denied
$ ls /foo/bar
file.txt
因此,为了给予任何一种(读、写或执行)访问子目录,您至少需要对父文件夹具有执行权限。