在Solaris 中使用NFS 会导致(某种程度上)创建ACL。
我所说的“有点”是指一个特殊的命令将揭示 acl 的存在
Solaris # mkdir T2
Solaris # getfacl T2
# file: T2
# owner: root
# group: root
user::rwx
group::r-x #effective:r-x
mask:rwx
other:r-x
Solaris # ls -V
total 3
drwxr-xr-x+ 2 root root 2 Mar 8 08:35 T2
group:foobar:rwxp-DaARWcCos:fd-----:allow
group:admin:rwxp-DaARWcCos:fd-----:allow
owner@:rwxp-DaARWcCos:-------:allow
group@:r-x---a-R-c--s:-------:allow
everyone@:r-x---a-R-c--s:-------:allow
正如你所看到的,getfacl
什么也不透露,但ls -V
显示扩展的权利。
我已经检查过作为成员foobar
允许我创建目录和文件。
- 在Solaris 上具有扩展权限/ACL(例如 ls -l 中的 + )
- 在 SUSE (11.4) 上没有扩展权限/ACL
当前目录基于 zfs nfs 导出的文件系统。
现在的问题是:
- 那些 ACL 设置在哪里?
- suse环境下如何设置?
答案1
按照man ls
Solaris
-V
与 -l 相同,只是在 -l 输出之后显示紧凑的 ACL 信息。
-V 选项仅适用于支持 NFSv4 ACL 的文件系统,例如 Solaris ZFS 文件系统。
这导致我们nfsv4 acl在苏斯。
列出访问权限是通过nfs4-getfacl
(根据在线文档)或nfs4_getfacl
(从 nfs4-acl-tools 包安装的实际文件)完成的。
从 man nfs4_getacl 中摘录
The output format for an NFSv4 file ACL, e.g., is:
A::OWNER@:rwatTnNcCy
A::[email protected]:rxtncy
A::[email protected]:rwadtTnNcCy
A:g:GROUP@:rtncy
D:g:GROUP@:waxTC
A::EVERYONE@:rtncy
D::EVERYONE@:waxTC
这与 Solaris 版本不同。
目前尚不清楚Solaris nfs4 acl是否可以转换为suse nfs4 acl。
答案2
以下是在带有 ZFS 的 Solaris、带有 NFSv4 的 Linux 和带有 NFSv3 的 Linux 上的显示方式:
Solaris 11.3 ZFS 文件系统:
bash-[509]$ ls -Vd /ssd/TIVO
drwxrwxr-x+ 12 tim users 15 Feb 23 17:34 /ssd/TIVO/
user:tim:rwxpdDaARWcCos:fd-----:allow
owner@:rwxp-DaARWcCos:-------:allow
group@:rwxp-DaARWc--s:-------:allow
everyone@:r-x---a-R-c--s:-------:allow
具有 Solaris 11.3 ZFS/NFS 文件系统的 NFS v4 挂载的 Linux 客户端:
bash:~$ lsb_release -d
Description: Ubuntu 16.04 LTS
bash:~$ mount | grep TIVO
tank:/ssd/TIVO on /ssd/TIVO type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.100,local_lock=none,addr=192.168.2.1)
bash:~$ nfs4_getfacl /ssd/TIVO
A:fd:tim@tank:rwaDdxtTnNcCoy
A::OWNER@:rwaDxtTnNcCoy
A:g:GROUP@:rwaDxtTnNcy
A::EVERYONE@:rxtncy
带有 Solaris 11.3 ZFS/NFS 文件系统的 NFS v3 挂载的 Linux 客户端:
bash:/ssd# lsb_release -d
Description: Ubuntu 16.04.2 LTS
bash:/ssd# mount | grep TIVO
tank:/ssd/TIVO on /ssd/TIVO type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.2.1,mountvers=3,mountport=59133,mountproto=tcp,local_lock=none,addr=192.168.2.1)
bash:/ssd# getfacl /ssd/TIVO
getfacl: Removing leading '/' from absolute path names
# file: ssd/TIVO
# owner: tim
# group: users
user::rwx
group::rwx
other::r-x