我的电脑上只有一个用户,而且我从未设置过任何组权限。它们什么时候有用?你能举几个例子吗?
答案1
一个很好的例子是,默认情况下 Apache Web 服务器以用户和组的身份运行www-data
。
您的用户 ID 不是www-data
,您的默认组 ID 也不是 。您不能随意更改您的用户 ID 并保留访问权限的完整性,但您可以将您的用户名添加到组并访问普通用户通常无法访问的文件。
www-data
您可以使用以下命令将您的用户 ID 添加到该组:
$ sudo adduser [username] [groupname]
执行该命令后,具有该用户名的用户将可以访问具有该组名的文件。顺便说一句,您不会使用括号。示例中的括号是为了向您显示一个可以替换的变量。
现在,您可以在 Web 服务器上创建可以编辑的文件。服务器本身也可以更新文件
顺便说一下,你可以使用以下命令从组中删除用户:
$ sudo deluser [username] [groupname]
只需查看默认可用的各种组,您就可以找到许多其他组访问示例。您可以使用以下方法查看组列表:
$ less /etc/group
您可能会注意到,您的用户名可以访问许多系统功能,例如plugdev
(允许访问您可能连接到计算机的 USB 设备的功能)。您可能还会注意到,您可以访问 cdrom 设备(组cdrom
)。
其中一个重要的是sudo
组,它允许您使用提升的/超级用户命令。
使用www-data
群组访问
我以 www-data 为例。默认情况下,Web 文件归 root 所有。其他用户无法编辑它们。您可以根据希望谁有权编辑文件来将文件指定给不同的组。然后,您可以授予这些人(包括 Web 服务器)访问权限。
由于 Web 服务器在用户和组 ID www-data 下运行,因此您可以通过将权限更改为该用户或组来授予 Web 服务器更改文件的权限。默认情况下,您的 Web 服务器无法更改任何 Web 文件。
如果您有理由让您的服务器对某些网络文件(或文件夹)进行更改,那么这将是将文件(或文件夹)更改为特定用户或组的机会。
创建群组
谢谢,考虑到您可能还想为您自己和其他用户 ID 授予对特定文件或文件夹的特定访问权限。您可以为此创建一个特定的组,并使用上述命令为该组添加访问权限。
创建组的命令行是:
$ sudo addgroup <groupname>
可能有时候你会编写一个程序来执行特定任务。你可以为该程序创建用户和组 ID。使用上述命令将程序将访问(读取和写入)的文件和文件夹放在该组中。
FTP 守护程序和协议就是一个例子。如果您希望允许人们将文件上传到您的计算机,您可以创建一个特定目录并通过用户或组授予该目录的写入权限,以便 FTP 守护程序可以写入该目录。
您不会希望 FTP 守护程序能够在系统的任何位置进行写入。因此,您需要通过用户或组访问来指定 FTP 守护程序可以读取或写入的位置。
笔记
注意$
终端命令前面的 。这是普通用户登录会话的命令提示符的指示。如果命令来自 root 登录,则默认提示符为 符号#
。以普通用户身份登录时,您必须在命令前加上 命令sudo
以提升对超级执行者的访问权限。如果您以 root 身份登录,则无需这样做。此外,查看文本并轻松查看命令需要提升权限,例如adduser
。请注意/etc/group
默认情况下是所有人可读的,因此您不需要提升的命令(root 访问权限)来读取内容。您需要它来写入它。