mkdir 递归权限

mkdir recursion with permissions

这是一个简单的问题,我正在编写一个从 cron 调用的 bash 脚本,将 tar 文件中的文件分组并分类到目录结构中。

这些目录需要特殊的所有者和权限,我通过 su:

调用 mkdir 命令
#!/bin/bash

... # shortened code

$PERMS=750
$DIR=/home/luser/0/01/012/0123
$OWNER=luser

... # shortened code

su -c "mkdir -m $PERMS -p $DIR" $OWNER

ll -R /home/luser/0

的输出
/home/luser/0:
total 4
drwxr-xr-x 3 luser luser 4096 Jan  7 18:13 01

/home/luser/0/01:
total 4
drwxr-xr-x 3 luser luser 4096 Jan  7 18:13 012

/home/luser/0/01/012:
total 4
drwxr-x--- 2 luser luser 4096 Jan  7 18:13 0123

/home/luser/0/01/012/0123:
total 0

只有最深的目录才能正确设置权限(750)。

我不知道最后一个目录有多深,为所有家庭文件设置权限太难了(文件太多)。

附言:我用谷歌搜索了这个,但我一无所获。

您可以通过umask限制父目录的权限。这是一个例子:

PERMS=750
UMASK=$(echo "$PERMS" | tr "01234567" "76543210")
DIR=/home/luser/0/01/012/0123
OWNER=luser

su -c "umask $UMASK; mkdir -m $PERMS -p $DIR" $OWNER

进行中:

> PERMS=750
> UMASK=$(echo "$PERMS" | tr "01234567" "76543210")
> (umask $UMASK; mkdir -m $PERMS -p 1/2/3/4)
> ll -R .
.:
drwxr-x---  3 luser luser  4096 Jan  7 1:38 1/

./1:
drwxr-x--- 3 luser luser 4096 Jan  7 1:38 2/

./1/2:
drwxr-x--- 3 luser luser 4096 Jan  7 1:38 3/

./1/2/3:
drwxr-x--- 2 luser luser 4096 Jan  7 1:38 4/