这个问题问过几次了,但是标准答案不适用。
现行制度:Ubuntu 18.04,内核版本 4.15.0-29-generic。但我认为它是从 16.xx 开始的。
用户登录时系统会询问此问题。简单的“取消”即可让 Dropbox 执行其应执行的操作。有时,它会在登录会话中的某个地方询问 3 次。
论坛上的标准建议是将 中的相应行更改为/usr/bin/dropbox
,PARENT_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 文件夹是默认的。如果合适,请更改)。
作为 root,请确保您是 Dropbox 中所有文件的所有者:
$ sudo chown -R $USER $HOME/Dropbox
授予所有者对 Dropbox 中所有文件和目录的读写权限:
$ chmod -R u+rwX $HOME/Dropbox