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


31

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

无论如何,我为一个花花公子创建了一个新帐户,以允许他查看放置在他的主目录中的服务器上的一些文件:

adduser francis

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

groups francis

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

无论如何,这是怎么回事?我该如何杀死他获取任何重要信息?他应该不能访问/ media或/ var / www之类的东西。我认为默认情况下,新用户无法进行任何危险的操作或窥探他们不应该去的地方。

综上所述,我只需要允许他访问我手动指定的目录,即可访问他需要正常运行的目录(他的主目录,vim,nano等)。

谢谢


30
您正在执行chmod 777并询问为什么每个人都可以在那里读写?阅读chmod的手册页
Anwar

16
是的,由于多种原因,777是您的问题。
Android开发

21
@Askerman-不,当您输入777时,每个人都可以访问所有内容,请读以下内容:linux.com/learn/understanding-linux-file-permissions
Android Dev

11
我们都会犯错,尤其是当我们在一个全新的环境中学习时。这是一个值得学习的好方法,当您使用基于Linux的OS时,了解一下Windows中的工作原理绝对是明智的。还原您的权限后,您应注意,用户无法更改他们不应该执行的任何操作。如果您在chmod其他地方使用过,则可能会遇到其他问题。
Arronical

8
仅供参考-我赞成这个问题,因为它实际上是新人们发现的一个好问题。这种误解可能比我们想像的更为普遍。这也是一个很好的例子,说明了为什么您不应该仅复制在Internet上找到的命令(即使在此处)而不知道它们的作用。
亚伦

Answers:


40

这是按设计的。更糟的是。chmod 777的意思是……“我希望所有者,其组中的任何人以及所有具有读取,写入和执行权限的人”

太可怕了。

对于Web服务器,777不是最佳选择。755(所有者具有完全权限组,其他人具有读取和执行)是常见的默认设置,但是从您所说的开始,您至少要对所有者(Web服务器用户)进行读写或执行。组,并且没有用户权限。关于serverfault的适当权限级别还有一个更完整的问题,但请考虑类似640或740的问题。

也就是说,您还可以将用户置于自己的小世界中-设置chroot以将用户保留在系统自己的空间中。有很多指南可以做到这一点-例如,oli在这里的出色回答可能是一个选择,具体取决于您的需求。


4
关键点:“所有者,其组中的任何人……”-文件所有者不一定必须属于该文件组。
alex_d

2
真好 我喜欢您提到有关servfault的规范答案。
极客长老

3
这种情况的历史术语是“ 世界可读/可写”。
哈兹

19

本质上,它像这样分解:

R = 4 (read)
W = 2 (write)
X = 1 (execute)

因此,仅读许可权将为4,读和写将为6,读和执行将为5,所有(读,写,执行)为7。这就是计算所有者,所有者组的许可八位字节值的方式。或所有人。

将这些权限chmod应用于文件或目录位置时,上面计算出的数字将这样应用,每个八位字节分别用于所有者,组和每个人:

     $ chmod _ _ _ <file or directory>
             | | |
owner--------  | |
owner's group--  |
everyone---------

因此,如果我想让我自己和我的小组对我拥有的文件夹具有读取,写入和执行权限,但是我不希望所有人甚至都能够读取它,则可以使用:

$ chmod 770 myDirectory

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

$ man chmod

如果您不记得要以正确的顺序添加正确的权限的位,也可以使用可能更容易阅读的chmod ugo+rwx <...>。字符代表ü SER, roup,Ô疗法; [R EAD,w ^仪式,电子X ecute。您可以使用“-”删除(例如:)chmod go-wx <...>。请注意,这只会添加或删除您键入的内容。chmod ugo+rwx <file>; chmod u+rwx <file> 不会删除群组/其他用户的访问权限。
ReactiveRaven16年

@ReactiveRaven很好。但是OP显然对所做的chmod 777事情感到困惑,所以这就是我指导解释的地方。
亚伦

@Zanna大家好!
亚伦

6

正如其他人提到的那样,您不应将权限设置为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 |
+------------+------+-------+

1
真好!这对视觉学习者(如我)有很大帮助。
亚伦

3

为了与您登录的人共享文件,您不需要做任何特别的事情。在默认的Debian安装中,用户可以访问彼此的主目录。

例如,

$ ls -ld ~
drwxr-xr-x 65 zwets zwets 4096 Sep 29 12:06 /home/zwets

我系统上任何用户的主目录权限都被读取(r)访问(x)。只有我另外具有写(w)访问权限。

同样,umaskUbuntu上的默认设置是默认情况下用户创建的文件和目录是世界可读。你可以设置umask077,如果你不希望出现这种情况。

这意味着在默认设置中,如果用户you希望~/README.txt与我共享文档,则you无需执行任何操作。我可以简单地查看它:

$ who am i
zwets    pts/26       2016-09-29 08:05 (:pts/19:S.6)
$ ls -l ~you/README.txt
-rw-r--r-- 1 you you 24 Sep  8 11:23 /home/you/README.txt
$ cat ~you/README.txt
You's shared thoughts.

我无法编辑或删除文件,但可以将其复制到我具有写许可权的位置。然后我拥有副本:

$ echo "Adding my thoughts." >> ~you/README.txt
bash: /home/you/README.txt: Permission denied
$ rm ~you/README.txt
rm: remove write-protected regular file '/home/you/README.txt'? yeah!
rm: cannot remove '/home/you/README.txt': Permission denied
$ cp ~you/README.txt ~zwets
$ ls -l ~/README.txt
-rw-r--r-- 1 zwets zwets 24 Sep  29 14:09 /home/zwets/README.txt

正如我在AskUbuntu上的另一个答复中所解释的,默认情况下,大多数系统在世界范围内都是有充分理由的。但是,在共享系统上,使非所有者无法访问主目录可能很有意义:

$ chmod o-rwx ~
$ ls -l ~
drwxr-x--- 65 zwets zwets 4096 Sep 29 12:06 /home/zwets

...由于许多用户显然不知道默认值-QED ;-)。让用户知道文件权限不能保护机密会更明智。


1

在Ubuntu中,任何具有超级用户特权的用户都将添加到“ sudo”组中,请检查它以确保没有其他用户添加到该组中。

要保护其他用户的文件和目录安全,您可以按照上述答案中Journeyman Geek先生的建议设置权限。

您还可以使用特殊权限来保护文件和目录免受他人侵害。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.