如何防止新用户做任何危险的事情?

Ask*_*man 31 server users user-management

我最近在我的服务器上安装了 Ubuntu 服务器以作为新用户试用 linux。我遵循了有关如何设置 Web 服务器的教程,其中说我需要chmod 777Web 服务器目录,以便可以将其写入。

无论如何,我为一个家伙创建了一个新帐户,让他可以查看服务器上我放置在他的主目录中的一些文件:

adduser francis
Run Code Online (Sandbox Code Playgroud)

创建帐户后,我检查了他的访问权限

groups francis
Run Code Online (Sandbox Code Playgroud)

它说“弗朗西斯:弗朗西斯”,所以我认为这不是问题,默认情况下,ubuntu 没有将他包含在任何组中,这是有道理的,它在安全方面创建了他没有额外的权限,所以一切都很好。一周后,在绝对而彻底的恐惧中,我发现即使他无法执行 SUDO 之类的操作或在系统目录中乱七八糟,他也可以完全访问服务器上的几乎所有其他内容。例如,即使该目录不在他的主目录中,他也可以完全读/写我在 /var/www 上的 Web 服务器文件(因此密码存储在 php 配置文件等中),而且我从未将他添加到任何可能访问该目录,在执行 adduser 之后,我也没有授予他任何对任何内容的特殊访问权限。

无论如何,这里发生了什么?我如何阻止他访问任何重要的东西?他不应该能够访问像 /media 或 /var/www 这样的东西。我认为默认情况下会阻止新用户做任何危险的事情或窥探他们不应该做的事情。

总而言之,我只需要允许他访问我手动指定的目录 + 到他需要正常运行的目录(他的主目录、vim、nano 等)

谢谢

Jou*_*eek 40

这是设计好的。而且更糟。chmod 777 的意思是...“我希望所有者、他组中的任何人以及任何人都拥有读取、写入和执行权限”

这是非常可怕的。

对于 Web 服务器,777 不是最佳选择。755(所有者具有完整权限组,其他人具有读取 + 执行)是一个常见的默认值,但从您所说的来看,您至少希望所有者(Web 服务器用户)具有读写权限,或者可能具有读写权限组,用户没有权限。关于服务器故障的适当权限级别有更完整的问题,但请考虑 640 或 740 之类的内容。

也就是说,您也可以将用户置于他自己的小世界中 - 设置 chroot 以将用户保留在系统他自己的空间中。有一些指南可以用于执行此操作-例如oli 在这里的出色答案,这可能是您的选择,具体取决于您的需要。

  • 小点:“所有者,他所在组中的任何人......” - 文件所有者不一定必须属于文件组。 (4认同)
  • 这种情况的历史术语是“**世界**可读/可写”。 (3认同)
  • 好的。我喜欢你提到了关于 servfault 的规范答案。 (2认同)

Aar*_*ron 19

本质上,它分解如下:

R = 4 (read)
W = 2 (write)
X = 1 (execute)
Run Code Online (Sandbox Code Playgroud)

因此,读取权限仅为 4,读取和写入权限为 6,读取和执行权限为 5,所有(读取、写入、执行)权限均为 7。这就是您计算所有者、所有者组的权限八位字节值的方式,或者大家。

当将这些权限应用chmod到文件或目录位置时,上面计算的数字是这样应用的,所有者、组和每个人都有一个八位字节:

     $ chmod _ _ _ <file or directory>
             | | |
owner--------  | |
owner's group--  |
everyone---------
Run Code Online (Sandbox Code Playgroud)

因此,如果我想为自己和我的组授予对我拥有的文件夹的读取、写入和执行权限,但我不希望每个人都能够读取它,我会使用:

$ chmod 770 myDirectory
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看chmod手册页

$ man chmod
Run Code Online (Sandbox Code Playgroud)


小智 5

正如其他人所提到的,您不应将权限设置为 777

这是我使用的有用参考表。

+-----+---+--------------------------+
| rwx | 7 | Read, write and execute  |
| rw- | 6 | Read, write              |
| r-x | 5 | Read, and execute        |
| r-- | 4 | Read,                    |
| -wx | 3 | Write and execute        |
| -w- | 2 | Write                    |
| --x | 1 | Execute                  |
| --- | 0 | no permissions           |
+------------------------------------+
You can use the octal notation, where the three digits correspond to the user, then group, then other. 
Perhaps this might help 
+------------+------+-------+
| Permission | Octal| Field |
+------------+------+-------+
| rwx------  | 700  | User  |
| ---rwx---  | 070  | Group |
| ------rwx  | 007  | Other |
+------------+------+-------+
Run Code Online (Sandbox Code Playgroud)