基本的な問題は、QNAPに接続されているドメインがあり、ユーザーがバックアップから自分のファイルを復元できるように、Sambaを介してRSnapshotスナップショットを公開しようとしていることです。 (元のRSnapshot HowToに基づいています:http://rsnapshot.org/rsnapshot/docs/docbook/rest.html#restoring-backups)
ただし、新しいスナップショットが継承するデフォルトのACL(setfacl -mg:MYDOM \ Domain \ Users:rx)を設定しないと、共有スナップショットの内容をまったく参照できません。
RSnapshotの概要
毎時/毎日/毎週/毎月のスナップショットを作成し、標準および拡張Linux ACLを正しく保存します。スナップショットは次のディレクトリに保存されます。
/share/CACHEDEV1_DATA/Local Backups
権限の変更を防ぐために、ディレクトリのデフォルトACLをクリアし、デフォルト権限のみを設定しました。権限は次のとおりです。
# ls -al
drwxrwxrwx 4 admin administ 4096 Nov 22 17:00 Local Backups/
# getfacl Local\ Backups/
# file: Local Backups/
# owner: admin
# group: administrators
user::rwx
user:admin:rwx
user:guest:---
group::rwx
group:MYDOM\domain\040users:r-x
mask::rwx
other::rwx
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::rwx
つまり、スナップショットサブディレクトリ(hourly.0、hourly.1など)のデフォルト権限は次のとおりです。
# cd hourly.0
# ls -al
drwxrwxrwx 3 admin administ 4096 Nov 22 16:02 ./
# getfacl .
# file: .
# owner: admin
# group: administrators
user::rwx
group::rwx
mask::rwx
other::rwx
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::rwx
この時点でRSnapshotは完全にテストされ、期待どおりに動作します。 (FS権限またはSambaが問題の場合、権限はかなり自由です。)
サンバの概要
WebGUIを介してLocalBackupsという名前の共有を作成し、smb.confファイルを見てみると、変更せずに機能すると予想されます。 LocalBackupsディレクトリには問題なくアクセスできますが、バックアップ(hourly.0、hourly.1など)にアクセスしようとするたびに「\ 192.168.1.20 \ LocalBackups \」にアクセスする権限がありません。
smb.confの[global]セクションは次のようになります。
[global]
# Add this, apparently Windows 7 Bug.
# acl allow execute always = yes
log level = 3
passdb backend = smbpasswd
workgroup = MYDOM
security = ADS
server string =
encrypt passwords = Yes
username level = 0
#map to guest = Bad User
null passwords = yes
max log size = 10
socket options = TCP_NODELAY SO_KEEPALIVE
os level = 20
preferred master = no
dns proxy = No
smb passwd file=/etc/config/smbpasswd
username map = /etc/config/smbusers
guest account = guest
directory mask = 0777
create mask = 0777
oplocks = yes
locking = yes
disable spoolss = no
load printers = yes
veto files = /.AppleDB/.AppleDouble/.AppleDesktop/:2eDS_Store/Network Trash Folder/Temporary Items/TheVolumeSettingsFolder/.@__thumb/.@__desc/:2e*/.@__qini/.Qsync/.@upload_cache/.qsync/.qsync_sn/.@qsys/.streams/.digest/
delete veto files = yes
map archive = no
map system = no
map hidden = no
map read only = no
deadtime = 10
server role = auto
use sendfile = yes
unix extensions = no
store dos attributes = yes
client ntlmv2 auth = yes
dos filetime resolution = no
wide links = yes
#force unknown acl user = yes
force unknown acl user = yes
template homedir = /share/homes/DOMAIN=%D/%U
inherit acls = yes
domain logons = no
min receivefile size = 256
case sensitive = auto
domain master = auto
local master = no
enhance acl v1 = yes
remove everyone = yes
conn log = no
kernel oplocks = no
max protocol = SMB2_10
smb2 leases = yes
durable handles = yes
kernel share modes = no
posix locking = no
lock directory = /share/CACHEDEV1_DATA/.samba/lock
state directory = /share/CACHEDEV1_DATA/.samba/state
cache directory = /share/CACHEDEV1_DATA/.samba/cache
printcap cache time = 0
acl allow execute always = yes
server signing = disabled
aio read size = 1
aio write size = 0
streams_depot:delete_lost = yes
streams_depot:check_valid = no
fruit:nfs_aces = no
fruit:veto_appledouble = no
winbind expand groups = 1
pid directory = /var/lock
printcap name = /etc/printcap
printing = cups
show add printer wizard = no
realm = mydom.local
ldap timeout = 5
password server = mydc001.mydom.local
pam password change = yes
winbind enum users = Yes
winbind enum groups = Yes
winbind cache time = 3600
idmap config * : backend = tdb
idmap config * : range = 400001-500000
idmap config MYDOM : backend = rid
idmap config MYDOM : range = 10000001-20000000
host msdfs = yes
vfs objects = shadow_copy2 acl_xattr catia fruit qnap_macea streams_depot aio_pthread
[LocalBackups] セクションは次のとおりです。
[LocalBackups]
comment =
path = /share/CACHEDEV1_DATA/Local Backups
browsable = yes
oplocks = yes
ftp write only = no
recycle bin = no
recycle bin administrators only = no
qbox = no
public = yes
#invalid users = "guest"
#read list = @"MYDOM\Domain Users"
#write list = "admin"
#valid users = "root","admin",@"MYDOM\Domain Users"
guest ok = yes
read only = yes
inherit permissions = no
shadow:snapdir = /share/CACHEDEV1_DATA/_.share/LocalBackups/.snapshot
shadow:basedir = /share/CACHEDEV1_DATA/Local Backups
shadow:sort = desc
shadow:format = @GMT-%Y.%m.%d-%H:%M:%S
smb encrypt = disabled
strict allocate = yes
streams_depot:check_valid = yes
mangled names = yes
admin users =
admin only = "admin"
#nt acl support = no
この構成では、LocalBackupdsディレクトリには入れることができますが、スナップショットサブディレクトリ(hourly.0、hourly.1など)には入れません。
コメント化された行は違いがあるかどうかを確認したいのですが、アクションはコメント化された行と一致するか、コメント化された行なしで一致します。
MYDOM \ Domain Usersを含むようにスナップショットディレクトリの1つ(hourly.0)でACLを変更すると、Sambaを介してそのディレクトリ(hourly.0)にアクセスできます。その後、ディレクトリの権限は次のようになります。
# cd hourly.0
# ls -al
drwxrwxrwx 3 admin administ 4096 Nov 22 18:00 ./
# getfacl .
# file: .
# owner: admin
# group: administrators
user::rwx
group::rwx
group:MYDOM\domain\040users:rwx
mask::rwx
other::rwx
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::rwx
現在、QNAPで適切なロギングを有効にする方法はわかりません。デフォルトのWebUIログ情報を見ると、SMB接続要求が私のユーザー名などと一緒に渡されることがわかります。私はFS権限よりも制限的なSamba設定に向かって傾いていますが、推測しています。
この段階では、ACL、Samba、またはその両方に関する知識が不足しているかどうかはわかりません。どんなアイデアがありますか?
ベストアンサー1
Sambaでこの問題を解決しようとする代わりに、Samba構成をQNAPによって生成されたデフォルト値にリセットしました。 (つまり、コメントアウトされた行のコメントアウトを削除します。smb.conf
自分自身または他の管理者が新しい共有を作成すると、Web GUIは調整されたファイルを上書きする可能性があるため、長期的にはより安全に見えます)。
次に、ファイルシステムの権限を変更し、グループの拡張ACLを追加し、ディレクトリをMYDOM\Domain Users
読みます。r+x
/share
/share/CACHEDEV1_DATA
/share/CACHEDEV1_DATA/homes
これにより、ドメインユーザーはファイルのバックアップ中にそのhomes
ディレクトリに移動できます。ただし、スナップショットディレクトリ()から/share/CACHEDEV1_DATA/Local Backups
継承されたデフォルトのACLがなく、ユーザーのホームディレクトリも変更されていないため、元のユーザーだけが自分のホームディレクトリにアクセスできます。
Rスナップショットの変更
拡張ACLが保存されていると思います。これは事実ではなく、ホームディレクトリの標準ACLがドメインユーザーとグループを使用して設定されているため、正しいようです。したがって、標準 ACL は維持されますが、拡張 ACL は維持されません。この問題を解決するために、rsnapshotスクリプトを編集し、-A
次を変更してrsyncにフラグを追加しました。
my $default_rsync_short_args = '-a';
到着
my $default_rsync_short_args = '-aA';
create_backup_point_dir
スナップショットディレクトリ(hourly.0など)へのアクセスを変更するために、関数の下部に以下を追加することで、関数の権限も変更しました。
system("setfacl -m g:MYDOM\\\\Domain\\ Users:rx \"$destpath\"");
これで期待どおりに機能し、ユーザーはバックアップから個人ファイルを復元できます。 :)
追加のテストが完了したら、それをrsnapshotパッチに統合しようとします。