正如我理解拒绝用户r
对目录的读取权限应该会阻止他们列出其内容。授予他们 e x
ecute 权限允许他们访问其内容,但前提是他们使用存在的路径。
是什么阻止具有上述权限的用户盲目地尝试访问此类目录中的各种路径,以获取其中内容的列表?如果他们能做到这一点,那么711
在主文件夹上设置权限以保护其内容,同时允许访问 SSH 密钥等内容,真的有什么意义吗? (我读过人们的建议。)
答案1
是的,你可以暴力破解这样的目录。
Unix 最初是在一个非常合作的环境中创建的,因此一组权限表示不要在这里浏览会受到尊重。
如果您的计算机的用户没有这种文化,那么(假设您无法更改用户)如果您想对内容保密,就不要创建具有执行权限的目录。同样,不要让文件可读,而不是希望人们无法猜出名称。
当然,暴力破解一个文件名很长的大目录将需要很长时间。每个组件的长度可以是 254 个字符,从一组 254 个字符中选择(不能是\0
或/
,但任何其他 8 位模式都可以),因此大约有 10 610个可能的文件名。已知宇宙中大约有 10 80个原子。
答案2
如果他们能做到这一点,那么在主文件夹上设置 711 权限以保护其内容,同时允许访问 SSH 密钥等内容真的有意义吗? (我读过人们的建议。)
那么要么(a)他们被误导了,要么(b)你可能只理解了部分建议。
OpenSSH(至少)要求 SSH 密钥具有受限权限:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/muru/.ssh/id_ed25519' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/muru/.ssh/id_ed25519": bad permissions
它甚至不会使用其他人可读的密钥。
711
在主目录上没有问题 - 只要您确实从真正的私有文件中删除对组/其他人的读取权限(绝对是 SSH 私钥和 GPG 私钥,也许还有 shell 历史文件等项目,known_hosts
这些项目会泄露有关您的活动的信息)。
答案3
祝你好运。即使对于可读的短文件名(10 个字符)(仅限字母和数字),您也已经有 $36^{10} = 3.16×10^{15}$ 个可能的名称可供检查...