复制的文件继承父目录的Unix权限
适用场景
NFSv4
问题描述
- 复制的文件继承父目录的Unix权限
- 卷安全模式:UNIX
- UNIX模式位:777
- 只有特定NFS客户端才会发生此行为
- 只有在使用NFSv4进行挂载时、才会发生此行为。
- 在正常复制操作中、客户端在 向存储系统发送SETATTR请求时也会传输Attr mask:mode
客户端umask:
000
[root@centos-6 home]# ls -l
-rw-rw-rw-. 1 nobody nobody 0 May 1 17:29 ff1
[root@centos-6 home]#
[root@centos-6 home]# cp ff1 ff3
[root@centos-6 home]#
[root@centos-6 home]# ls -l
-rw-rw-rw-. 1 nobody nobody 0 May 1 17:29 ff1
-rw-rw-rw-. 1 nobody nobody 0 May 1 17:46 ff3
39 2023-05-01 17:46:00.956723 client_IP 727 storage_IP 2049 NFS V4 Call (Reply In 40) SETATTR FH: 0x934f8420
Opcode: PUTFH (22)
FileHandle
length: 32
[hash (CRC-32): 0x934f8420]
[Name: ff3]
[Full Name: ff3]
FileHandle: 010100000000000000000000a0050000103bc406e08f3a800000000000000000
Opcode: SETATTR (34)
StateID
[StateID Hash: 0xafa9]
StateID seqid: 0
StateID Other: 000000000000000000000000
[StateID Other hash: 0x7bd5c66f]
Attr mask: 0x00410002 (Mode, Time_Access_Set, Time_Modify_Set)
reco_attr: Mode (33)
mode: 0666, Name: Unknown, Read permission for owner, Write permission for owner, Read permission for group, Write permission for group, Read permission for others, Write permission for others
.... .... .... .... 000. .... .... .... = Name: Unknown (0)
.... .... .... .... .... 0... .... .... = Set user id on exec: No
.... .... .... .... .... .0.. .... .... = Set group id on exec: No
.... .... .... .... .... ..0. .... .... = Save swapped text even after use: No
.... .... .... .... .... ...1 .... .... = Read permission for owner: Yes
.... .... .... .... .... .... 1... .... = Write permission for owner: Yes
.... .... .... .... .... .... .0.. .... = Execute permission for owner: No
.... .... .... .... .... .... ..1. .... = Read permission for group: Yes
.... .... .... .... .... .... ...1 .... = Write permission for group: Yes
.... .... .... .... .... .... .... 0... = Execute permission for group: No
.... .... .... .... .... .... .... .1.. = Read permission for others: Yes
.... .... .... .... .... .... .... ..1. = Write permission for others: Yes
.... .... .... .... .... .... .... ...0 = Execute permission for others: No
reco_attr: Time_Access_Set (48)
set_it: SET_TO_SERVER_TIME4 (0)
reco_attr: Time_Modify_Set (54)
set_it: SET_TO_SERVER_TIME4 (0)
40 2023-05-01 17:46:00.957332 storage_IP 2049 client_IP 727 NFS V4 Reply (Call In 39) SETATTR
Opcode: GETATTR (9)
reco_attr: Mode (33)
mode: 0666, Name: Unknown, Read permission for owner, Write permission for owner, Read permission for group, Write permission for group, Read permission for others, Write permission for others
.... .... .... .... 000. .... .... .... = Name: Unknown (0)
.... .... .... .... .... 0... .... .... = Set user id on exec: No
.... .... .... .... .... .0.. .... .... = Set group id on exec: No
.... .... .... .... .... ..0. .... .... = Save swapped text even after use: No
.... .... .... .... .... ...1 .... .... = Read permission for owner: Yes
.... .... .... .... .... .... 1... .... = Write permission for owner: Yes
.... .... .... .... .... .... .0.. .... = Execute permission for owner: No
.... .... .... .... .... .... ..1. .... = Read permission for group: Yes
.... .... .... .... .... .... ...1 .... = Write permission for group: Yes
.... .... .... .... .... .... .... 0... = Execute permission for group: No
.... .... .... .... .... .... .... .1.. = Read permission for others: Yes
.... .... .... .... .... .... .... ..1. = Write permission for others: Yes
.... .... .... .... .... .... .... ...0 = Execute permission for others: No
- 在这种特殊情况下 、客户端在向存储系统发送SETATTR请求时不会传输Attr mask:mode。存储系统 按照Unix模式位777设置此新创建文件b.txt的权限。
客户端umask:
022
[root@test home]# ls -al /mnt/home
total 4
drwxrwxrwx 2 nobody nobody 4096 Apr 29 14:05 .
drwxr-xr-x. 3 root root 17 Apr 28 14:52 ..
-rw-r--r-- 1 nobody nobody 0 Apr 29 14:05 a.txt
[root@test home]#
[root@test home]# cp a.txt b.txt
[root@test home]#
[root@test home]# ls -al /mnt/home
total 4
drwxrwxrwx 2 nobody nobody 4096 Apr 29 14:06 .
drwxr-xr-x. 3 root root 17 Apr 28 14:52 ..
-rw-r--r-- 1 nobody nobody 0 Apr 29 14:05 a.txt
-rwxrwxrwx 1 nobody nobody 0 Apr 29 14:06 b.txt
88 2023-05-02 14:53:31.199089 client_IP 851 storage_IP 2049 NFS V4 Call (Reply In 89) SETATTR FH: 0x0d291f7e
Opcode: PUTFH (22)
FileHandle
length: 32
[hash (CRC-32): 0x0d291f7e]
[Name: b.txt]
[Full Name: b.txt]
FileHandle: 0101000000000000000000008b190000cce2b40afe7230800000000000000000
Opcode: SETATTR (34)
StateID
[StateID Hash: 0xafa9]
StateID seqid: 0
StateID Other: 000000000000000000000000
[StateID Other hash: 0x7bd5c66f]
Attr mask: 0x00010000 (Time_Access_Set)
reco_attr: Time_Access_Set (48)
set_it: SET_TO_SERVER_TIME4 (0)
89 2023-05-02 14:53:31.199289 storage_IP 2049 client_IP 851 NFS V4 Reply (Call In 88) SETATTR
Opcode: GETATTR (9)
reco_attr: Mode (33)
mode: 0777, Name: Unknown, Read permission for owner, Write permission for owner, Execute permission for owner, Read permission for group, Write permission for group, Execute permission for group, Read permission for others, Write permissi
.... .... .... .... 000. .... .... .... = Name: Unknown (0)
.... .... .... .... .... 0... .... .... = Set user id on exec: No
.... .... .... .... .... .0.. .... .... = Set group id on exec: No
.... .... .... .... .... ..0. .... .... = Save swapped text even after use: No
.... .... .... .... .... ...1 .... .... = Read permission for owner: Yes
.... .... .... .... .... .... 1... .... = Write permission for owner: Yes
.... .... .... .... .... .... .1.. .... = Execute permission for owner: Yes
.... .... .... .... .... .... ..1. .... = Read permission for group: Yes
.... .... .... .... .... .... ...1 .... = Write permission for group: Yes
.... .... .... .... .... .... .... 1... = Execute permission for group: Yes
.... .... .... .... .... .... .... .1.. = Read permission for others: Yes
.... .... .... .... .... .... .... ..1. = Write permission for others: Yes
.... .... .... .... .... .... .... ...1 = Execute permission for others: Yes