Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Problem

I am seeing two different /tmp directories. In a plain GNOME terminal ls -lia /tmp gives the following:

total 136
  5797 drwxrwxrwt 36 root root     780 Oct  5 20:57 .
     2 drwxr-xr-x 21 root root    4096 Oct  5 19:48 ..
 ...snip...
 32824 -rw-------  1 me   users   1872 Oct  5 18:04 krb5cc_1000
 ...snip...

In a script started by cupsd, ls -lia /tmp >> /test.log gives a different a different folder with a different inode!

total 4
127684 drwxrwxrwt  2 root root   40 Oct  5 19:57 .
     2 drwxr-xr-x 21 root root 4096 Oct  5 19:48 ..

In particular, I get klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_1000)

Background

I'm using Kerberos authentication with a shared samba printer. This requires running smbspool as my user instead of lp, so it can read /tmp/krb5cc_1000. I used the hacked smb script in http://www.linuxquestions.org/questions/debian-26/cups-printing-from-ad-integrated-workstation-to-ad-print-shares-using-kerberos-auth-722301/ to achieve this.

Here's my /usr/lib/cups/backend/ksmb:

#!/bin/bash
echo 'network smb "Unknown" "Windows Printer via SAMBA"'
ls -lia /tmp &>> /test.log
su $2 -c "klist &>> /test.log"
su -c "/usr/bin/smbspool $1 $2 \"$3\" $4 \"$5\"" $2

Unfortunately, from the script's perspective, /tmp/krb5cc_1000 does not exist, and the authentication fails.

I'm running Arch x64, systemd, GNOME 3. I initially guessed there was something strange going on with /tmp being a tmpfs. However, I get the same failure when I comment out the tmpfs mount in fstab.

share|improve this question
add comment

1 Answer

up vote 1 down vote accepted

It looks like a chroot side effect. In which case find / -inum 127684 tells you where this /tmp is located.

share|improve this answer
    
What chroot? Does cupsd run a chroot by default for some reason? –  terdon Oct 6 '12 at 10:50
    
I might, that's a wild guess. Did you run the command I suggested to figure it out ? –  jlliagre Oct 6 '12 at 16:30
1  
Thanks for the tip. The find command pointed to /tmp/systemd-private-XXXXXX. It turns out that systemd gave cupsd its own private tmp dir. I fixed my issue by disabling PrivateTmp in /etc/systemd/system/printer.target.wants/cups.service and restarting cups. –  blah Oct 6 '12 at 18:31
add comment

Your Answer

 
discard

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.