我对 Linux 还不太熟悉,正在测试它。我通过 SSH 连接到服务器,并在以ussingtestuser
身份登录时创建了一个目录。我注意到它没有创建主目录,所以我也使用 . 创建了主目录。当我执行. 时,目录被列出。root
adduser
mkdir
drwxr-xr-x 2 root root
ls -l
因此,我使用 更改了新主目录的所有者chown
。现在看起来像drwxr-xr-x 2 testuser root
,但我不知道该如何处理root
(组对吗?)。我对所有这些用户、组及其权限感到困惑。
因此,
/home/testser
属于用户testuser
,并且它可以更改其目录中的内容,但不能更改其他内容。这root
对主目录意味着什么?在这个例子中
testuser
,我们假设它属于组root
。这是否意味着它具有和的权限的并集testuser
并root
适用于此用户?另外,我注意到,对于我创建的新用户,会创建一个新组,其名称与用户名称相同。这有什么用处?
答案1
首先,您必须了解,在查看目录或文件时,传统的 Unix 权限仅知道区分:
- 用户
- 用户所在组
- 其他人
这些权限反映在rwxrwxrwx
符号中,称为模式.r
代表读取、w
写入和x
执行。它们的含义与名称基本相同,只是执行权限允许您递归目录树。
因此,/home/testser 属于用户 testuser,它只能更改其目录中的内容,但不能更改其他内容。root 表示主目录的什么?
root
这是目录所属的组。这意味着组中的任何用户都将拥有权限符号root
第二部分所指示的权限。例如,意味着组中的任何人都只能读取和列出该目录,但不能写入。*rwx
drwxr-xr-x
root
在这个 testuser 示例中,我们假设它属于组 root。这是否意味着 testuser 和 root 的权限的并集适用于此用户?
用户的权限适用于此目录,因为该目录属于他们。如果恰好testuser
也属于组root
,则该组中的权限也将适用。如果两者都不是,则只有来自第三部分的权限才适用。
假设您正在上计算机科学课,有一台计算机,alice
和都bob
属于组students
。他们每个人都有一个具有rwxr-x---
权限的主目录,所有权为alice:students
或bob:students
。这意味着任何学生都可以列出和阅读其他每个学生的内容,但他们不能修改同事的文件。
另外,我注意到,对于我创建的新用户,会创建一个新组,其名称与用户名称相同。这有什么用处?
这允许您更灵活地控制权限。有时您不希望有一个在用户之间共享的组。特别是对于主文件夹,您甚至不希望任何其他人阅读它们。这就是为什么 是个好主意,chown -R testuser:testuser /home/testuser
因为没有组权限设置(甚至rwx
一个)会造成安全问题。
* 嗯,不完全是,因为任何 root 用户都可以做任何事情,但如果组是其他的,那么上述情况就成立。