Skip to content
This repository has been archived by the owner on Dec 17, 2019. It is now read-only.

我这样子算是解开了 GNOME Keyring 了吗? #63

Closed
Firef0x opened this issue Oct 14, 2014 · 49 comments
Closed

我这样子算是解开了 GNOME Keyring 了吗? #63

Firef0x opened this issue Oct 14, 2014 · 49 comments
Labels

Comments

@Firef0x
Copy link

Firef0x commented Oct 14, 2014

我用的是 Arch Linux 发行版, 窗口管理器是 Awesome WM,登录管理器是 Slim ,安装的 GNOME 软件包只有这几个:

gnome-icon-theme
gnome-icon-theme-symbolic
gnome-keyring
libgnome-keyring
libsoup
seahorse

登录以后马上打开 htop ,可以清楚地看到一个 gnome-keyring-daemon 进程,然后打开 seahorseGNOME Keyring 的图形界面管理器),一个叫 Login 的密钥环(已经是默认的密钥环)是解锁了的。

那么是不是说您写在 https://github.com/LiuLang/bcloud/blob/master/README.md#依赖的软件包 的这番话在我的系统中已经完成了呢?我这样子是不是算是解开了 GNOME Keyring 了呢?

并且要保证 gnome-keyring-daemon 在用户登录桌面后自动启动, 对于xfce等
轻量级桌面, 请将这个daemon加入到开机启动列表中;

然后, bcloud 的密码信息能否在 seahorse 中查看到?

还有,这时候 GNOME Keyring 密钥环的密码是不是就取代了第一次使用 bcloud 时在终端设置的加密密码:

Please set a password for your new keyring:
Please confirm the password:
Refer to
@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

为什么要整这么麻烦?

gnome-keyring并不是必需的.

如果gnome-keyring这样的服务不能使用, 只需要在登录时不保存密码就行了.

bcloud调用的是gnome-keyring的接口, seahorse是它的前端; 如果bcloud能成功
将用户帐户信息托管到keyring里面, 那么这条信息一定在seahorse里面能看到的.

具体来说, 这条帐户信息被存放到了seahorse的Password/Login 目录下面, 用户
登录桌面后, 这个目录里面的帐户信息就自动被解锁(这个操作需要让gnome-
keyring-daemon自动启动).

在gnome/kde桌面里, 这些都没必要折腾.

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

所以还是没有成功放到 seahorse 里面?! 😞 可是我感觉 GNOME Keyring 已经启动并且解锁了呀……

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

是这样的,

用户登录时, 会从keyring里面读取网盘的帐户信息, 如果有的话, 就直接使用它,
用户无需再次输入; 如果没有的话, 就让用户在登录框输入密码.

当用户点击"登录" 按纽向百度提并了用户名+密码之后, 如果能成功登录, 而且登
录界面的"保存密码"也被选中了, bcloud就会把这个用户名+密码托管到keyring里
面, 以备下次登录时调用.

因为你上次没能成功登录, 所以你的帐户信息并不在seahorse里面存放.

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

可是我登陆成功过呀,我看到 ~/.local/share/python_keyring/crypted_pass.cfg 里面有 [org_2Eliulang_2Ebcloud] 这一节,里面有我的用户名……

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

额,我把 ~/.local/share/python_keyring/ ~/.config/bcloud/ ~/.cache/bcloud/ 目录全删了,在重新登录一次,选择记住密码,此时有 gnome-keyring-daemon 进程在运行,然后填好验证码,这次居然弹出了

Please set a password for your new keyring:
Please confirm the password:

设好之后就进入了 bcloud 主界面,此时退出,打开 seahorse ,依然没有,是不是意味着还是进入 GNOME Keyring 失败了呢?

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

解开keyring的密码是你的本机当前正在使用的用户密码,当你登录电脑桌面后, 这个keyring就会用你的电脑密码自动解开.

你现在设置好了, 下次还会有效吗?

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

解开keyring的密码是你的本机当前正在使用的用户密码,当你登录电脑桌面后, 这个keyring就会用你的电脑密码自动解开.

对呀,我现在的 seahorse 里面就只有一个 Login 密钥环,锁的图案和您的截屏一样是解开的,我试过密码就是我登录的密码。

现在奇怪的是,明明这个锁头是开的,又有 gnome-keyring-daemon 进程在运行,为什么 bcloud 保存的密码在 seahorse 里面不显示?

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

把当前用户注销, 再重新进入试试, 看你的seahorse里面显示的是什么

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

而且现在更糟糕了,再次执行 bcloud-gui 的时候提示

Please enter password for encrypted keyring: 

