bug#81413: [PATCH] install: skip chown/chmod when -C finds nothing to change
Mateusz Nosek <[email protected]> Wed, 15 Jul 2026 23:56:57 +0200
| Newsgroups | gmane.comp.gnu.core-utils.bugs |
|---|---|
| Message-ID | <CAKJSxDQnh_vdzAMEbJ9xTcV5ivTdRW9D1gwzeL6+K8pff0LqjQ@mail.gmail.com> |
--000000000000b04d340656ad6772 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi P=C3=A1draig, Good point, thanks. v2 leaves setdefaultfilecon() inside change_attributes(). Updated patch attached. I began to wonder if need_copy() should also do a more rigorous check for the "selinux_enabled && use_default_selinux_context" case, to see if the destination already has the default context. But that's slightly out of scope of this patch, so just FYI. Thanks, Mateusz On Wed, Jul 15, 2026 at 1:18=E2=80=AFPM P=C3=A1draig Brady <[email protected]= m> wrote: > > On 14/07/2026 23:30, Mateusz Nosek wrote: > > Hi, > > > > I attach a patch for the "install" utility: "install -C" was still > > calling chown/chmod on the destination even when need_copy() had > > already determined it matches (mode, owner, group, content), which > > could needlessly fail, e.g. on an immutable file. > > > > This is my first patch to coreutils, so apologies for any mistakes in > > the submission process -- happy to fix anything you point out. > This makes sense I think. > > You moved setdefaultfilecon() out of this consideration. > I'd be inclined to leave it where it was and treat the same way, > because the comparison also compares selinux context, > and also if the file is already present it probably has an appropriate co= ntext anyway. > > thanks, > Padraig --000000000000b04d340656ad6772 Content-Type: text/x-patch; charset="UTF-8"; name="install-C-immutable-v2.patch" Content-Disposition: attachment; filename="install-C-immutable-v2.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mrmltmag0> X-Attachment-Id: f_mrmltmag0 RnJvbSBkZTEyMDlhZDA2NDQ1MjNjNDE1MGFhMDQxMDM1NjVhMGYzMjQxNDY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRldXN6IE5vc2VrIDxtYXRldXN6bm9zZWswQGdtYWlsLmNv bT4KRGF0ZTogVHVlLCAxNCBKdWwgMjAyNiAyMzo1MDoyOCArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djJdIGluc3RhbGw6IHNraXAgY2hvd24vY2htb2Qgd2hlbiAtQyBmaW5kcyBub3RoaW5nIHRvIGNo YW5nZQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9 VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKImluc3RhbGwgLUMiICgtLWNv bXBhcmUpIGhhcyBhbHdheXMgY2FsbGVkIGNob3duL2NobW9kIG9uIHRoZQpkZXN0aW5hdGlvbiBl dmVuIGFmdGVyIGRldGVybWluaW5nIHRoYXQgY29weWluZyB3YXMgdW5uZWNlc3NhcnksCmV2ZXIg c2luY2UgLS1jb21wYXJlIHdhcyBhZGRlZCBpbiBjb21taXQgdjcuMC0xODItZ2RhYzVmMTJjNi4K bmVlZF9jb3B5KCkgYWxyZWFkeSB2ZXJpZmllcyB0aGF0IHRoZSBkZXN0aW5hdGlvbidzIG1vZGUs IG93bmVyLCBhbmQKZ3JvdXAgbWF0Y2ggKGFuZCwgd2l0aCAtLXByZXNlcnZlLWNvbnRleHQsIHRo YXQgdGhlIFNFTGludXggY29udGV4dAptYXRjaGVzIHRvbykgYmVmb3JlIHNraXBwaW5nIHRoZSBj b3B5LCBzbyByZS1hcHBseWluZyB0aGVtIGlzCnJlZHVuZGFudCwgYW5kIGNhbiBuZWVkbGVzc2x5 IGZhaWwgb24gYSBkZXN0aW5hdGlvbiB0aGF0IGNhbm5vdCBiZQpjaG93bi9jaG1vZCdkIGV2ZW4g dGhvdWdoIG5vdGhpbmcgd291bGQgYWN0dWFsbHkgY2hhbmdlLCBlLmcuIG9uZQptYXJrZWQgaW1t dXRhYmxlIHdpdGggY2hhdHRyICtpLgpbYnVnIGludHJvZHVjZWQgaW4gY29yZXV0aWxzLTcuMV0K Ciogc3JjL2luc3RhbGwuYyAoaW5zdGFsbF9maWxlX2luX2ZpbGUpOiBTa2lwIGNoYW5nZV9hdHRy aWJ1dGVzIHdoZW4KdGhlIGNvcHkgd2FzIHNraXBwZWQgYnkgLS1jb21wYXJlICgtQyksIGkuZS4g Y29weV9zdGF0dXMgPT0KQ09QWV9TS0lQUEVELCBzaW5jZSBuZWVkX2NvcHkgYWxyZWFkeSB2ZXJp ZmllZCBtYXRjaGluZyBtb2RlLCBvd25lciwKYW5kIGdyb3VwIGluIHRoYXQgY2FzZS4KKiB0ZXN0 cy9pbnN0YWxsL2luc3RhbGwtQy1pbW11dGFibGUuc2g6IE5ldyB0ZXN0LgoqIHRlc3RzL2xvY2Fs Lm1rIChhbGxfcm9vdF90ZXN0cyk6IEFkZCBpdC4KClN1Z2dlc3RlZCBieSBQw6FkcmFpZyBCcmFk eS4KLS0tCiBzcmMvaW5zdGFsbC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLQogdGVz dHMvaW5zdGFsbC9pbnN0YWxsLUMtaW1tdXRhYmxlLnNoIHwgNTggKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogdGVzdHMvbG9jYWwubWsgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwog MyBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUg bW9kZSAxMDA3NTUgdGVzdHMvaW5zdGFsbC9pbnN0YWxsLUMtaW1tdXRhYmxlLnNoCgpkaWZmIC0t Z2l0IGEvc3JjL2luc3RhbGwuYyBiL3NyYy9pbnN0YWxsLmMKaW5kZXggYmNjZmU2MDZmLi4xZWFl MWE1ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbnN0YWxsLmMKKysrIGIvc3JjL2luc3RhbGwuYwpAQCAt NzM3LDcgKzczNyw5IEBAIGluc3RhbGxfZmlsZV9pbl9maWxlIChjaGFyIGNvbnN0ICpmcm9tLCBj aGFyIGNvbnN0ICp0bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICEgU19J U1JFRyAoZnJvbV9zYi5zdF9tb2RlKSkKICAgICAgICYmICEgY2hhbmdlX3RpbWVzdGFtcHMgKCZm cm9tX3NiLCB0bywgdG9fZGlyZmQsIHRvX3JlbG5hbWUpKQogICAgIHJldHVybiBmYWxzZTsKLSAg cmV0dXJuIGNoYW5nZV9hdHRyaWJ1dGVzICh0bywgdG9fZGlyZmQsIHRvX3JlbG5hbWUpOworCisg IHJldHVybiBjb3B5X3N0YXR1cyA9PSBDT1BZX1NLSVBQRUQKKyAgICAgICAgIHx8IGNoYW5nZV9h dHRyaWJ1dGVzICh0bywgdG9fZGlyZmQsIHRvX3JlbG5hbWUpOwogfQogCiAvKiBDcmVhdGUgYW55 IG1pc3NpbmcgcGFyZW50IGRpcmVjdG9yaWVzIG9mIFRPLApkaWZmIC0tZ2l0IGEvdGVzdHMvaW5z dGFsbC9pbnN0YWxsLUMtaW1tdXRhYmxlLnNoIGIvdGVzdHMvaW5zdGFsbC9pbnN0YWxsLUMtaW1t dXRhYmxlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMC4uM2IwY2JmNGQy Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvaW5zdGFsbC9pbnN0YWxsLUMtaW1tdXRhYmxlLnNo CkBAIC0wLDAgKzEsNTggQEAKKyMhL2Jpbi9zaAorIyBFbnN1cmUgImluc3RhbGwgLUMiIGRvZXMg bm90IGF0dGVtcHQgdG8gY2hvd24vY2htb2QgYW4gdW5jaGFuZ2VkLAorIyBpbW11dGFibGUgZGVz dGluYXRpb24gZmlsZS4KKyMgUmVxdWlyZXMgcm9vdCBhY2Nlc3MgdG8gZG8gY2hhdHRyICtpLCBh cyB3ZWxsIGFzIGEgZmlsZSBzeXN0ZW0KKyMgdGhhdCBzdXBwb3J0cyB0aGUgaW1tdXRhYmxlIGF0 dHJpYnV0ZSAoZS5nLiwgZXh0Mi8zLzQsIHhmcywgYnRyZnMpLgorCisjIENvcHlyaWdodCAoQykg MjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgor CisuICIke3NyY2Rpcj0ufS90ZXN0cy9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuL3NyYworcHJp bnRfdmVyXyBnaW5zdGFsbAorcmVxdWlyZV9yb290XworCisjIFRoZXNlIHNpbXBsZSBvbmUtZmls ZSBvcGVyYXRpb25zIGFyZSBleHBlY3RlZCB0byB3b3JrIGV2ZW4gaW4gdGhlCisjIHByZXNlbmNl IG9mIHRoaXMgYnVnLCBhbmQgd2UgbmVlZCB0aGVtIHRvIHNldCB1cCB0aGUgcmVzdCBvZiB0aGUg dGVzdC4KK2NoYXR0cl9pX3dvcmtzPTEKK3RvdWNoIGYgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCitj aGF0dHIgK2kgZiAyPi9kZXYvbnVsbCB8fCBjaGF0dHJfaV93b3Jrcz0wCitybSBmIDI+L2Rldi9u dWxsCit0ZXN0IC1mIGYgfHwgY2hhdHRyX2lfd29ya3M9MAorY2hhdHRyIC1pIGYgMj4vZGV2L251 bGwgfHwgY2hhdHRyX2lfd29ya3M9MAorcm0gZiAyPi9kZXYvbnVsbCB8fCBjaGF0dHJfaV93b3Jr cz0wCit0ZXN0IC1mIGYgJiYgY2hhdHRyX2lfd29ya3M9MAorCitpZiB0ZXN0ICRjaGF0dHJfaV93 b3JrcyA9IDA7IHRoZW4KKyAgc2tpcF8gImNoYXR0ciAraSBkb2Vzbid0IHdvcmsgb24gdGhpcyBm aWxlIHN5c3RlbSIKK2ZpCisKK3UxPTEKK2cxPTEKKworZWNobyB0ZXN0ID4gYSB8fCBmcmFtZXdv cmtfZmFpbHVyZV8KKworIyBJbnN0YWxsIG9uY2UgdG8gY3JlYXRlIHRoZSBkZXN0aW5hdGlvbiwg dGhlbiBtYWtlIGl0IGltbXV0YWJsZS4KK2dpbnN0YWxsIC1DdiAtbTA2NDQgLW8kdTEgLWckZzEg YSBiIHx8IGZyYW1ld29ya19mYWlsdXJlXworY2hhdHRyICtpIGIgfHwgZnJhbWV3b3JrX2ZhaWx1 cmVfCisKKyMgQSBzZWNvbmQgIi1DIiBpbnN0YWxsIHdpdGggYW4gaWRlbnRpY2FsIHNvdXJjZSwg bW9kZSwgb3duZXIgYW5kIGdyb3VwCisjIG11c3QgYmUgYSBuby1vcDogaXQgbXVzdCBub3QgYXR0 ZW1wdCB0byBjaG93bi9jaG1vZCB0aGUgZGVzdGluYXRpb24sCisjIHNpbmNlIHRoYXQgd291bGQg ZmFpbCBvbiBhbiBpbW11dGFibGUgZmlsZSBldmVuIHRob3VnaCBub3RoaW5nIGFib3V0CisjIGl0 IHdvdWxkIGFjdHVhbGx5IGNoYW5nZS4KK2dpbnN0YWxsIC1DdiAtbTA2NDQgLW8kdTEgLWckZzEg YSBiIHx8IGZhaWw9MQorCitjaGF0dHIgLWkgYgorCitFeGl0ICRmYWlsCmRpZmYgLS1naXQgYS90 ZXN0cy9sb2NhbC5tayBiL3Rlc3RzL2xvY2FsLm1rCmluZGV4IGUyYWZiZTEzNC4uMThiZjc5ODYx IDEwMDY0NAotLS0gYS90ZXN0cy9sb2NhbC5taworKysgYi90ZXN0cy9sb2NhbC5tawpAQCAtMTIx LDYgKzEyMSw3IEBAIGFsbF9yb290X3Rlc3RzID0JCQkJXAogICB0ZXN0cy9kdS9iaW5kLW1vdW50 LWRpci1jeWNsZS5zaAkJXAogICB0ZXN0cy9kdS9iaW5kLW1vdW50LWRpci1jeWNsZS12Mi5zaAkJ XAogICB0ZXN0cy9pZC9zZXRnaWQuc2gJCQkJXAorICB0ZXN0cy9pbnN0YWxsL2luc3RhbGwtQy1p bW11dGFibGUuc2gJCVwKICAgdGVzdHMvaW5zdGFsbC9pbnN0YWxsLUMtcm9vdC5zaAkJXAogICB0 ZXN0cy9scy9jYXBhYmlsaXR5LnNoCQkJXAogICB0ZXN0cy9scy9uby1jYXAuc2gJCQkJXAotLSAK Mi40Ny4zCgo= --000000000000b04d340656ad6772--