Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am running a Suse Linux 11.04 system. My problem is that when I do a fresh login into a shell as root, a new Xauthority file of the form xauth***** gets created in the /root/ directory. Upon exiting from the shell, a few .xauth files remain behind. I tried it on other systems but this does not happen. Also why is the XAUTHORITY environment variable set only for root and not for my other users in the system?

man xdm says the follwing about the XAUTHORITY environment variable


When xdm is unable to write to the usual user authorization file ($HOME/.Xauthority), it creates a unique file name in this directory and points the environment variable XAUTHORITY at the created file. It uses /tmp by default.

So in my system I do this:


Using authority file /root/.xauthPpRsfU


I exit [Ctrl+d] and I log back in, I see that now it is starting to use a different .xauth* file.


Using authority file /root/.xauthq1xt4z


Why does it need to keep on creating a diffent xauth file everytime I login? Also why in root because the default location is /tmp/? I have not set .DisplayManagaer.DISPLAY.userAuthDir to /tmp in the xdm configuration file.

I dont see this behaviour on any other system. In RHEL and Ubuntu all is fine.

For pointers I am not the only one who faces this issue. I guess this post is similar: `$XAUTHORITY` appears from 'nowhere' on su+tmux.

Does anyone know how I can fix this?

share|improve this question
/root is the home directory for the user root, therefore the location is not surprising. – celtschk Aug 13 '14 at 16:35

If you're using su to login as root, then it’s likely due to the use of pam_xauth to set up a new xauthority file for that session, as described in this old e-mail thread.

share|improve this answer

Long back, I had asked the same question. Who exports/has this variable set in their process environment. Fortunately, I was taught to have a shell script. This works on Solaris. On Linux, it could be little different to parse the process' parent environment.

I could even give you the conversation I had then: https://groups.google.com/group/comp.unix.shell/browse_thread/thread/a91bf497add5544e/56dd2f64c4029734?hl=en&ie=UTF-8&q=mnikhil+who+exported+this+variable&pli=1#56dd2f64c4029734

ptree $$ | 
while read pid prog 
  /usr/ucb/ps eww $pid 
done | 
sed -n ' 
s/^ *// 
s/ .*/:/p 
s/^.* \('"$1"'=[^ ]*\).*/\1/p 
/^'"$$"' /q' 

envtrace PATH envtrace OSTYPE

share|improve this answer
On Linux: grep -lsz '^AUTHORITY=' /proc/[0-9]*/environ | cut -d / -f 3 – Gilles Dec 7 '11 at 1:00
i believe that your command above gives me the pid of the process that has changed / updated the XAUTHROTIY environment variable . Could be help me with the logic behind this kind of usage . Seems a handy command . – user1039494 Dec 7 '11 at 5:22

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.