On Wed, 11 Jul 2012 21:05:31 +0200
Milan Knížek <[email protected]> wrote:
> sorry, sent from a wrong email address and probably silently rejected by
> Majordomo...
> -------- Přeposlaná zpráva --------
> Předmět: Re: mount.cifs multiuser w/o krb5? How?
> Datum: Tue, 10 Jul 2012 23:01:32 +0200
>
> Jeff Layton writes:
>
> >> cifscreds add is more or less equivalent to a command like this:
> >
> > $ keyctl add logon cifs:a:ip_address 'username:password' @s
> >
>
> There seems to be a general problem with adding keys (@s) to the default
> "session" keyring. Adding user type keys (@u) works.
>
> $ keyctl add logon description data @s
> does not add anything to the _uid_ses:UID keyring, which is automatically
> created after login.
>
> Interestingly, when a new session keyring is added, then it works:
>
> [root@client ~]# su - zmrzlinka
> [zmrzlinka@client ~]$ keyctl show
> Session Keyring
> 1037083570 --alswrv 1001 -1 keyring: _uid_ses.1001
> 578017679 --alswrv 1001 -1 \_ keyring: _uid.1001
> [zmrzlinka@client ~]$ cifscreds add toillet
> Password:
> [zmrzlinka@client ~]$ keyctl show
> Session Keyring
> 1037083570 --alswrv 1001 -1 keyring: _uid_ses.1001
> 578017679 --alswrv 1001 -1 \_ keyring: _uid.1001
> [zmrzlinka@client ~]$ keyctl session new-session
> Joined session keyring: 871855811
> [zmrzlinka@client ~]$ keyctl show
> Session Keyring
> 871855811 --alswrv 1001 100 keyring: new-session
> [zmrzlinka@client ~]$ cifscreds add toillet
> Password:
> [zmrzlinka@client ~]$ keyctl show
> Session Keyring
> 871855811 --alswrv 1001 100 keyring: new-session
> 244698182 ----sw-v 1001 100 \_ logon: cifs:a:192.168.1.3
>
[...]
> [root@client ~]# su - zmrzlinka
> [zmrzlinka@client ~]$ strace cifscreds add toillet
> execve("/usr/bin/cifscreds", ["cifscreds", "add", "toillet"], [/* 27 vars
> */]) = 0
> brk(0) = 0x64e000
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
> 0x7f4eaed93000
> access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or
> directory)
> open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
> fstat(3, {st_mode=S_IFREG|0644, st_size=256357, ...}) = 0
> mmap(NULL, 256357, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f4eaed54000
> close(3) = 0
> open("/usr/lib/libkeyutils.so.1", O_RDONLY|O_CLOEXEC) = 3
> read(3,
> "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\21\0\0\0\0\0\0"..., 832)
>
> = 832
> fstat(3, {st_mode=S_IFREG|0755, st_size=14480, ...}) = 0
> mmap(NULL, 2109608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
> 0x7f4eae96f000
> mprotect(0x7f4eae972000, 2093056, PROT_NONE) = 0
> mmap(0x7f4eaeb71000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
> MAP_DENYWRITE, 3, 0x2000) = 0x7f4eaeb71000
> close(3) = 0
> open("/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
> read(3,
> "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\30\2\0\0\0\0\0"..., 832)
>
> = 832
> fstat(3, {st_mode=S_IFREG|0755, st_size=1997041, ...}) = 0
> mmap(NULL, 3816528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
> 0x7f4eae5cb000
> mprotect(0x7f4eae766000, 2093056, PROT_NONE) = 0
> mmap(0x7f4eae965000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
> MAP_DENYWRITE, 3, 0x19a000) = 0x7f4eae965000
> mmap(0x7f4eae96b000, 15440, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
> MAP_ANONYMOUS, -1, 0) = 0x7f4eae96b000
> close(3) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
> 0x7f4eaed53000
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
> 0x7f4eaed52000
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
> 0x7f4eaed51000
> arch_prctl(ARCH_SET_FS, 0x7f4eaed52700) = 0
> mprotect(0x7f4eae965000, 16384, PROT_READ) = 0
> mprotect(0x7f4eaeb71000, 4096, PROT_READ) = 0
> mprotect(0x602000, 4096, PROT_READ) = 0
> mprotect(0x7f4eaed94000, 4096, PROT_READ) = 0
> munmap(0x7f4eaed54000, 256357) = 0
> getuid() = 1001
> brk(0) = 0x64e000
> brk(0x66f000) = 0x66f000
> socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
> connect(3, {sa_family=AF_FILE, sun_path="/var/run/nscd/socket"}, 110) = -1
> ENOENT (No such file or directory)
> close(3) = 0
> socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
> connect(3, {sa_family=AF_FILE, sun_path="/var/run/nscd/socket"}, 110) = -1
> ENOENT (No such file or directory)
> close(3) = 0
> open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
> fstat(3, {st_mode=S_IFREG|0644, st_size=274, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
> 0x7f4eaed92000
> read(3, "# Begin /etc/nsswitch.conf\n\npass"..., 4096) = 274
> read(3, "", 4096) = 0
> close(3) = 0
> munmap(0x7f4eaed92000, 4096) = 0
> open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
> fstat(3, {st_mode=S_IFREG|0644, st_size=256357, ...}) = 0
> mmap(NULL, 256357, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f4eaed54000
> close(3) = 0
> open("/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
> read(3,
> "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\"\0\0\0\0\0\0"..., 832) =
>
> 832
> fstat(3, {st_mode=S_IFREG|0755, st_size=52112, ...}) = 0
> mmap(NULL, 2148136, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
> 0x7f4eae3be000
> mprotect(0x7f4eae3ca000, 2093056, PROT_NONE) = 0
> mmap(0x7f4eae5c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
> MAP_DENYWRITE, 3, 0xb000) = 0x7f4eae5c9000
> close(3) = 0
> mprotect(0x7f4eae5c9000, 4096, PROT_READ) = 0
> munmap(0x7f4eaed54000, 256357) = 0
> open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
> fstat(3, {st_mode=S_IFREG|0644, st_size=1439, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
> 0x7f4eaed92000
> read(3, "root:x:0:0:root client:/root:/bi"..., 4096) = 1439
> close(3) = 0
> munmap(0x7f4eaed92000, 4096) = 0
> socket(PF_NETLINK, SOCK_RAW, 0) = 3
> bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
> getsockname(3, {sa_family=AF_NETLINK, pid=18164, groups=00000000}, [12]) = 0
> sendto(3, "\24\0\0\0\26\0\1\3^\227\374O\0\0\0\0\0\0\0\0", 20, 0,
> {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000},
> msg_iov(1)=[{"0\0\0\0\24\0\2\0^\227\374O\364F\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"...,
>
> 4096}], msg_controllen=0, msg_flags=0}, 0) = 224
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000},
> msg_iov(1)=[{"@\0\0\0\24\0\2\0^\227\374O\364F\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"...,
>
> 4096}], msg_controllen=0, msg_flags=0}, 0) = 192
> recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000},
> msg_iov(1)=[{"\24\0\0\0\3\0\2\0^\227\374O\364F\0\0\0\0\0\0", 4096}],
> msg_controllen=0, msg_flags=0}, 0) = 20
> socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 4
> connect(4, {sa_family=AF_FILE, sun_path="/var/run/nscd/socket"}, 110) = -1
> ENOENT (No such file or directory)
> close(4) = 0
> close(3) = 0
> socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
> connect(3, {sa_family=AF_FILE, sun_path="/var/run/nscd/socket"}, 110) = -1
> ENOENT (No such file or directory)
> close(3) = 0
> open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 3
> fstat(3, {st_mode=S_IFREG|0644, st_size=63, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
> 0x7f4eaed92000
> read(3, "#\n# /etc/host.conf\n#\n\norder host"..., 4096) = 63
> read(3, "", 4096) = 0
> close(3) = 0
> munmap(0x7f4eaed92000, 4096) = 0
> getpid() = 18164
> open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 3
> fstat(3, {st_mode=S_IFREG|0644, st_size=63, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
> 0x7f4eaed92000
> read(3, "nameserver 127.0.0.1\nnameserver "..., 4096) = 63
> read(3, "", 4096) = 0
> close(3) = 0
> munmap(0x7f4eaed92000, 4096) = 0
> uname({sys="Linux", node="client", ...}) = 0
> open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 3
> fstat(3, {st_mode=S_IFREG|0644, st_size=622, ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
> 0x7f4eaed92000
> read(3, "#\n# /etc/hosts: static lookup ta"..., 4096) = 622
> read(3, "", 4096) = 0
> close(3) = 0
> munmap(0x7f4eaed92000, 4096) = 0
> keyctl(0xa, 0xfffffffd, 0x4021c2, 0x7fff300084d0, 0) = -1 ENOKEY (Required
> key not available)
> open("/dev/tty", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 3
> ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS,
> {B38400 opost isig icanon echo ...}) = 0
> ioctl(3, SNDCTL_TMR_CONTINUE or SNDRV_TIMER_IOCTL_GPARAMS or TCSETSF,
> {B38400 opost -isig icanon -echo ...}) = 0
> fstat(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(5, 0), ...}) = 0
> ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS,
> {B38400 opost -isig icanon -echo ...}) = 0
> mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
> 0x7f4eaed92000
> write(3, "Password: ", 10Password: ) = 10
> read(3, "\33[B\33[C\33[B\33[D\n", 4096) = 13
> write(3, "\n", 1
> ) = 1
> ioctl(3, SNDCTL_TMR_CONTINUE or SNDRV_TIMER_IOCTL_GPARAMS or TCSETSF,
> {B38400 opost isig icanon echo ...}) = 0
> close(3) = 0
> munmap(0x7f4eaed92000, 4096) = 0
> add_key(0x4021c2, 0x7fff30008410, 0x7fff30008450, 0x17, 0xfffffffd) =
> 588748510
> keyctl(0x5, 0x231796de, 0xd0d0000, 0xffffffffffffffff, 0xfffffffd) = 0
> exit_group(0) = ?
> +++ exited with 0 +++
(cc'ing the keyrings mailing list in the hopes that someone there has
an idea)
Well, that is odd...it looks like the add_key() succeeded, as well as
the keyctl(KEYCTL_SETPERM, ...) call that followed it to set
permissions on the new key.
If it's gone after that, then I can only figure that the cifscreds
process is somehow ending up with a different session keyring than its
parent?
--
Jeff Layton <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html