Linux
更改 SMB Samba 共享的 Windows ACL - 直接在 linux 中
有沒有辦法直接通過 Linux 本身從 Samba 共享的文件和文件夾中設置 Windows ACL?
我知道有 setfacl/getfacl 選項,但它們只能在以下之間更改: - DENY | 只讀 | 完全控制 - 如果我做對了。
但我需要一個 Windows 安全組修改權限。並且遞歸到所有以下目錄。如果我直接通過 SMB 連接從 Windows 更改它,這將需要數小時和數天,因為文件量很大。有沒有辦法做到這一點,還是仍然不可能?我知道資訊儲存在共享中的任何位置,因為我可以將 Linux 中的文件複製到共享文件夾,並且它們會自動獲得先前選擇的修改權限。
為了避免通過 SMB 更改設置,我從共享中複製了文件。刪除共享中的所有文件並更改共享上 Windows 的權限。
Actually this is how I proceeding so far: In Linux: 1. I copy files and folders from the share folder to a separate location. 2. I delete all stuff in the share folder. In Windows: 3. Then accessing the empty share folder through SMB. 4. From here I can change recursively the permissions for access groups to apply "modify" permissions. Back in Linux: 5. Now I can copy the files and folders back into the share folder to set the permissions.
-> 文件通過複製過程獲得了新權限。
如果您執行的是 Samba 4,那麼命令samba-tool ntacl肯定可以做到。
不幸的是,很難找到有關如何使用此命令設置 ACL 的詳細文件:
#samba-tool ntacl set -h Usage: samba-tool ntacl set <acl> <file> [options] Set ACLs on a file. Options: -h, --help show this help message and exit --quiet Be quiet --xattr-backend=XATTR_BACKEND xattr backend type (native fs or tdb) --eadb-file=EADB_FILE Name of the tdb file where attributes are stored --use-ntvfs Set the ACLs directly to the TDB or xattr for use with the ntvfs file server --use-s3fs Set the ACLs for use with the default s3fs file server via the VFS layer --service=SERVICE Name of the smb.conf service to use when applying the ACLs Samba Common Options: -s FILE, --configfile=FILE Configuration file -d DEBUGLEVEL, --debuglevel=DEBUGLEVEL debug level --option=OPTION set smb.conf option from command line --realm=REALM set the realm name Credentials Options: --simple-bind-dn=DN DN to use for a simple bind --password=PASSWORD Password -U USERNAME, --username=USERNAME Username -W WORKGROUP, --workgroup=WORKGROUP Workgroup -N, --no-pass Don't ask for a password -k KERBEROS, --kerberos=KERBEROS Use Kerberos --ipaddress=IPADDRESS IP address of server -P, --machine-pass Use stored machine account password Version Options: -V, --version Display version number
我會建議你這個程序:
# 1) # In Windows # Go to one shared folder/file and change the permissions as desired #2) # In Linux # Get infos of the ACLs of the directory/file you just set up in SDDL format #samba-tool ntacl get --as-sddl /path/to/my/share O:LAG:BAD:P(A;OICI;0x001f01ff;;;BA)(A;OICI;0x001200a9;;;SO)(A;OICI;0x001f01ff;;;SY)(A;OICI;0x001200a9;;;AU) #3) # Use the SDDL parameter to change all the files you want with same ACL # samba-tool ntacl set "O:LAG:BAD:P(A;OICI;0x001f01ff;;;BA)(A;OICI;0x001200a9;;;SO)(A;OICI;0x001f01ff;;;SY)(A;OICI;0x001200a9;;;AU)" /path/to/other/files
細節:
samba-tool ntacl get --as-sddl [file/directory]
將獲得 SDDL 格式的 ACL 資訊。更多關於 SDDL的資訊
samba-tool ntacl set "[SDDL string]" [file/directory]
將在文件/文件夾上應用指定的 ACL
該解決方案並不完美,它可以幫助您。
關於 samba-tool 命令: https ://www.samba.org/samba/docs/man/manpages-3/samba-tool.8.html
Samba 郵件列表的相關問題: https ://lists.samba.org/archive/samba-technical/2011-October/079820.html