具有权限的mkdir递归

时间:2015-01-07 17:25:54

标签: bash scripting

这是一个简单的问题,我在tar文件中编写了一个从cron 分组文件的 bash脚本,并将其分类为dir结构。

这些目录需要特殊的所有者和权限,我通过 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)。

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

PS:我在那里搜索了一下,但我一无所获。

1 个答案:

答案 0 :(得分:3)

您可以通过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/