I
Ittay Dror
Hi,
I have a script with
puts %x{echo hi}
When run normally it works.
When run under a drb server that was started with the root user (sudo),
it works.
But when run under a drb server that was started with a normal user, it
doesn't work.
Stracing shows that the subprocess is started, but 'echo' is never
executed (executing '/bin/echo' from a bash shell works). (Below see the
relevant parts of strace as root and as normal user)
Can someone shed some light on this?
Thanks,
Ittay
strace as root:
[pid 27075] stat64("/usr/local/sbin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27075] stat64("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27075] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27075] stat64("/usr/local/bin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27075] stat64("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27075] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27075] stat64("/usr/sbin", {st_mode=S_IFDIR|0755, st_size=12288,
...}) = 0
[pid 27075] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27075] stat64("/usr/bin", {st_mode=S_IFDIR|0755, st_size=77824,
...}) = 0
[pid 27075] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27075] stat64("/sbin", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
[pid 27075] stat64("/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27075] stat64("/usr/X11R6/bin", {st_mode=S_IFDIR|0755,
st_size=77824, ...}) = 0
[pid 27075] stat64("/usr/X11R6", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27075] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27075] setitimer(ITIMER_VIRTUAL, {it_interval={0, 0}, it_value={0,
0}}, NULL) = 0
[pid 27075] execve("/bin/echo", ["/bin/echo", "hi"], [/* 17 vars */]) = 0
...
strace as user:
[pid 27093] stat64("/home/ittayd/bin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27093] stat64("/home/ittayd", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27093] stat64("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/home/ittayd/bin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27093] stat64("/home/ittayd", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27093] stat64("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/local/sbin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27093] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/local/bin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27093] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/sbin", {st_mode=S_IFDIR|0755, st_size=12288,
...}) = 0
[pid 27093] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/bin", {st_mode=S_IFDIR|0755, st_size=77824,
...}) = 0
[pid 27093] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/sbin", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
[pid 27093] stat64("/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/games", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27093] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/opt/maven/bin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27093] stat64("/opt/maven", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27093] stat64("/opt", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
[pid 27093] clock_gettime(CLOCK_MONOTONIC, {133977, 363841305}) = 0
[pid 27093] clock_gettime(CLOCK_MONOTONIC, {133977, 363869662}) = 0
[pid 27093] select(7, [3 5], [], [], {0, 0}) = -1 EBADF (Bad file
descriptor)
[pid 27093] select(7, [3], [5], [], NULL) = -1 EBADF (Bad file descriptor)
....
I have a script with
puts %x{echo hi}
When run normally it works.
When run under a drb server that was started with the root user (sudo),
it works.
But when run under a drb server that was started with a normal user, it
doesn't work.
Stracing shows that the subprocess is started, but 'echo' is never
executed (executing '/bin/echo' from a bash shell works). (Below see the
relevant parts of strace as root and as normal user)
Can someone shed some light on this?
Thanks,
Ittay
strace as root:
[pid 27075] stat64("/usr/local/sbin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27075] stat64("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27075] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27075] stat64("/usr/local/bin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27075] stat64("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27075] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27075] stat64("/usr/sbin", {st_mode=S_IFDIR|0755, st_size=12288,
...}) = 0
[pid 27075] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27075] stat64("/usr/bin", {st_mode=S_IFDIR|0755, st_size=77824,
...}) = 0
[pid 27075] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27075] stat64("/sbin", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
[pid 27075] stat64("/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27075] stat64("/usr/X11R6/bin", {st_mode=S_IFDIR|0755,
st_size=77824, ...}) = 0
[pid 27075] stat64("/usr/X11R6", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27075] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27075] setitimer(ITIMER_VIRTUAL, {it_interval={0, 0}, it_value={0,
0}}, NULL) = 0
[pid 27075] execve("/bin/echo", ["/bin/echo", "hi"], [/* 17 vars */]) = 0
...
strace as user:
[pid 27093] stat64("/home/ittayd/bin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27093] stat64("/home/ittayd", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27093] stat64("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/home/ittayd/bin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27093] stat64("/home/ittayd", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27093] stat64("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/local/sbin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27093] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/local/bin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/local", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27093] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/sbin", {st_mode=S_IFDIR|0755, st_size=12288,
...}) = 0
[pid 27093] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/bin", {st_mode=S_IFDIR|0755, st_size=77824,
...}) = 0
[pid 27093] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/sbin", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
[pid 27093] stat64("/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/usr/games", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27093] stat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 27093] stat64("/opt/maven/bin", {st_mode=S_IFDIR|0755,
st_size=4096, ...}) = 0
[pid 27093] stat64("/opt/maven", {st_mode=S_IFDIR|0755, st_size=4096,
...}) = 0
[pid 27093] stat64("/opt", {st_mode=S_IFDIR|0777, st_size=4096, ...}) = 0
[pid 27093] clock_gettime(CLOCK_MONOTONIC, {133977, 363841305}) = 0
[pid 27093] clock_gettime(CLOCK_MONOTONIC, {133977, 363869662}) = 0
[pid 27093] select(7, [3 5], [], [], {0, 0}) = -1 EBADF (Bad file
descriptor)
[pid 27093] select(7, [3], [5], [], NULL) = -1 EBADF (Bad file descriptor)
....