Dropbox 询问是否需要身份验证才能以超级用户身份运行“/usr/sh”

Dropbox 询问是否需要身份验证才能以超级用户身份运行“/usr/sh”

这个问题问过几次了,但是标准答案不适用。

现行制度:Ubuntu 18.04,内核版本 4.15.0-29-generic。但我认为它是从 16.xx 开始的。

用户登录时系统会询问此问题。简单的“取消”即可让 Dropbox 执行其应执行的操作。有时,它会在登录会话中的某个地方询问 3 次。

论坛上的标准建议是将 中的相应行更改为/usr/bin/dropboxPARENT_DIR = os.path.expanduser("~")但过去几年已经是这样做了。我在交替的根分区上从头开始安装每个版本,因此没有剩余。/home位于单独的分区上,因此那里可能存在剩余。 该消息最近消失了大约 3 周,但在最新的内核更新后又回来了。请注意,系统现在要求获得执行 的权限/bin/sh,而不再是/usr/bin/dropbox

答案1

解决方案

如果 Dropbox 在其目录中发现不属于您的用户的文件,它将尝试运行具有超级用户权限的脚本,将这些文件的所有权更改为您的用户。

  • 最安全的选择是自己更改权限(源自 Pablo Bianchi 的回答):

    find ~/Dropbox/ ! -user $USER -exec sudo chown $USER:$USER "{}" \;
    
  • 或者,输入您的凭据并让其运行脚本。仅当您能确认 Dropbox 正在创建弹出窗口时才建议这样做(更多详细信息见下文)。

如果您点击取消,Dropbox 不会运行该脚本,但您会继续收到弹出窗口,因为它会继续检测问题。

细节

我刚刚收到同样的弹出窗口,但不是在登录时:

在此处输入图片描述

我扩大了细节然后我在网上搜索,结果org.freedesktop.policykit.exec指向了pkexec

(不幸的是,我只见过细节在使用 Xfce 时。在运行其他桌面环境(例如 Gnome)时我没有看到它。

通过查看我的流程pkexec,我发现:

$ ps -ef | grep [p]kexec
root     11040 26447  0 14:16 ?        00:00:00 pkexec /bin/sh /tmp/tmp5vgk_93m

所以我当然很好奇这个文件在做什么:

$ cat /tmp/tmp5vgk_93m
#!/bin/bash
chown -h -R 1234 "/home/user/Dropbox"
chmod  -R u+rwX "/home/user/Dropbox"

看起来 Dropbox 一定检测到了我的 Dropbox 文件夹中有一些不属于我当前用户的文件。

我曾经find确认过:

$ find ~/Dropbox/ ! -user $USER
/home/user/Dropbox/Projects/picodrive/cpu/fame/famec.o
/home/user/Dropbox/Projects/picodrive/cpu/drc/cmn.o
/home/user/Dropbox/Projects/picodrive/cpu/cz80/cz80.o
...

果然,有些文件看起来不属于我的用户:

$ ls -l /home/user/Dropbox/Projects/picodrive/cpu/fame/famec.o
-rw-r--r-- 1 root root 1346564 Dec 18 13:33 /home/user/Dropbox/Projects/picodrive/cpu/fame/famec.o

理论上 Dropbox 同步该文件不会有任何问题,因为它是全世界可读的,但至少他们的做法是有意义的。

我还注意到,Dropbox 同步时出现了如下错误,这似乎是一个额外的确认:

Can't sync "famec.o" (access denied)

最后但同样重要的一点是,我要把它放在这里,因为我在网上搜索这个问题时遇到了麻烦:

Authentication is needed to run `/bin/sh' as the super user

答案2

Dropbox 可能由于各种原因无法读取文件,例如所有权、权限位或断开的链接。我假设您使用的是普通用户。

  • 查找不属于当前用户的文件

    find ~/Dropbox/ ! -user $USER
    
  • 更改这些文件的所有权和组

    find ~/Dropbox/ ! -user $USER -exec sudo chown $USER:$USER "{}" + –
    
  • 查找当前用户无法读取的文件

    find ~/Dropbox/ ! -readable -ls # -delete to remove them
    

在我看来,这是 Gnome 的一个安全问题。

答案3

因为某些原因

chmod 755 ~/Dropbox

为我解决了这个问题。我记得我最近将我的 Dropbox 文件夹从符号链接到我的主文件夹中的 NTFS 分区移到了物理上位于我的主文件夹中 - 并且可能没有在之后设置权限。

答案4

我想我终于解决了这个问题。就我而言,该消息是由一个临时 Dropbox 脚本生成的,/tmp该脚本试图授予我 Dropbox 中文件的通用访问权限。问题是 Dropbox 树中由 root 拥有的文件,而 Dropbox 无法更新该文件。

我通过这种方式解决了这个问题(我假设$HOME/Dropbox你的 Dropbox 文件夹是默认的。如果合适,请更改)。

  1. 作为 root,请确保您是 Dropbox 中所有文件的所有者:

    $ sudo chown -R $USER $HOME/Dropbox
    
  2. 授予所有者对 Dropbox 中所有文件和目录的读写权限:

    $ chmod -R u+rwX $HOME/Dropbox
    

相关内容