diff options
author | Kotresh HR <khiremat@redhat.com> | 2019-10-20 01:01:39 +0530 |
---|---|---|
committer | Kotresh HR <khiremat@redhat.com> | 2019-10-21 15:53:33 +0530 |
commit | fb79786af4b7b6603a084c430b4542f806716dae (patch) | |
tree | 76b4240528558c5ed5d79926cb64e244c6235932 /tests/00-geo-rep | |
parent | 61ba30df8c48586ffac957fa312ef7d244b6cdf0 (diff) |
geo-rep: Fix Permission denied traceback on non root setup
Problem:
While syncing rename of directory in hybrid crawl, geo-rep
crashes as below.
Traceback (most recent call last):
File "/usr/local/libexec/glusterfs/python/syncdaemon/repce.py", line 118, in worker
res = getattr(self.obj, rmeth)(*in_data[2:])
File "/usr/local/libexec/glusterfs/python/syncdaemon/resource.py", line 588, in entry_ops
src_entry = get_slv_dir_path(slv_host, slv_volume, gfid)
File "/usr/local/libexec/glusterfs/python/syncdaemon/syncdutils.py", line 687, in get_slv_dir_path
[ENOENT], [ESTALE])
File "/usr/local/libexec/glusterfs/python/syncdaemon/syncdutils.py", line 546, in errno_wrap
return call(*arg)
PermissionError: [Errno 13] Permission denied: '/bricks/brick1/b1/.glusterfs/8e/c0/8ec0fcd4-d50f-4a6e-b473-a7943ab66640'
Cause:
Conversion of gfid to path for a directory uses readlink on backend
.glusterfs gfid path. But this fails for non root user with
permission denied.
Fix:
Use gfid2path interface to get the path from gfid
Change-Id: I9d40c713a1b32cea95144cbc0f384ada82972222
fixes: bz#1763439
Signed-off-by: Kotresh HR <khiremat@redhat.com>
Diffstat (limited to 'tests/00-geo-rep')
-rw-r--r-- | tests/00-geo-rep/00-georep-verify-non-root-setup.t | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/tests/00-geo-rep/00-georep-verify-non-root-setup.t b/tests/00-geo-rep/00-georep-verify-non-root-setup.t index e753c1fc44d..c9fd8b2dffd 100644 --- a/tests/00-geo-rep/00-georep-verify-non-root-setup.t +++ b/tests/00-geo-rep/00-georep-verify-non-root-setup.t @@ -118,8 +118,8 @@ clean_lock_files TEST /usr/sbin/groupadd $grp clean_lock_files -##Create non-root user and assign it to newly created group - +##Del if exists and create non-root user and assign it to newly created group +userdel -r -f $usr TEST /usr/sbin/useradd -G $grp $usr ##Modify password for non-root user to have control over distributing ssh-key @@ -140,8 +140,6 @@ TEST killall_gluster; TEST glusterd; TEST pidof glusterd; - - ##Create, start and mount meta_volume TEST $CLI volume create $META_VOL replica 3 $H0:$B0/${META_VOL}{1,2,3}; TEST $CLI volume start $META_VOL @@ -225,6 +223,26 @@ TEST $GEOREP_CLI $master $slave_url resume #Validate failure of volume stop when geo-rep is running TEST ! $CLI volume stop $GMV0 +#Hybrid directory rename test BZ#1763439 +TEST $GEOREP_CLI $master $slave_url config change_detector xsync +mkdir ${master_mnt}/dir1 +mkdir ${master_mnt}/dir1/dir2 +mkdir ${master_mnt}/dir1/dir3 +mkdir ${master_mnt}/hybrid_d1 + +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${slave_mnt}/hybrid_d1 +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${slave_mnt}/dir1 +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${slave_mnt}/dir1/dir2 +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${slave_mnt}/dir1/dir3 + +mv ${master_mnt}/hybrid_d1 ${master_mnt}/hybrid_rn_d1 +mv ${master_mnt}/dir1/dir2 ${master_mnt}/rn_dir2 +mv ${master_mnt}/dir1/dir3 ${master_mnt}/dir1/rn_dir3 + +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${slave_mnt}/hybrid_rn_d1 +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${slave_mnt}/rn_dir2 +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${slave_mnt}/dir1/rn_dir3 + #Stop Geo-rep TEST $GEOREP_CLI $master $slave_url stop @@ -232,8 +250,8 @@ TEST $GEOREP_CLI $master $slave_url stop TEST $GEOREP_CLI $master $slave_url delete #Cleanup authorized_keys -sed -i '/^command=.*SSH_ORIGINAL_COMMAND#.*/d' ~/.ssh/authorized_keys -sed -i '/^command=.*gsyncd.*/d' ~/.ssh/authorized_keys +sed -i '/^command=.*SSH_ORIGINAL_COMMAND#.*/d' /home/$usr/.ssh/authorized_keys +sed -i '/^command=.*gsyncd.*/d' /home/$usr/.ssh/authorized_keys #clear mountbroker gluster-mountbroker remove --user $usr |