我是否真的需要递归 chmod 来限制对文件夹的访问?

我是否真的需要递归 chmod 来限制对文件夹的访问?

如果我想限制对secret共享计算机上的文件夹的访问,我真的需要chmod对文件夹进行递归吗

chmod -R g=,o= secret

或者chmod文件夹就足够了?

chmod g=,o= secret

实际区别是什么?

答案1

对于目录,“读取”权限允许您列出内容,“执行”权限允许您遍历目录以打开其子目录之一(文件或子目录)。因此,如果您删除:

  • 只有读取权限,人们仍然可以通过猜测子目录的名称来访问子目录
  • 只需执行标志,人们仍然可以列出内容的名称,即使他们无法访问它们,这仍然可以揭示
  • 对目录具有读取和执行权限,其下的任何内容都将变得无法访问,并且您不需要进行递归更改。

当然,如果您进行了递归更改,则意外的非递归重置对顶级目录的访问权限所产生的后果会较小。

答案2

不言而喻,如果您两天前创建了一个文件(具有公开可读模式),而昨天有人阅读了该文件或复制了它,那么您今天就无法将该文件设为私有。

xenoid 说(有点简单)如果您从目录中删除组和其他权限(今天,现在),“其下方的所有内容都将无法访问,并且您无需进行递归更改。”我同意,如果您chmod适当地管理您的(顶级)目录,那么除了您自己1之外 ,将来没有人能够进入它(即从现在开始)。但是有一些问题。

硬链接

还记得你两天前创建的文件吗?假设你的对手昨天对该文件进行了硬链接(而不是复制它)。如果你chmod只访问你的(顶级)目录,那么该文件将继续具有你在创建它时分配的公开可读权限,因此坏人将来仍然能够读取它 — (可能)即使你随后对其进行了修改。如果你执行递归chmod,这将确保文件的权限, 这会影响链接。  坏人仍然可以ls -l对其进行操作,因此他们可以看到你何时更改它以及它有多大,但他们无法再次读取它。

工作目录

假设在你的secret目录下有一个 plans目录,并且它也是公开可读的。假设五分钟前,坏人打开了一个终端窗口并说

cd /home/clemisch/secret/plans

现在,在您执行chmodon后secret,坏人的工作目录仍是  /home/clemisch/secret/plans,他们可以继续列出该目录并访问那里的文件,可能永远如此。当然,一旦他们转到cd其他地方,或关闭该窗口,或注销,或重新启动计算机,他们就会失去访问权限。

如果您执行递归chmod,这将确保所有文件和所有目录的权限,从而导致擅自访问者立即失去访问权限。

如果机器是一台仅通过控制台访问的个人计算机,那么这可能不是一个很大的风险。但是,如果坏人可能 在后台留下了一个screen或 会话,那么他们就可以使用这种攻击。而且,如果机器支持 (或其他远程访问;甚至 FTP 也足够了),就可以使用这种攻击。tmuxssh

人为错误

正如 xenoid 在他们的回答中指出的那样:如果你今天做了一个递归chmodsecret然后后天你不小心 chmod(只)将顶级目录返回到 755,那么你仍然会受到今天递归的保护chmod——下面的所有文件和目录secret仍然无法读取。(当然,如果你创建一个新的明天,如果您将文件添加到目录中secret,并允许其公开可读,则当您打开目录的权限时,它将被公开secret。但无论今天的是否chmod是递归的,情况都是如此。)

马祖基制造一条评论,“我相信cp带有权限。”我不确定他们的意思,但请考虑这种情况。您想diff在两个文件之间执行:

  • secret/plans/the/quick/brown/fox/file1
  • secret/jumps/over/the/lazy/dog/file2

但你不确定这些文件到底在哪里,所以必须四处寻找。你可能会想这样做

cd plans
cd the/quick                            # looking for file1
cd brown/fox                            # found it!
cp file1 /tmp
cd ../../../../..
cd jumps/over
cd the                                  # looking for file2
cd lazy/dog                             # found it!
diff /tmp/file1 file2

如果您这样做,那么/tmp/file1就会得到同样的保护— — 所以这是今天secret/plans/the/quick/brown/fox/file1进行递归的另一个原因。chmod

还有一件事

