|
Okay, I managed to figure out how to strace cfsd. I probably don't have exactly the begin and end of the touch here, but:
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND, revents=POLLIN|POLLRDNORM}], 1, -1) = 1
recvmsg(3, {msg_name(16)={sin_family=AF_INET, sin_port=htons(800), sin_addr=inet_addr("127.0.0.1")}}, msg_iov(1)=[{"\'\20_\250\0\0\0\0\0\0\0\2\0\1\206\243\0\0\0\2\0\0\0\4"..., 8800}], msg_controllen=24, msg_control=0x8092888, , msg_flags=0}, 0) = 112
setfsgid32(0x3e8) = 0
setfsuid32(0x3e8) = 0
lstat64("/mnt/ubdc/home/roy/foo/.", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
setresuid32(0xffffffff, 0, 0xffffffff) = 0
setresgid32(0xffffffff, 0, 0xffffffff) = 0
sendmsg(3, {msg_name(16)={sin_family=AF_INET, sin_port=htons(800), sin_addr=inet_addr("127.0.0.1")}}, msg_iov(1)=[{"\'\20_\250\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 128}], msg_controllen=24, msg_control=0x8092888, , msg_flags=0}, 0) = 128
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND, revents=POLLIN|POLLRDNORM}], 1, -1) = 1
recvmsg(3, {msg_name(16)={sin_family=AF_INET, sin_port=htons(800), sin_addr=inet_addr("127.0.0.1")}}, msg_iov(1)=[{"(\20_\250\0\0\0\0\0\0\0\2\0\1\206\243\0\0\0\2\0\0\0\4\0"..., 8800}], msg_controllen=24, msg_control=0x8092888, , msg_flags=0}, 0) = 112
setfsgid32(0x3e8) = 0
setfsuid32(0x3e8) = 0
lstat64("/mnt/ubdc/home/roy/foo/./a08d833eb8721160", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
readlink("/mnt/ubdc/home/roy/foo/./.pvect_a08d833eb8721160", "c4e4b987", 9) = 8
lstat64("/mnt/ubdc/home/roy/foo/./a08d833eb8721160", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
setresuid32(0xffffffff, 0, 0xffffffff) = 0
setresgid32(0xffffffff, 0, 0xffffffff) = 0
sendmsg(3, {msg_name(16)={sin_family=AF_INET, sin_port=htons(800), sin_addr=inet_addr("127.0.0.1")}}, msg_iov(1)=[{"(\20_\250\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 128}], msg_controllen=24, msg_control=0x8092888, , msg_flags=0}, 0) = 128
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND, revents=POLLIN|POLLRDNORM}], 1, -1) = 1
recvmsg(3, {msg_name(16)={sin_family=AF_INET, sin_port=htons(800), sin_addr=inet_addr("127.0.0.1")}}, msg_iov(1)=[{")\20_\250\0\0\0\0\0\0\0\2\0\1\206\243\0\0\0\2\0\0\0\1\0"..., 8800}], msg_controllen=24, msg_control=0x8092888, , msg_flags=0}, 0) = 104
sendmsg(3, {msg_name(16)={sin_family=AF_INET, sin_port=htons(800), sin_addr=inet_addr("127.0.0.1")}}, msg_iov(1)=[{")\20_\250\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 96}], msg_controllen=24, msg_control=0x8092888, , msg_flags=0}, 0) = 96
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND, revents=POLLIN|POLLRDNORM}], 1, -1) = 1
recvmsg(3, {msg_name(16)={sin_family=AF_INET, sin_port=htons(800), sin_addr=inet_addr("127.0.0.1")}}, msg_iov(1)=[{"*\20_\250\0\0\0\0\0\0\0\2\0\1\206\243\0\0\0\2\0\0\0\4\0"..., 8800}], msg_controllen=24, msg_control=0x8092888, , msg_flags=0}, 0) = 112
setfsgid32(0x3e8) = 0
setfsuid32(0x3e8) = 0
lstat64("/mnt/ubdc/home/roy/foo/.", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
setresuid32(0xffffffff, 0, 0xffffffff) = 0
setresgid32(0xffffffff, 0, 0xffffffff) = 0
sendmsg(3, {msg_name(16)={sin_family=AF_INET, sin_port=htons(800), sin_addr=inet_addr("127.0.0.1")}}, msg_iov(1)=[{"*\20_\250\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 128}], msg_controllen=24, msg_control=0x8092888, , msg_flags=0}, 0) = 128
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND, revents=POLLIN|POLLRDNORM}], 1, -1) = 1
recvmsg(3, {msg_name(16)={sin_family=AF_INET, sin_port=htons(800), sin_addr=inet_addr("127.0.0.1")}}, msg_iov(1)=[{"+\20_\250\0\0\0\0\0\0\0\2\0\1\206\243\0\0\0\2\0\0\0\4\0"..., 8800}], msg_controllen=24, msg_control=0x8092888, , msg_flags=0}, 0) = 112
setfsgid32(0x3e8) = 0
setfsuid32(0x3e8) = 0
lstat64("/mnt/ubdc/home/roy/foo/./a08d833eb8721160", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
readlink("/mnt/ubdc/home/roy/foo/./.pvect_a08d833eb8721160", "c4e4b987", 9) = 8
lstat64("/mnt/ubdc/home/roy/foo/./a08d833eb8721160", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
setresuid32(0xffffffff, 0, 0xffffffff) = 0
setresgid32(0xffffffff, 0, 0xffffffff) = 0
sendmsg(3, {msg_name(16)={sin_family=AF_INET, sin_port=htons(800), sin_addr=inet_addr("127.0.0.1")}}, msg_iov(1)=[{"+\20_\250\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 128}], msg_controllen=24, msg_control=0x8092888, , msg_flags=0}, 0) = 128
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND, revents=POLLIN|POLLRDNORM}], 1, -1) = 1
recvmsg(3, {msg_name(16)={sin_family=AF_INET, sin_port=htons(800), sin_addr=inet_addr("127.0.0.1")}}, msg_iov(1)=[{",\20_\250\0\0\0\0\0\0\0\2\0\1\206\243\0\0\0\2\0\0\0\2\0"..., 8800}], msg_controllen=24, msg_control=0x8092888, , msg_flags=0}, 0) = 136
setfsgid32(0x3e8) = 0
setfsuid32(0x3e8) = 0
utime("/mnt/ubdc/home/roy/foo/./a08d833eb8721160", [1969/12/31-16:00:01, 1969/12/31-16:00:01]) = 0
lstat64("/mnt/ubdc/home/roy/foo/./a08d833eb8721160", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
setresuid32(0xffffffff, 0, 0xffffffff) = 0
setresgid32(0xffffffff, 0, 0xffffffff) = 0
sendmsg(3, {msg_name(16)={sin_family=AF_INET, sin_port=htons(800), sin_addr=inet_addr("127.0.0.1")}}, msg_iov(1)=[{",\20_\250\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 96}], msg_controllen=24, msg_control=0x8092888, , msg_flags=0}, 0) = 96
poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, -1) = -1 EINTR
The interesting call is to utime() about ten lines up from the end. This is setting the access and modification times on the encrypted file in the real directory. There we can see that the time passed in is the bogus 1969 date.
|