在我刚刚把 ~/.local/share/python_keyring/ ~/.config/bcloud/ ~/.cache/bcloud/ 目录全删了之前不需要在终端输密码的……

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

注销当前用户, 然后重新登录, 看看你的keyring还需要输入密码吗?

正常情况下, 进入系统后, gnome-keyring(或者kwallet)会自动被解开的.

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

现在注销后重新登录了,锁头依然是解开的,里面依然没有 bcloud 的信息,执行 bcloud-gui 依然要输入 Please enter password for encrypted keyring:……

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

进入系统后, 打开一个终端, 先启动python解析器:
$ python
然后在里面输入以下两行:
import keyring
keyring.set_password('test_server', 'test_user', 'test_password')

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

结果如下:

Python 3.4.2 (default, Oct  8 2014, 13:44:52) 
[GCC 4.9.1 20140903 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import keyring
>>> keyring.set_password('test_server', 'test_user', 'test_password')
Please enter password for encrypted keyring: 

然后我就输入了刚才启动 bcloud-gui 时设置的密码,就直接进入

>>>

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

你的keying还是有问题.

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

它应该是在你登录系统后自动进入可用状态的, 不需要再额外输入的.

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

正常情况, 就会出现这条新记录了:
screenshot from 2014-10-14 23 57 57

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

天哪,这是怎么回事?我搜索了 Awesome 、 Arch 的 Wiki 都没有提到这种情况……

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

我试试向 Python Keyring 报个 Bug ……

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

不用了吧.

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

这就是xfce4的问题.

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

我没有装 xfce 啊…… 😕

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

你的桌面要是gnome或者kde的话, 根本就没有这些小问题了.
现在这么多的轻量级桌面(窗口管理器), 为了速度快, 就会尽可能裁去各种组件, 只提供一些最基本的功能, 有的甚至连电源管理, 分辨率调整的功能都没有. 结果用户在各种小问题上共了不少的时间.

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

有道理,主要是 GNOME3KDE4/5 都太大太缓慢了,让我的机器越来越慢,才慢慢转到窗口管理器的,现在好像也慢慢习惯了……

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

当然, 多一个桌面环境, 让用户多了一种选择.
但这样的结果就是越来越碎片化, 数以百计的桌面发行版, 十多个桌面环境(窗口管理器)....
电脑对于一般用户而言, 让来工作的, 来娱乐的, 而目前,整个linux桌面, 是极客的口味占主要势力的, 他们这群人的思维/生活方式, 与一般人的有很大差异的.

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

我用 Python2 又尝试了一下,好像这次不用输密码了:

Python 2.7.8 (default, Sep 24 2014, 18:26:21) 
[GCC 4.9.1 20140903 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import keyring
>>> keyring.set_password('test_server', 'test_user', 'test_password')
>>> 

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

我之前用过一段时间的openbox+fbpanel, 确实很快.

但是现在的电脑性能都是过剩的~ gnome/kde桌面现在已经足够快了

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

因为你刚才已经输入了吧.

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

你再登录一下bcloud, 看看什么状况

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

我的电脑太老了,奔腾……不过剩,我也是用了半年的GNOME3和1年的KDE4才受不了的……

再次执行 bcloud-gui,还是要输入密码……

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

我想 Python2 Keyring 没问题……

Python 2.7.8 (default, Sep 24 2014, 18:26:21) 
[GCC 4.9.1 20140903 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import keyring
>>> print keyring
<module 'keyring' from '/usr/lib/python2.7/site-packages/keyring/__init__.pyc'>
>>> keyring.get_password('test_server', 'test_user')
u'test_password'
>>> 

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

那python3呢?

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

有问题!还是跟之前贴的那样:

Python 3.4.2 (default, Oct  8 2014, 13:44:52) 
[GCC 4.9.1 20140903 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import keyring
>>> print(keyring)
<module 'keyring' from '/usr/lib/python3.4/site-packages/keyring/__init__.py'>
>>> keyring.get_password('test_server', 'test_user')
Please enter password for encrypted keyring: 

输完密码之后:

'test_password'
>>>

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

再在python3里面试试这行:
>>> print(keyring.get_keyring())

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

>>> print(keyring.get_keyring())
<keyring.backends.file.EncryptedKeyring object at 0x7ff0189e83c8>

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

那你的seahorse里面有"test_user" 这条信息吗?

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

seahorse 里面没有,感觉还是不对

Python 2.7.8 (default, Sep 24 2014, 18:26:21) 
[GCC 4.9.1 20140903 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for mor
>>> import keyring
>>> keyring.get_keyring()
<keyring.backends.file.PlaintextKeyring object at 0x7f2ae0781a50>

我知道本该输出 <keyring.backends.Gnome.Keyring at xxxxxxxx> 才对……

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

算了, 别折腾了这个了

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

😭

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

这个周末, 会发布一个新版本, 允许以明文方式存放密码, 这样就能兼容所有的系统和桌面环境了.

@Firef0x
Copy link
Author

Firef0x commented Oct 14, 2014

好吧,感谢大神,祝晚安 🌃

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

晚安

@1dot75cm
Copy link

明文不太好吧,至少加个密再保存。
哈希值应该不行,因为发给百度的密码,程序也要知道。

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 14, 2014

这么说吧.

在bcloud的很早的版本中, 密码是托管在keyring里面的, 是加密的; 后来有朋友
反馈说他的桌面里面不能正常使用keyring, 我就附加了明文存放密码的"功能".
可是很快就有另一批朋友出来反对, 说这样不安全, 结果这个功能在之后的版本里
就被删去了.

现在同样的情况再次出现, 又有朋友遇到了类似的问题.

如果不允许他们明文存储, 还有更好的方案 能解决兼容性问题?

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 15, 2014

@Firef0x

我查了几篇文章, 是介绍如何手动设置gnome-keyring的, 你可以在读完后尝试一下.
https://wiki.archlinux.org/index.php/GNOME_Keyring

https://wiki.gnome.org/action/show/Projects/GnomeKeyring?action=show&redirect=GnomeKeyring#Automatic_Unlocking

https://wiki.gnome.org/Projects/GnomeKeyring/Pam

另外, 明文存储密码的方法还有待考虑, 因为确实不安全.

@LiuLang LiuLang closed this as completed Oct 24, 2014
Firef0x added a commit to Firef0x/dotfiles that referenced this issue Oct 26, 2014
使 python-keyring 正确地运行
登入命令中添加 dbus-launch 并且在 PAM 中添加 GNOME Keyring 相关项,以解决
XuShaohua/bcloud#63 中提出的问题
@Firef0x
Copy link
Author

Firef0x commented Oct 26, 2014

@LiuLang 大神,您好!

很抱歉这周都没有回复,让您误认为我已经解决问题而关闭 Issue ,这周我谷歌了不少文章和帖子,在几个论坛上发问,找到了一些有用的东西: 📚

通过这些资料,我对这些文件进行了修改:

  • /etc/pam.d/login
  • /etc/pam.d/passwd
  • /etc/slim.conf
  • /etc/systemd/system/user@.service.d/dbus.conf
  • ~/.xinitrc

修改内容见 Make python-keyring running properly

最后成功地使 BCloud 的密码存放在 GNOME Keyring ,在 seahorse 中查看到密码信息。问题算是初步解决。

现在问题来了 😉 请问大神,我这样的情况是不是特殊个例?还是除了 GNOME 会默认设置以外,其它轻量级的桌面环境都需要自行修改补充? 如果这是其它桌面环境的普遍情况,我希望我的问题解决过程能够帮到如 保存密码那个keyring还是不知道怎么解决 这样的基友。

因此,我希望在 Arch Wiki 上加一个 BCloud 条目,将以上的过程以及这几个月来出现在 百度贴吧Archlinux吧 、Arch Linux 中文社区 及这个项目的 Issue 中的出现的问题和解法连同 Arch Linux 安装指南 汇总到一起,因为我觉得 Arch Wiki 的人气及浏览量应该远胜于这个项目,Arch Linux 的基友更习惯于在 Arch Wiki 搜索。特此请求大神意见。

@LiuLang
Copy link
Collaborator

LiuLang commented Oct 27, 2014

上周我查了一下, 只有在archLinux和gentoo这样的发行版需要让用户手动配置
gnome-keyring, 其它主流发行版, 比如debian(包括ubuntu, linuxmint), fedora
系列(包括redhat, centos等)的, 都会自动配置好的, 用户安装好gnome-keyring
包之后就自动能用了, 而且, ubuntu, linuxmint等, 在发行版安装镜像中都已经
自带了gnome-keyring包, 安装好系统后就能直接用.

当然, 我认为这是不同发行版之间的思路不同, 但这样做的确给一些用户带来了不
小的困惑, 比如, 就bcloud而言, 也只有arch及gentoo用户才会接二连三的来反馈
说他的gnome-keyring无法使用的问题, 因为这些问题在其它发行版中就不存在.
当然, 别误会, 我没有歧视这些发行版, 我也用过一段时间的gentoo, 可后来发现
很多地方都要自己折腾, 太费时, 就又换回了debian; 我认为, 与其来来回回的折
腾这些, 还不如把时间花在更有意义的事情上, 我需要的, 只是一个稳定的发行版
而已.

arch的wiki里面(https://wiki.archlinux.org/index.php/GNOME_Keyring)已经写
的很完整了, arch/gentoo用户根据这篇文章, 可以不太困难地配置好自己的
gnome-keyring, 但是, 作为arch用户, 既然选择了这样的发行版, 就得去适应它
的品味, 得动手去做. 而实际上, 在贴吧里, 我看到了一些arch用户遇到这个问题
后, 竟然也没去翻一下arch的wiki或者去google一下.

nae6taiyie0T 确实是我的马甲, 后来这个号的密码找不到了, 就再也没登录过.

在arch wiki里列出来这些当然好了, 有什么需要帮忙可以发邮件询问我.

最后, 我还是建议你再读一下这个wiki,
https://wiki.archlinux.org/index.php/GNOME_Keyring, 如果根据里面的说明,
能解决bcloud的keyring问题, 那就只需要把这个wiki翻译成中文的, 然后请其它
arch用户直接去读这个中文wiki就行了; 你的看法?

Firef0x added a commit to Firef0x/dotfiles that referenced this issue Nov 8, 2014
使 python-keyring 正确地运行
登入命令中添加 dbus-launch 并且在 PAM 中添加 GNOME Keyring 相关项,以解决
XuShaohua/bcloud#63 中提出的问题
Firef0x added a commit to Firef0x/dotfiles that referenced this issue Nov 10, 2014
使 python-keyring 正确地运行,以解决
XuShaohua/bcloud#63 中提出的问题
1. 修正 .xinitrc ,增加 /etc/skel/.xinitc 的内容
   见 https://wiki.archlinux.org/index.php/Dbus#Starting_the_user_session
2. 在 PAM 中添加 GNOME Keyring 相关项
3. 更新 update-etc.sh ,增加 pam.d/login 和 pam.d/passwd 两个文件
@Firef0x
Copy link
Author

Firef0x commented Nov 10, 2014

@LiuLang 大神,您好!

很抱歉这两周都没有回复。

最后, 我还是建议你再读一下这个wiki, https://wiki.archlinux.org/index.php/GNOME_Keyring,

其实我在发这个 Issue 之前已经看过这篇 Wiki ,然后我又看了您提到的 GNOME 官方的那篇 Wiki 。它们并没有解决我的问题。经过这两周的再次研究思考,我对这个问题又有了新的理解。之所以这两篇 Wiki 没有解决我的问题,是因为我的问题并不在 GNOME Keyring 上,而是在 Python KeyringD-Bus 上。

我写了一篇帖子 关于使用BCloud遇到的“勾选记住密码会卡住”问题的研究和理解,大神如果有空请指点一下,让我能对此有更深的了解,写出一篇正确的 Wiki 文章。

@vipzrx
Copy link

vipzrx commented Nov 11, 2014

刚开始接触bcloud,问题有点小白。
我现在在用debian wheezy stable ,系统上默认安装的是python 2.7

$ python --version
Python 2.7.3

我冲github上clone了源码,运行的时候报:
kk@X200:~/soft/soft_github/bcloud$ ./bcloud-gui
/usr/bin/env: python3: No such file or directory

我得去安装python3
我现在在开发一个基于python2.7的上位机,需要用2.7
请问,我该怎么作,才能同时安装2.x和3.x,但是默认使用2.x呢?

On 11/10/2014 02:46 PM, Fernando Gilberto Pereira da Silva wrote:

@LiuLang https://github.com/LiuLang 大神,您好!

很抱歉这两周都没有回复。

最后, 我还是建议你再读一下这个wiki,
https://wiki.archlinux.org/index.php/GNOME_Keyring,

其实我在发这个 Issue 之前已经看过这篇 Wiki ,然后我又看了您提到的
GNOME 官方的那篇 Wiki 。它们并没有解决我的问题。经过这两周的再次研究思
考,我对这个问题又有了新的理解。之所以这两篇 Wiki 没有解决我的问题,是
因为我的问题并不在 |GNOME Keyring| 上,而是在 |Python Keyring| 和
|D-Bus| 上。

我写了一篇帖子 关于使 用BCloud遇到的“勾选记住密码会卡住”问题的研究和理
https://bbs.archlinuxcn.org/viewtopic.php?pid=20918,大神如果有空
请指点一下,让我能对此有更深的了解,写出一篇 正确的 Wiki 文章。


Reply to this email directly or view it on GitHub
#63 (comment).

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

4 participants