Answers:
您可以pam_gnome_keyring.so
用来启动和解锁守护程序。GDM已经做到了;对于login
,您必须手动配置它。
将这些行添加到/etc/pam.d/login
:
auth可选pam_gnome_keyring.so 会话可选pam_gnome_keyring.so auto_start
如果您不使用密码(使用Kerberos或公共密钥的SSH)登录,则可能会起作用:(我尚未测试过)
echo -n“ mypassword” | gnome-keyring-daemon-登录
(您仍然需要运行守护程序-通过PAM或使用--daemonize
。
gnome-keyring-daemon --help
。我只是检查了联机帮助页和/ usr / share / doc。
read -rsp "Password: " pass; echo -n "$pass" | gnome-keyring-daemon --login
在脚本中执行以下操作:
gnome-keyring-daemon --help
给了我很好的概述,但man gnome-keyring-daemon
只包含对程序本身的简短说明,但没有参数。
已经为我们的Linux服务器执行了安装具有密钥环支持的svn和安装Collabnet keyring_tool应用程序的必要工作。
1)配置SVN客户端使用密钥环:
1.1)编辑〜/ .subversion / config
[auth]
password-stores = gnome-keyring
1.2)编辑〜/ .subversion /服务器
[global]
store-passwords = yes
store-plaintext-passwords = no
2)为您的密码创建一个密钥环。系统将提示您创建一个新密码来解锁密钥环;这可能是您想要的:
keyring_tool --create=svn
3)将新的密钥环设置为默认值:
keyring_tool --setdef=svn
4)在.bash_profile或.bash_login中(假设您使用bash作为终端)
if [ -e /usr/bin/gnome-keyring-daemon ]; then
if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then
# Create dbus transport link for SVN to talk to the keyring.
eval `dbus-launch --sh-syntax`
# Start the keyring daemon.
# The use of export here captures the GNOME_KEYRING_PID, GNOME_KEYRING_SOCK
# env values echoed out at startup.
export `/usr/bin/gnome-keyring-daemon`
fi
fi
5)在.bash_logout中
# Kill the message bus established for SVN / Keyring communication
if [ ! -z "`kill -0 $DBUS_SESSION_BUS_PID 2>&1`" ]; then
kill $DBUS_SESSION_BUS_PID > /dev/null 2>&1
fi
# Kill the Gnome Keyring Daemon prior to logout.
if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then
kill $GNOME_KEYRING_PID > /dev/null 2>&1
fi
我在尝试建立一种轻松的方式来确保授权用户在工作中访问某些SVN仓库时遇到了类似的问题。基本上,每次用户访问服务器时,我们都必须强制进行凭据检查,因此,即使svn update命令也需要进行身份验证。显然,纯文本密码存储已经用完了,因此,经过一些研究,我发现使用gnome-keyring以此方式以不断的身份验证请求骚扰我们的用户群,同时仍将未经授权的用户拒之门外,使他们无法访问存储库。
我们每天的大部分工作都是通过ssh隧道完成的,并且没有Red Hat支持的RedHat服务器,因此我不得不找到一种X11支持的方法。经过一些搜索后,我设法在这里找到解决方法:
他们的关键是使用Collabnet keyring_tool在没有gnome-keyring-manager客户端的情况下创建密钥环,并自行建立dbus-launch,而不是让SVN处理设置。SVN使用DBUS连接到gnome-keyring-daemon并影响整体身份验证。通过使用-sh-syntax手动启动和拆除dbus会话,可以避免尝试在dbus启动时连接到X客户端。如果您只是启动gnome-keyring-daemon并尝试使用SVN,它仍会提示您输入密钥环密码,但同时也会提示您输入SVN凭据。由于缺少X客户端,SVN尝试启动dbus时会失败;显然,SVN在启动dbus时不使用任何特殊标志。
首先,您真正想做的是严格从命令行运行Ubuntu One。查看Ubuntu One常见问题解答。该FAQ说,这是目前不可能,但也有像一些CLI工具u1sdtool和u1sync。在Launchpad上的Ubuntu One上还有一套常见问题解答;内容可能与早期的wiki.ubuntu.com链接相同。
关于您对gnome-keyring-daemon的实际问题,常见问题解答建议(1)设置自动登录和(2)将您的钥匙圈密码与登录密码同步。这将(理论上),避免密码提示,但将需要至少一个基本的X-会议上运行。
Launchpad上有一个Ubuntu One bug / wishlist,它要求更轻松地处理无头系统。显然,建议从源代码进行构建以进行轻量级安装(以避免需要所有GUI库等)。 这个评论很老,但是特别有趣:
问题是我们使用python-gnomekeyring。为了支持无头显示器,我们必须切换到python-keyring,并处理在无头显示器上存储标记(而不是gnome-keyring)。但是,对于Karmic封装,由于冻结,这些都不会发生,并且此更改在SRU中是不可接受的。
对于Lucid,我们应该有一个更强大的身份验证服务,这应该使我们能够更好地支持无头显示器。
我无法确定Lucid是否已经真正使用了这种“更强大的身份验证服务”。基于软件包的依赖关系,似乎Ubuntu One客户端仍然依赖python-gnomekeyring。
我成功地使mysql-workbench在x转发的SSH会话中与gnome-keyring一起工作。这是一个使用公钥身份验证的帐户(无密码)。
连接到ssh会话后,我使用dbus-run-session来实现此目的:
dbus-run-session bash -c 'GNOME_KEYRING_CONTROL=1 mysql-workbench --verbose'
希望这些信息对某人有用!
--login
选项(未记录?)非常有用,尽管我确定不想将未隐藏的密码保留在脚本中或放在命令行中。从(非shell语言)脚本中以非回显模式进行读取,然后将该输入传递给生成的守护程序,这可能是实现此目的的一种好方法。每次启动时,我只需要启动一次此过程,因此输入密码很有意义。我只需要能够在命令行而不是通过GTK对话框来做到这一点。