Hi,

> The "current" permissions of /var/run/screen would be useless, because I
> have changed it manually to the correct permissions already; otherwise I
> can't run screen at all, and I use it every day and I only reboot this
> machine for equipment upgrades or kernel upgrades.
> 
> The current permissions of /usr/bin/screen is as follows:
> 
> -rwxr-sr-x 1 root utmp 303808 2007-09-26 17:57 /usr/bin/screen

this is the code in question:

[screen.c:1014]
              n = (eff_uid == 0 && (real_uid || (st.st_mode & 0775) != 0775)) ? 
0755 :
                  (eff_gid == (int)st.st_gid && eff_gid != real_gid) ? 0775 :
                  0777;
              if (((int)st.st_mode & 0777) != n)
                Panic(0, "Directory '%s' must have mode %03o.", SockDir, n);

If screen insists on mode 0777 for the fifo socket directory, we only have
two possibilities:

1) eff_gid != st.st_gid
Could mean that either /var/run/screen is not group utmp, or the setgid bit
of the binary is being ignored (is the underlying filesystem mounted 'nosuid'?).

2) eff_gid == real_gid
Again setgid not working, or the calling user actually has utmp as his primary 
group.

Could you check these? If all looks ok, could you send me an strace of a screen
invocation? The last 100 lines before the error message should be enough if you
don't want to append the whole thing.
(Note that you'll have to do that as root using 'strace -u', otherwise setgid
won't work.)


Regards,

Jan

Attachment: signature.asc
Description: Digital signature

Reply via email to