使用sudo压缩时zip命令遍历文件夹

时间:2019-10-23 17:10:33

标签: bash shell

我试图以user1的身份运行zip命令:

[user1@host ~]$ sudo zip -P 68SqkCtNAxUpVoX8KPm /tmp/metazip /mnt/blumeta0/db2/ssl_keystore/sl_keystore/* /home/user2/sqllib/sqlrsdir/* /home/user2/sqllib/profile.env /home/user2/sqllib/db2systm /home/user2/db2/keystore/*
        zip warning: name not matched: /home/user2/db2/keystore/*        
updating: mnt/blumeta0/db2/ssl_keystore/bludb_ssl.crl (stored 0%)
updating: mnt/blumeta0/db2/ssl_keystore/bludb_ssl.kdb (deflated 69%)
updating: mnt/blumeta0/db2/ssl_keystore/bludb_ssl.rdb (deflated 1%)
updating: mnt/blumeta0/db2/ssl_keystore/bludb_ssl.sth (stored 0%)
updating: home/user2/sqllib/sqlrsdir/sqlrsbak (deflated 94%)
updating: home/user2/sqllib/sqlrsdir/sqlrsdir (deflated 94%)
updating: home/user2/sqllib/profile.env (deflated 34%)
updating: home/user2/sqllib/db2systm (deflated 98%)

您可以看到/home/user2/db2/keystore/未被压缩,因为user1没有访问该文件夹的权限

[user1@host ~]$ ls -l /home/user2/db2/keystore/
ls: cannot open directory /home/user2/db2/keystore/: Permission denied

/ home / user2 / db2 / keystore上的当前权限是:

[root@host /]# ls -l /home/user2/db2/keystore/
total 12
-rw------- 1 user2 db2iadm1 6846 Oct 21 17:30 keystore.p12
-rw------- 1 user2 db2iadm1  193 Oct 21 15:11 keystore.sth
[root@host /]# ls -l /home/user2/db2/
total 4
drwx------ 2 user2 db2iadm1 6144 Oct 21 15:11 keystore

如果我将这些文件和文件夹的权限更改为

[root@host /]# ls -l /home/user2/db2/keystore/
total 12
-rw-r----- 1 user2 db2iadm1 6846 Oct 21 17:30 keystore.p12
-rw-r----- 1 user2 db2iadm1  193 Oct 21 15:11 keystore.sth
[root@host /]# ls -l /home/user2/db2/
total 4
drwxr----- 2 user2 db2iadm1 6144 Oct 21 15:11 keystore

我可以拉锁。但是sudo(root)具有访问文件和文件夹的权限,因此使用sudo进行zip压缩应该能够对它们进行压缩。假设存在问题,我尝试\跳过*,也尝试''来解决此问题,但仍然无法压缩该文件夹。任何线索,这里缺少什么?

1 个答案:

答案 0 :(得分:0)

通配符是由外壳执行的,而不是由zip执行的,因此升级zip的权限不会更改是否进行通配符操作。使用sudo来运行具有足够特权来执行glob的新/不同的shell:

sudo sh -s <<'EOF'
zip -P 68SqkCtNAxUpVoX8KPm /tmp/metazip /mnt/blumeta0/db2/ssl_keystore/sl_keystore/* /home/user2/sqllib/sqlrsdir/* /home/user2/sqllib/profile.env /home/user2/sqllib/db2systm /home/user2/db2/keystore/*
EOF