在部署大数据组件时,我们经常需要修改安装目录的权限。通常,我们使用chown命令来修改安装目录的所有者和所属组,使用chmod命令来修改权限。然而,最近在部署组件时遇到了一个问题。我们需要修改组件安装目录的权限,但在实际执行部署脚本时发现,安装目录的权限并没有被修改。经过进一步的调查,我们使用了软链来指向安装目录。我们进行了后续的测试,发现修改软链并不一定会同时修改其指向目录的权限。
场景复现
在/usr/local目录下,我们把spark3的包解压到这里,并新增一个软链/usr/local/spark3指向它
lrwxrwxrwx 1 root root 38 Jun 19 15:13 spark3 -> /usr/local/spark-3.2.2_ccdp3.3.3_1.0.1
drwxr-xr-x 11 root root 157 Jun 19 15:13 spark-3.2.2_ccdp3.3.3_1.0.1
查看/usr/local/spark-3.2.2_ccdp3.3.3_1.0.1下的文件权限,现在都是root用户的
[root@hadoop101 local]# ll /usr/local/spark-3.2.2_ccdp3.3.3_1.0.1/
total 36
drwxr-xr-x 2 root root 4096 Jun 19 15:12 bin
drwxr-xr-x 2 root root 170 Jun 19 15:15 conf
drwxr-xr-x 5 root root 50 Jun 19 15:12 data
drwxr-xr-x 4 root root 29 Jun 19 15:12 examples
drwxr-xr-x 2 root root 12288 Jun 19 15:13 jars
drwxr-xr-x 4 root root 38 Jun 19 15:13 kubernetes
drwxr-xr-x 9 root root 327 Jun 19 15:13 python
-rw-r--r-- 1 root root 4512 May 11 11:28 README.md
-rw-r--r-- 1 root root 138 May 11 11:28 RELEASE
drwxr-xr-x 2 root root 4096 Jun 19 15:13 sbin
drwxr-xr-x 2 root root 42 Jun 19 15:13 yarn
我们想要把部署目录的用户改成spark用户的,修改软链/usr/local/spark3的用户权限,sudo chown -R spark:spark /usr/local/spark3
发现部署目录的用户,还是root的,并没有被修改成spark,和我们的期望不一致
[root@hadoop101 local]# sudo chown -R spark:spark /usr/local/spark3
[root@hadoop101 local]# ll /usr/local/spark-3.2.2_ccdp3.3.3_1.0.1/
total 36
drwxr-xr-x 2 root root 4096 Jun 19 15:12 bin
drwxr-xr-x 2 root root 170 Jun 19 15:15 conf
drwxr-xr-x 5 root root 50 Jun 19 15:12 data
drwxr-xr-x 4 root root 29 Jun 19 15:12 examples
drwxr-xr-x 2 root root 12288 Jun 19 15:13 jars
drwxr-xr-x 4 root root 38 Jun 19 15:13 kubernetes
drwxr-xr-x 9 root root 327 Jun 19 15:13 python
-rw-r--r-- 1 root root 4512 May 11 11:28 README.md
-rw-r--r-- 1 root root 138 May 11 11:28 RELEASE
drwxr-xr-x 2 root root 4096 Jun 19 15:13 sbin
drwxr-xr-x 2 root root 42 Jun 19 15:13 yarn
如何处理呢?
方式1:最直接的方式,不要通过软链来修改权限,直接修改部署目录的权限,sudo chown -R spark:spark spark-3.2.2_ccdp3.3.3_1.0.1
方式2:还是通过软链,但是最后要加上/,sudo chown -R spark:spark /usr/local/spark3/
使用方式2,修改权限,执行后发现部署目录的权限被改成spark,符合我们的期望。
[root@hadoop101 local]# sudo chown -R spark:spark /usr/local/spark3/
[root@hadoop101 local]# ll /usr/local/spark-3.2.2_ccdp3.3.3_1.0.1/
total 36
drwxr-xr-x 2 spark spark 4096 Jun 19 15:12 bin
drwxr-xr-x 2 spark spark 170 Jun 19 15:15 conf
drwxr-xr-x 5 spark spark 50 Jun 19 15:12 data
drwxr-xr-x 4 spark spark 29 Jun 19 15:12 examples
drwxr-xr-x 2 spark spark 12288 Jun 19 15:13 jars
drwxr-xr-x 4 spark spark 38 Jun 19 15:13 kubernetes
drwxr-xr-x 9 spark spark 327 Jun 19 15:13 python
-rw-r--r-- 1 spark spark 4512 May 11 11:28 README.md
-rw-r--r-- 1 spark spark 138 May 11 11:28 RELEASE
drwxr-xr-x 2 spark spark 4096 Jun 19 15:13 sbin
drwxr-xr-x 2 spark spark 42 Jun 19 15:13 yarn