AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1425574
Accepted
clemisch
clemisch
Asked: 2019-04-16 01:34:21 +0800 CST2019-04-16 01:34:21 +0800 CST 2019-04-16 01:34:21 +0800 CST

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

  • 772

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

chmod -R g=,o= secret

还是chmod在文件夹上就足够了?

chmod g=,o= secret

有什么实际区别?

linux permissions chmod
  • 3 3 个回答
  • 5962 Views

3 个回答

  • Voted
  1. Best Answer
    xenoid
    2019-04-16T04:08:14+08:002019-04-16T04:08:14+08:00

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

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

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

    • 76
  2. G-Man Says 'Reinstate Monica'
    2019-04-16T19:53:12+08:002019-04-16T19:53:12+08:00

    不言而喻,如果您在两天前创建了一个文件(使用公开可读模式),并且昨天有人阅读了该文件或制作了一份副本,那么您今天无法将该文件设为私有。

    xenoid 说(有点简单),如果你从你的目录中删除组和其他权限(今天,现在),“它下面的任何东西都变得无法访问,你不需要进行递归更改。” 我同意,如果您chmod的(顶级)目录适当,将来(即从现在开始),除了您自己1之外,没有人 能够进入它。但是有一些陷阱。

    硬链接

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

    工作目录

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

    cd /home/clemisch/秘密/计划

    现在,在您执行chmodon之后secret,坏人的工作目录仍然存在  /home/clemisch/secret/plans,他们可以继续列出该目录并访问那里的文件,可能永远如此。当然,一旦他们cd在别处,或者关闭那个窗口,或者注销,或者机器重新启动,那么他们就失去了访问权限。

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

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

    人为错误

    正如 xenoid 在他们的回答中指出的那样:如果你chmod在secret今天进行递归,然后在后天你不小心 chmod(只)将顶级目录返回到 755,那么你仍然会受到今天递归的保护chmod- 所有文件和下的目录secret仍然不可读。(当然,如果你明天新建一个文件secret,并且你允许它是公开可读的,那么当你打开目录的权限时,它就会暴露出来secret。但是无论今天是否chmod递归都是如此。 )

    mazunki发表评论,“我相信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
    

    如果你这样做, then/tmp/file1将具有与相同的保护secret/plans/the/quick/brown/fox/file1- 所以这是chmod今天进行递归的另一个原因。

    还有一件事

    如果坏人在五分钟前打开了你的一个秘密文件,并且一直保持打开状态,他们将来就可以读取它——即使你修改了它也有可能。好消息是,这是一个执行起来有点棘手的攻击——坏人必须在你执行chmod. 坏消息是这种攻击很难防御——递归 chmod 无济于事。
    __________
    1,当然还有特权用户/进程

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

    • 46
  3. mazunki
    2019-04-16T01:49:20+08:002019-04-16T01:49:20+08:00

    递归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。

    • -1

相关问题

  • 以 root 身份运行 docker 容器

  • 如何在域和 Linux 活动目录中启用指纹传感器

  • 如何在CentOS 7 中将Ctrl+C 永久更改为Ctrl+K?

  • 为什么 chown 600 id_rsa 修复权限问题?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve