用户属于目录组时无权创建子目录

ila*_*sch 2 filesystems solaris directory

给定一个目录 DirA(目录所有者是root,组是sys)。
给定用户 userA,用户属于组 sys,他应该能够在 DirA 中创建一个子目录?

在 Solaris SunOS 5.9 上,我有一个目录/opt

bash-2.05$ ls -la /
total 1205
drwxr-xr-x  34 root     root        1024 Mar 17 04:21 .
drwxr-xr-x  34 root     root        1024 Mar 17 04:21 ..
.. Removed all..
lrwxrwxrwx   1 root     other         16 Apr 14  2008 opt -> /export/home/opt
Run Code Online (Sandbox Code Playgroud)

这个符号链接带我到:

bash-2.05$ ls -la /export/home
total 524638
drwxr-xr-x  31 root     root        1024 Jan 25  2015 .
drwxr-xr-x   3 root     sys          512 Jul  2  2007 ..
...REMOVED...
drwxr-xr-x  12 root     sys          512 Apr 24 10:29 opt
Run Code Online (Sandbox Code Playgroud)

我使用用户构建器登录:

bash-2.05$ /usr/ucb/whoami
builder
Run Code Online (Sandbox Code Playgroud)

他属于以下团体:

bash-2.05$ groups builder
other root sys 
bash-2.05$
Run Code Online (Sandbox Code Playgroud)

那么为什么会mkdir失败/opt/呢?

bash-2.05$ cd /opt/
bash-2.05$ pwd
/opt
bash-2.05$ mkdir mynewdir
mkdir: Failed to make directory "mynewdir"; Permission denied
bash-2.05$ cd /export/home/opt/
bash-2.05$ mkdir mynewdir
mkdir: Failed to make directory "mynewdir"; Permission denied
bash-2.05$
Run Code Online (Sandbox Code Playgroud)

Ste*_*itt 5

drwxr-xr-x  12 root     sys          512 Apr 24 10:29 opt
Run Code Online (Sandbox Code Playgroud)

意味着该目录只能为root. 为了使sys组成员能够对目录进行更改(包括创建子目录),它需要

drwxrwxr-x  12 root     sys          512 Apr 24 10:29 opt
Run Code Online (Sandbox Code Playgroud)

如果要启用此功能:

chmod g+w opt
Run Code Online (Sandbox Code Playgroud)

将进行适当的更改。