如果坏人五分钟前打开了你的一个秘密文件,并一直保持打开状态,他们将来就能够阅读它——潜在即使你修改了它。好消息是,这是一个有点棘手的攻击——在你执行之前,坏人必须对此进行一些思考chmod。坏消息是,这种攻击很难防御——递归 chmod 不会有帮助。__________
1
当然还有特权用户/进程

PS您可以稍微缩短命令: chmod go=相当于。(当然,chmod g=,o=这并不会使递归更快。)chmod

答案3

递归chmod也会影响所有子目录和文件夹,而不仅仅是文件夹本身。

.:
total 16
drwxrwxr-x  4 mazunki mazunki 4096 april 15 11:42 .
drwxr-xr-x 35 mazunki mazunki 4096 april 15 11:42 ..
d---------  3 mazunki mazunki 4096 april 15 11:46 a
d---------  2 mazunki mazunki 4096 april 15 11:42 b

./a:
total 12
d--------- 3 mazunki mazunki 4096 april 15 11:46 .
drwxrwxr-x 4 mazunki mazunki 4096 april 15 11:42 ..
-----w---- 1 mazunki mazunki    0 april 15 11:42 a
dr-xr-xr-x 2 root    root    4096 april 15 11:46 aa
-----w---- 1 mazunki mazunki    0 april 15 11:42 b

./a/aa:
total 8
dr-xr-xr-x 2 root    root    4096 april 15 11:46 .
d--------- 3 mazunki mazunki 4096 april 15 11:46 ..

./b:
total 8
d--------- 2 mazunki mazunki 4096 april 15 11:42 .
drwxrwxr-x 4 mazunki mazunki 4096 april 15 11:42 ..
-----w---- 1 mazunki mazunki    0 april 15 11:42 a
-----w---- 1 mazunki mazunki    0 april 15 11:42 b
[] ~:~/test ▶ 
[] ~:~/test ▶ 
[] ~:~/test ▶ sudo chmod -R +w a
[] ~:~/test ▶ 
[] ~:~/test ▶ 
[] ~:~/test ▶ sudo ls -alR 
.:
total 16
drwxrwxr-x  4 mazunki mazunki 4096 april 15 11:42 .
drwxr-xr-x 35 mazunki mazunki 4096 april 15 11:42 ..
d-w-------  3 mazunki mazunki 4096 april 15 11:46 a
d---------  2 mazunki mazunki 4096 april 15 11:42 b

./a:
total 12
d-w------- 3 mazunki mazunki 4096 april 15 11:46 .
drwxrwxr-x 4 mazunki mazunki 4096 april 15 11:42 ..
--w--w---- 1 mazunki mazunki    0 april 15 11:42 a
drwxr-xr-x 2 root    root    4096 april 15 11:46 aa
--w--w---- 1 mazunki mazunki    0 april 15 11:42 b

./a/aa:
total 8
drwxr-xr-x 2 root    root    4096 april 15 11:46 .
d-w------- 3 mazunki mazunki 4096 april 15 11:46 ..

./b:
total 8
d--------- 2 mazunki mazunki 4096 april 15 11:42 .
drwxrwxr-x 4 mazunki mazunki 4096 april 15 11:42 ..
-----w---- 1 mazunki mazunki    0 april 15 11:42 a
-----w---- 1 mazunki mazunki    0 april 15 11:42 b

如果您没有明确授予访问权限.,您将无法读取该文件夹的内容。

[] ~:~/test ▶ ls -l
total 8
drwxr-xr-x 3 mazunki mazunki 4096 april 15 11:46 a
d--------- 2 mazunki mazunki 4096 april 15 11:42 b
[] ~:~/test ▶ 
[] ~:~/test ▶ 
[] ~:~/test ▶ sudo chmod +xxx b
[] ~:~/test ▶ cd b
[] ~:~/test/b ▶ ls
ls: cannot open directory '.': Permission denied
[] ~:~/test/b ▶ sudo chmod +xxx .
[] ~:~/test/b ▶ ls
ls: cannot open directory '.': Permission denied
[] ~:~/test/b ▶ sudo chmod +rrr .
[] ~:~/test/b ▶ ls
a  b
[] ~:~/test/b ▶ 

同样,除非您明确指定,否则您将无法cd进入该文件夹的子目录+x

相关内容