View previous topic :: View next topic |
Author |
Message |
Timmer Guru
Joined: 24 Aug 2004 Posts: 373 Location: Duluth, MN, USA
|
Posted: Tue Jun 03, 2008 2:43 am Post subject: can't log in as normal user |
|
|
I seem to be having a permissions problem, but I'm not sure where, so I'm hoping someone can help me out.
I've been away for the last month, and just got done doing a farmload of updates including kde-4.0.4. Unfortunately there were a bunch (300+) so it's hard to narrow down what the problem might be. Or it might be a red herring.
Anyway, if I log in from kdm (3.5 or 4.0 -- they behave the same):
logging into kde-3.5 - screen just hangs. ctrl-alt-bksp
logging into xfce same as above
logging into kde-4 - loading splash comes up with the blinking hard drive and then I get an error in an X dialog;
"Call to lnusertemp failed (temporary directories full?). Check your installation."
After I click Okay, it sends me back to the log in screen.
Logging in from xdm as user, just sends me straight back to xdm
Logging in from xdm as root works just fine - sends me to an X session
Logging in from the terminal as user I get "-bash: /dev/null: Permission denied" If I ^C then it stops and I get a normal prompt and things seem to work fine.
Logging in from the terminal as root works just fine
Logging in from kdm as root isn't possible. kdm is too smart for it's own good.
ooh, wait. I just noticed something new too. /proc, /sys, /dev, /dev/shm, and /dev/pts are all getting mounted before /. Is that normal?
[Edit: nevermind, that mount order is fine and normal. or at least my laptop does it that way too]
Last edited by Timmer on Tue Jun 03, 2008 5:08 am; edited 1 time in total |
|
Back to top |
|
|
makton3g Tux's lil' helper
Joined: 19 Aug 2004 Posts: 88
|
Posted: Tue Jun 03, 2008 2:56 am Post subject: |
|
|
did you do an
Code: |
env-update
source /etc/profile
|
When you in root? Try that.
I would have to watch my laptop boot to verify the mounts at boot. the laptop is a fresh install from few days ago. |
|
Back to top |
|
|
Timmer Guru
Joined: 24 Aug 2004 Posts: 373 Location: Duluth, MN, USA
|
Posted: Tue Jun 03, 2008 3:05 am Post subject: |
|
|
That didn't do it. Same behaviors as before.
But thanks for the quick suggestion. |
|
Back to top |
|
|
Timmer Guru
Joined: 24 Aug 2004 Posts: 373 Location: Duluth, MN, USA
|
Posted: Tue Jun 03, 2008 4:53 pm Post subject: |
|
|
I found a thread on LinuxForums that suggests a few things. I'll have to check them when I get home, but the possibilities are lost ownership of ~, or an /etc/passwd file that's not world readable.
I'll post back if either of those resolve this. |
|
Back to top |
|
|
Timmer Guru
Joined: 24 Aug 2004 Posts: 373 Location: Duluth, MN, USA
|
Posted: Tue Jun 03, 2008 9:54 pm Post subject: |
|
|
Those weren't my problem. Turns out that /dev/null had the wrong permissions some how. They got set to 700 instead of 666. |
|
Back to top |
|
|
Ryhajlo n00b
Joined: 08 Oct 2007 Posts: 31
|
Posted: Wed Jun 04, 2008 6:32 am Post subject: |
|
|
I had a similar problem last summer and after battling it for weeks I just created a new user account and used root to transfer my important stuff over. But that is a last resort, sorry I dont have a better solution, but someone probably does |
|
Back to top |
|
|
Stolz Moderator
Joined: 19 Oct 2003 Posts: 3028 Location: Hong Kong
|
Posted: Tue Jul 29, 2008 4:31 pm Post subject: |
|
|
Just reporting for users that get here via the search option:
I was having the same issue in a fresh new installed box. The first time I log in into KDE-4 there is no problem, but next attemps I allways get the message:
Call to lnusertemp failed (temporary directories full?). Check your installation?
After researching a bit, I found out the cause and the solution that works for me. If you look at the startkde script (/usr/kde/kde_version/bin/startkde) you will find this piece of code: Code: |
# Link "tmp" "socket" and "cache" resources to directory in /tmp
# Creates:
# - a directory /tmp/kde-$USER and links $KDEHOME/tmp-$HOSTNAME to it.
# - a directory /tmp/ksocket-$USER and links $KDEHOME/socket-$HOSTNAME to it.
# - a directory /var/tmp/kdecache-$USER and links $KDEHOME/cache-$HOSTNAME to it.
# Note: temporary locations can be overriden through the KDETMP and KDEVARTMP
# environment variables
for resource in tmp cache socket; do
if ! "$lnusertemp" $resource >/dev/null; then
echo 'startkde: Call to lnusertemp failed (temporary directories full?). Check your installation?.' 1>&2
test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
xmessage -geometry 600x100 "Call to lnusertemp failed (temporary directories full?). Check your installation?"
exit 1
fi
done
|
This loop calls the lnusertemp executable which (I guess) is in charge of creating or checking the temporaly direcotries and files structure that a KDE user session needs. In my case the problem was lnusertemp spects /var/tmp to be a directory but in my system /var/tmp is a symbolic link pointing to /tmp Code: | $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda3 5.7G 38M 5.4G 1% /tmp
$ ls -ld /var/tmp
drwxrwxrwt 3 root root 4,0K jul 29 16:26 /var/tmp/ -> /tmp/var_tmp
$ ls -d /tmp/
drwxrwxrwt 9 root root 4,0K jul 29 16:32 /tmp/
$ ls -d /tmp/var_tmp
drwxrwxrwt 4 root root 4,0K jul 29 17:54 /tmp/var_tmp |
The solution is now obvious, you only have to bypass the check that fails in you case. In my case it can be acomplished in several manners. I can comment the "exit 1" and "xmessage..." lines, or remove the word cache from "for resource in tmp cache socket; do", etc...
Note in my case the workaround is not dangerous because althought /var/tmp/ is a not a directory, it points to a valid directory but in other cases, cosider the consecuences of removing a checkpoint from the script becasue if it fails there should be a good reason for it.
Hope it helps |
|
Back to top |
|
|
lamawithonel n00b
Joined: 09 Apr 2008 Posts: 14
|
Posted: Sun Aug 10, 2008 1:44 am Post subject: |
|
|
^^^^^^^^^^^^^^^
A better fix is explained in the comments using the environmental variables ${KDETMP} and ${KDEVARTMP}.
Code: | # Note: temporary locations can be overriden through the KDETMP and KDEVARTMP
# environment variables |
All you have to do is add something like this to the top of the file:
Code: | export KDETMP=/mnt/var/tmp
export KDEVARTMP=/mnt/var/var/tmp |
This is an example from my system where I've symlinked /tmp and /var to a partition mounted at /mnt/var. Whatever directories you decide to use, all you have to do is replace the values with the fully-qualified path names. |
|
Back to top |
|
|
|