From nobody Mon Dec 12 16:20:43 2022 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4NW6LN0WFrz4kjlF; Mon, 12 Dec 2022 16:20:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4NW6LN01l7z3Ktq; Mon, 12 Dec 2022 16:20:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1670862044; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DvEiBIrIMXiUI9E+nInLTQmmdtgeiCSbEEElDQ1qE2c=; b=xDRonA07uvgReSxLHex1dm4Y9WirQf65a8OvIgvvTrTE3thkkF7tdV5Wyf7tfFm9kZFqmY nXGx0ZfB5DSI8fpoOR0wVv0sE+evnVRFLuDb+GnAlqROBO8zlRS9oBJHaQ0kSERC/aPSel VsGYbm8zjO4Mt0iY+I3f0FvWkWTMgP6k+hrWmqN5KG0fwAJnV92qtTA4thQpiJSU446awu AeJSUsPItrLlIT0rdLxANZzLaMTGHXKa1u41cYaCK5Mlq78YxrwgjIGR8Bbk0msKSqe7LO UWBqYULWovSfWa7QpmRCK6S3Gu44XIqAAxQChnbxX1TmXuCyc5rBuL/KA0X5gQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1670862044; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DvEiBIrIMXiUI9E+nInLTQmmdtgeiCSbEEElDQ1qE2c=; b=gRkc8bw+oYkab8Q93lyQG7NImE0d4Lle9mB+PbsGfdSNDtwhUR8For3mFczv7vJ6VFzJeQ SpFOHommQWKGqL7v11zOyeP4IRO7aG5beh8efQjMB7MDWH9byAlEBMWbNWNBHiA6IS9NZa otDx5JOtKGOVtLeagyaS0q1A4uaWIh+rnmwUmf4s1wKQehjvZYYPy6OcxCd63MYLXIK3IJ ytRTe5lxkTTw477QUqJgRvMchgi9QKsSWDzScacal/Nn7x6/bFwOfF9nq6IQ9EEc7Jvct/ dbm2JSllY5+wLYZOHYJfxZdCwrgb1eGrkTu4X1J4Yu8OB9t9VdniSfI4kSkkbA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1670862044; a=rsa-sha256; cv=none; b=aZ1ddYM+rHHSkrgQDzfGkObx7qbvF2CRjEwdYj93QMTTU5tIYUzdksoxuRzbHO3p1tM/yM RzsgTpnRy+qrctqhW3Ixf0p2tQ6Ny0QQzX8GKdnoXpJkOFycY+k+/dUbTshK1II0k/4PJF zoaF0k7Uy5/YvNIulBLpiBncBC6O7vzaHVyH3LSqbWFpG8DlWfpNnpZEX2g0XSMDl5oFnU bZgZcxSTmxdUhr4+WRe6F5kg340vlpHoweo5GGG2dkUklyfcozMioT1O/BXhMyiwS41rDY hlscwV/x2EjWrPJnnPtzH5vtLuky2wqR+FOVwpaD7lOMSVCg6kCqa26Z5zrqhw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4NW6LM6Bqrzgrn; Mon, 12 Dec 2022 16:20:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 2BCGKhFI024061; Mon, 12 Dec 2022 16:20:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2BCGKhdw024060; Mon, 12 Dec 2022 16:20:43 GMT (envelope-from git) Date: Mon, 12 Dec 2022 16:20:43 GMT Message-Id: <202212121620.2BCGKhdw024060@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Chuck Silvers Subject: git: 9dda00df7e8f - main - restore: fix restore of NFS4 ACLs List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: chs X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9dda00df7e8f9279a43d92758df6a7e10a9aed95 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by chs: URL: https://cgit.FreeBSD.org/src/commit/?id=9dda00df7e8f9279a43d92758df6a7e10a9aed95 commit 9dda00df7e8f9279a43d92758df6a7e10a9aed95 Author: Chuck Silvers AuthorDate: 2022-12-12 16:14:17 +0000 Commit: Chuck Silvers CommitDate: 2022-12-12 16:19:51 +0000 restore: fix restore of NFS4 ACLs Changing the mode bits on a file with an NFS4 ACL results in the NFS4 ACL being replaced by one matching the new mode bits being set, so when restoring a file with an NFS4 ACL, set the owner/group/mode first and then set the NFS4 ACL, so that setting the mode does not throw away the ACL that we just set. Reviewed by: mckusick Differential Revision: https://reviews.freebsd.org/D37618 --- sbin/restore/dirs.c | 10 +++++----- sbin/restore/tape.c | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/sbin/restore/dirs.c b/sbin/restore/dirs.c index a8120fda8b6e..4a25b728e8a0 100644 --- a/sbin/restore/dirs.c +++ b/sbin/restore/dirs.c @@ -646,6 +646,11 @@ setdirmodes(int flags) } cp = myname(ep); if (!Nflag) { + if (myuid != 0) + (void) chown(cp, myuid, node.gid); + else + (void) chown(cp, node.uid, node.gid); + (void) chmod(cp, node.mode); if (node.extsize > 0) { if (bufsize >= node.extsize) { set_extattr(-1, cp, buf, node.extsize, SXA_FILE); @@ -654,11 +659,6 @@ setdirmodes(int flags) "extended attributes for ", cp); } } - if (myuid != 0) - (void) chown(cp, myuid, node.gid); - else - (void) chown(cp, node.uid, node.gid); - (void) chmod(cp, node.mode); utimensat(AT_FDCWD, cp, node.ctimep, 0); utimensat(AT_FDCWD, cp, node.mtimep, 0); (void) chflags(cp, node.flags); diff --git a/sbin/restore/tape.c b/sbin/restore/tape.c index 1c8c2402b9fc..e5508bc08639 100644 --- a/sbin/restore/tape.c +++ b/sbin/restore/tape.c @@ -628,10 +628,10 @@ extractfile(char *name) return (GOOD); } if (linkit(lnkbuf, name, SYMLINK) == GOOD) { - if (extsize > 0) - set_extattr(-1, name, buf, extsize, SXA_LINK); (void) lchown(name, uid, gid); (void) lchmod(name, mode); + if (extsize > 0) + set_extattr(-1, name, buf, extsize, SXA_LINK); (void) utimensat(AT_FDCWD, name, ctimep, AT_SYMLINK_NOFOLLOW); (void) utimensat(AT_FDCWD, name, mtimep, @@ -655,6 +655,8 @@ extractfile(char *name) skipfile(); return (FAIL); } + (void) chown(name, uid, gid); + (void) chmod(name, mode); if (extsize == 0) { skipfile(); } else { @@ -662,8 +664,6 @@ extractfile(char *name) getfile(xtrnull, xtrattr, xtrnull); set_extattr(-1, name, buf, extsize, SXA_FILE); } - (void) chown(name, uid, gid); - (void) chmod(name, mode); (void) utimensat(AT_FDCWD, name, ctimep, 0); (void) utimensat(AT_FDCWD, name, mtimep, 0); (void) chflags(name, flags); @@ -685,6 +685,8 @@ extractfile(char *name) skipfile(); return (FAIL); } + (void) chown(name, uid, gid); + (void) chmod(name, mode); if (extsize == 0) { skipfile(); } else { @@ -692,8 +694,6 @@ extractfile(char *name) getfile(xtrnull, xtrattr, xtrnull); set_extattr(-1, name, buf, extsize, SXA_FILE); } - (void) chown(name, uid, gid); - (void) chmod(name, mode); (void) utimensat(AT_FDCWD, name, ctimep, 0); (void) utimensat(AT_FDCWD, name, mtimep, 0); (void) chflags(name, flags); @@ -714,12 +714,12 @@ extractfile(char *name) skipfile(); return (FAIL); } + (void) fchown(ofile, uid, gid); + (void) fchmod(ofile, mode); buf = setupextattr(extsize); getfile(xtrfile, xtrattr, xtrskip); if (extsize > 0) set_extattr(ofile, name, buf, extsize, SXA_FD); - (void) fchown(ofile, uid, gid); - (void) fchmod(ofile, mode); (void) futimens(ofile, ctimep); (void) futimens(ofile, mtimep); (void) fchflags(ofile, flags);