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
    • 最新
    • 标签
主页 / server / 问题 / 1050989
Accepted
func0der
func0der
Asked: 2021-01-25 06:16:41 +0800 CST2021-01-25 06:16:41 +0800 CST 2021-01-25 06:16:41 +0800 CST

一个进程可能无法链接文件,但我可以为同一个用户使用 sudo?

  • 772

我在 Debian 10(无 SELinux)上使用 Dovecot 2.3.4.1 和 EncFS(encfs 版本 1.9.5)加密邮箱

基本设置是:

EncFS 安装有

encfs --public /var/encrypted-mail /var/decrypted-mail -o nonempty --verbose

邮箱设置:

/var/decrypted-mail/domain.com/[email protected]/[cur,new...]

drwx------ 8 mail mail 4096 Dec 29 2019 /var/decrypted-mail(这些权限是递归的)

所有 dovecot 进程都以mail用户身份运行:

mail 5194 0.0 0.0 6308 4312 ? S 14:52 0:00 dovecot/imap

尽管一切似乎都配置正确,但我无法创建新文件夹或重命名现有文件夹。

我在以下内容中收到此错误/var/log/dovecot.log:

Jan 24 14:59:04 imap([email protected])<6010><Us21sxWS5OZaC6Ex>: Error: Couldn't create mailbox list lock /var/decrypted-mail/domain.com/[email protected]/mailboxes.lock: file_create_locked(/var/decrypted-mail/domain.com/[email protected]/mailboxes.lock) failed: link(/var/decrypted-mail/domain.com/[email protected]/mailboxes.lockba53af3795974a32, /var/decrypted-mail/domain.com/[email protected]/mailboxes.lock) failed: Operation not permitted

该错误消息的源代码位于此处:https ://github.com/dovecot/core/blob/4d09884528e592a0fa5d38bf479b3ddab1a4a0ef/src/lib/file-create-locked.c#L109-L123

如果我没看错,它就不能使用“常规锁定”机制并尝试将临时文件符号链接到mailboxes.lock. 这表明它可以创建临时文件mailboxes.lockba53af3795974a32并且无法对其进行符号链接。

当我在 shell 中运行这个命令时: sudo -u mail bash -c 'touch mailboxes.lockba53af3795974a32 && ln -s mailboxes.lockba53af3795974a32 mailboxes.lock'

它工作正常,我没有错误。

鸽舍的行为怎么可能与普通贝壳如此不同?

我唯一的解释是时间问题(之前访问过临时文件,但是为什么这没有出现在 bash 复制中?)。

我也尝试过chmod -R g+rwx /var/decrypted-mail,以确保所有这些 gid 都不是问题,但这只是寻找修复的绝望尝试。

io hardlink dovecot
  • 1 1 个回答
  • 131 Views

1 个回答

  • Voted
  1. Best Answer
    func0der
    2021-01-29T10:00:44+08:002021-01-29T10:00:44+08:00

    encfs事实证明,在某些情况下,这是已知的限制。

    如果启用External IV Chaining硬链接则禁用。

    外部 IV 链接

    1.1.3 中的新功能。此选项与 Per-File Initialization Vectors 和 Filename Initialization Vector Chaining 密切相关。基本上,它将初始化向量链从文件名扩展到每个文件的初始化向量。

    启用此选项后,每个文件的初始化向量使用从文件名初始化向量链接代码派生的初始化向量进行编码。这意味着文件中的数据与文件名相关联。如果加密文件在 encfs 之外被重命名,则它在 encfs 中将不再可解码。请注意,除非启用 Block MAC 标头,否则将不会检测到解码错误,并会导致读取随机数据。

    有一个与此相关的成本。启用外部 IV 链接后,文件系统中将不允许硬链接,因为无法正确解码指向相同数据的两个不同文件名。

    此外,重命名文件需要修改文件头。因此,仅当用户对文件具有写入权限时才允许重命名。

    由于这些限制,此选项在标准模式下默认禁用(在偏执模式下默认启用)。

    来源:encfs(1) 手册页。

    事实证明,我误读了link. 它清楚地表明它默认创建一个新的 *硬链接。我用我发布的代码片段创建了一个软链接:

    sudo -u mail bash -c 'touch mailboxes.lockba53af3795974a32 && ln -s mailboxes.lockba53af3795974a32 mailboxes.lock'

    如果我跑了:

    sudo -u mail bash -c 'touch mailboxes.lockba53af3795974a32 && ln mailboxes.lockba53af3795974a32 mailboxes.lock'

    相反,我会得到与代码完全相同的错误消息dovecot:

    ln: failed to create hard link 'mailboxes.lock' => 'mailboxes.lockba53af3795974a32': Operation not permitted


    额外知识

    在此过程中我发现了一个巧妙的技巧,您可以fuse使用-f -d.

    实现喜欢encfs或cryfs允许您将这些选项解析为fuse:

    encfs enc dec -- -f -d

    Fuse 将在前台运行,然后向您显示挂载文件系统中发生的一切。:)

    • 0

相关问题

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • Exchange 2003 I/O 问题

  • 找到瓶颈:Windows XP 上的磁盘 I/O

  • 谁能准确解释IOWait是什么?

  • 如何识别 Linux 服务器上的 I/O 瓶颈?

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve