以下操作无法按预期工作,我试图了解这是否是一个错误,或者我的 Linux 机器中是否存在隐藏的配置,导致它无法使用正确的权限创建文件夹。作为最后的手段,我总是可以回退到逐个创建文件夹,但我希望不会发生这种情况。
这是我的做法:
mkdir -m777 /familytree
mkdir -m755 -p /familytree/great-grandparent/grandparent/parent/myself/
这是我得到的:
$ namei -m /familytree/great-grandparent/grandparent/parent/myself/
dr-xr-xr-x /
drwxrwxrwx familytree
drwx------ great-grandparent
drwx------ grandparent
drwx------ parent
drwxr-xr-x myself
以下是我的预期:
$ namei -m /familytree/great-grandparent/grandparent/parent/myself/
dr-xr-xr-x /
drwxrwxrwx familytree
drwxr-xr-x great-grandparent
drwxr-xr-x grandparent
drwxr-xr-x parent
drwxr-xr-x myself
答案1
这取决于你的umask
。在我的 Kubuntu 中我得到了不同的结果,可能是因为我的umask
和你的不同。
以下应该可以工作(注意我使用相对路径,因此可以在任意目录中测试代码;cd
首先到该目录):
mkdir -m777 familytree
( umask 022
mkdir -p familytree/great-grandparent/grandparent/parent/myself/
)
(子壳的作用是保持umask
主壳的完整性。)
结果:
drwxrwxrwx familytree
drwxr-xr-x great-grandparent
drwxr-xr-x grandparent
drwxr-xr-x parent
drwxr-xr-x myself
要了解umask
作品如何这个答案。
注意,我没有使用-m
第二个mkdir
。如果我使用它,我可以获得最终目录与“中间”目录不同的权限,类似于您获得的权限。不同之处在于现在您知道如何控制“中间”目录的权限。示例:
rm -r familytree
mkdir -m777 familytree
( umask 027
mkdir -m700 -p familytree/great-grandparent/grandparent/parent/myself/
)
新结果:
drwxrwxrwx familytree
drwxr-x--- great-grandparent
drwxr-x--- grandparent
drwxr-x--- parent
drwx------ myself