xybu / onedrived-dev

A Microsoft OneDrive client for Linux, written in Python3.
https://github.com/xybu/onedrived-dev
MIT License
705 stars 78 forks source link

Daemon fails to start because Keyring requires extra password #27

Open Graf17 opened 7 years ago

Graf17 commented 7 years ago

Hi!

First of all thanks for the development of this useful piece of software. :-)

But I do have a problem, when I try to start the daemon with

onedrived start

A second after starting I get:

Starting onedrived ... FAILED ERROR: Child exited immediately with exit code 127

When I start it with

onedrived start --debug

it's asking me for the keyring password. So, I assume, that when I try to start the daemon without --debug it's trying to get the password too?

Are there any additional logfiles to check, what's really going on?

Thanks for any support.

Regards, Andreas

xybu commented 7 years ago

Daemon mode and debug mode basically do the same except that daemon mode redirects output to log while debug mode prints to stdout. If keyring asks for password in debug mode it should do the same in daemon mode.

All sensitive credentials / tokens are stored in keyring when you authorize accounts using onedrived-pref and every time onedrived runs it needs to recover the credentials / tokens from there in order to access OneDrive API on your behalf.

My reference distro is Xubuntu 16.04 and haven't encountered this situation yet. What desktop environment are you using? Is it prompting for password in cmdline (For now I don't have any idea how to automatically and securely feed the process this important password) or does a new window pop up?

xybu commented 7 years ago

I just noticed that on my Kubuntu machine kWallet will ask for password if it's different from my login password, but it pops up a new window.

Graf17 commented 7 years ago

OK, I accidentally deleted my last comment. So, once again, (but different):

I have it running within a LXC-container with Debian Jessie on a Omnia Turris router with ARM architecture. So I have a very specific setup.

Still everything works fine, when I start it with --debug. The linux login password and the keyring password match.

When I start it, it looks like that:

root@file:~# onedrived start --debug Starting onedrived ... OK Please enter password for encrypted keyring:

Graf17 commented 7 years ago

And, to make it clear: I don't use any desktop environment at all on that machine. I have onedrived running on my fileserver.

alexhocksween commented 6 years ago

@xybu do you have any thoughts on the best way to handle this? I'd be happy to give it a go and submit a PR.

jakebrinkmann commented 5 years ago

If it is helpful, I think I just made a tiny step towards getting it working in "headless" (no graphics/desktop) mode:

# Start the daemon, unlocking the default keyring
echo 'myPasswordIsASecret' | /usr/bin/gnome-keyring-daemon --login

# Start the service
onedrived start

Maybe not the best 😅 I don't know enough about authentication to decipher what appears to be the Gnome Keyring: Automatic Unlocking / PAM


$ gnome-keyring-daemon --version
gnome-keyring-daemon: 3.28.2
testing: enabled
gilbertoferreira commented 5 years ago

Hi there

I have the same issues but get error... Try everything but doesnt work...

echo 'password' | /usr/bin/gnome-keyring-daemon --login GNOME_KEYRING_CONTROL=/root/.cache/keyring-W3I9ZZ pve01:~# onedrived start Starting onedrived ... FAILED ERROR: Child exited immediately with exit code 127 pve01:~# onedrived start --debug Starting onedrived ... OK Please enter password for encrypted keyring: [2019-04-12 12:40:09,971] INFO: MainThread: Shutting down. Code: Terminated by SIGINT (2). [2019-04-12 12:40:09,974] INFO: MainThread: Shut down complete. [2019-04-12 12:40:10,008] DEBUG: Dummy-1: Close <_UnixSelectorEventLoop running=False closed=False debug=True> All children are gone. Parent is exiting...