Wed 10 Jun 2009 11:29:30 PM UTC, original submission:
Items create in directories with setgid flag set do not inherit parent directory group id.
Steps to reproduce:
------------------
mkdir 1
chgrp someothergroup 1
chmod g+s 1
ls -ld 1
cd 1
mkdir 2
ls -ld 2
expected: 2 groupid should be someothergroup
By looking at strace it appears that glusterfs calls chown immediately after mkdir and overrides group ID.
[pid 2908] mkdir("/data1/glusterfsvol/shared/1", 0755 <unfinished ...>
[pid 2914] <... stat resumed> {st_mode=S_IFDIR|0755, st_size=1024, ...}) = 0
[pid 2908] <... mkdir resumed> ) = 0
[pid 2914] stat("/data1", <unfinished ...>
[pid 2908] chown("/data1/glusterfsvol/shared/1", 0, 0 <unfinished ...>
[pid 2914] <... stat resumed> {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 2908] <... chown resumed> ) = 0
[pid 2914] close(53 <unfinished ...>
[pid 2908] lstat("/data1/glusterfsvol/shared/1", <unfinished ...>
[pid 2914] <... close resumed> ) = 0
[pid 2908] <... lstat resumed> {st_mode=S_IFDIR|S_ISGID|0755, st_size=4096, ...}) = 0
test config:
-------------------------------
volume posix
type storage/posix
option directory /data1/glusterfsvol
end-volume
volume locks
type features/locks
subvolumes posix
end-volume
volume brick
type performance/io-threads
subvolumes locks
end-volume
volume server
type protocol/server
option transport-type tcp
option auth.addr.brick.allow *
subvolumes brick
end-volume
volume cs0301
type protocol/client
option transport-type tcp
option remote-host cs0301
option remote-subvolume brick
end-volume
volume cs0302
type protocol/client
option transport-type tcp
option remote-host cs0302
option remote-subvolume brick
end-volume
volume cs
type cluster/nufa
option local-volume-name `hostname` # note the backquote, so 'hostname' output will be used as the option.
subvolumes cs0301 cs0302
end-volume
volume cache
type performance/io-cache
option cache-size 512MB
subvolumes cs
end-volume
|