bug#81413: [PATCH] install: skip chown/chmod when -C finds nothing to change

Pádraig Brady <[email protected]> Thu, 16 Jul 2026 12:31:49 +0100
Newsgroups gmane.comp.gnu.core-utils.bugs
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------0mMR0ptLZGCiqWklhd3s8S0K
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 15/07/2026 22:56, Mateusz Nosek wrote:
> Hi Pádraig,
> 
> 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 PM Pádraig Brady <[email protected]> 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 context anyway.
I've pushed that with a NEWS entry.
I also pushed the attached as a follow up
to make cleanup of chattr +i files in tests more robust.

Marking this as done.

thanks!
Padraig
--------------0mMR0ptLZGCiqWklhd3s8S0K
Content-Type: text/x-patch; charset=UTF-8; name="immutable-cleanup.patch"
Content-Disposition: attachment; filename="immutable-cleanup.patch"
Content-Transfer-Encoding: base64

RnJvbSBkYmVkMTY5ODM1MGJhMWVjMDY1MDVlMzVmMzcyNjVmOWYwYzY5ZGMwIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/UD1DMz1BMWRyYWlnPTIwQnJhZHk/
PSA8UEBkcmFpZ0JyYWR5LmNvbT4KRGF0ZTogVGh1LCAxNiBKdWwgMjAyNiAxMjoxNDo1OSAr
MDEwMApTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzOiB1c2UgbW9yZSByb2J1c3QgY2xlYW51cCBv
ZiBpbW11dGFibGUgZmlsZXMKCiogdGVzdHMvcm0vZW1wdHktaW1tdXRhYmxlLXNraXAuc2g6
IFVzZSBjbGVhbnVwXygpIHRvCnJlbW92ZSB0aGUgaW1tdXRhYmxlIGF0dHJpYnV0ZSwgc28g
dGhhdCBmYWxzZSBmYWlsdXJlcwpvciBzdGFsZSBmaWxlcyBkbyBub3QgcmVzdWx0IGZyb20g
ZS5nLiBhIGtpbGxlZCB0ZXN0IHJ1bi4KLS0tCiB0ZXN0cy9pbnN0YWxsL2luc3RhbGwtQy1p
bW11dGFibGUuc2ggfCA0ICsrLS0KIHRlc3RzL3JtL2VtcHR5LWltbXV0YWJsZS1za2lwLnNo
ICAgICB8IDMgKystCiAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS90ZXN0cy9pbnN0YWxsL2luc3RhbGwtQy1pbW11dGFi
bGUuc2ggYi90ZXN0cy9pbnN0YWxsL2luc3RhbGwtQy1pbW11dGFibGUuc2gKaW5kZXggM2Iw
Y2JmNGQyLi4wYmRiOTc5OTcgMTAwNzU1Ci0tLSBhL3Rlc3RzL2luc3RhbGwvaW5zdGFsbC1D
LWltbXV0YWJsZS5zaAorKysgYi90ZXN0cy9pbnN0YWxsL2luc3RhbGwtQy1pbW11dGFibGUu
c2gKQEAgLTQzLDYgKzQzLDggQEAgZzE9MQogCiBlY2hvIHRlc3QgPiBhIHx8IGZyYW1ld29y
a19mYWlsdXJlXwogCitjbGVhbnVwXygpIHsgY2hhdHRyIC1pIGI7IH0KKwogIyBJbnN0YWxs
IG9uY2UgdG8gY3JlYXRlIHRoZSBkZXN0aW5hdGlvbiwgdGhlbiBtYWtlIGl0IGltbXV0YWJs
ZS4KIGdpbnN0YWxsIC1DdiAtbTA2NDQgLW8kdTEgLWckZzEgYSBiIHx8IGZyYW1ld29ya19m
YWlsdXJlXwogY2hhdHRyICtpIGIgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCkBAIC01Myw2ICs1
NSw0IEBAIGNoYXR0ciAraSBiIHx8IGZyYW1ld29ya19mYWlsdXJlXwogIyBpdCB3b3VsZCBh
Y3R1YWxseSBjaGFuZ2UuCiBnaW5zdGFsbCAtQ3YgLW0wNjQ0IC1vJHUxIC1nJGcxIGEgYiB8
fCBmYWlsPTEKIAotY2hhdHRyIC1pIGIKLQogRXhpdCAkZmFpbApkaWZmIC0tZ2l0IGEvdGVz
dHMvcm0vZW1wdHktaW1tdXRhYmxlLXNraXAuc2ggYi90ZXN0cy9ybS9lbXB0eS1pbW11dGFi
bGUtc2tpcC5zaAppbmRleCA1YjhlYTY2MDYuLmE3MGQ2MTk2NyAxMDA3NTUKLS0tIGEvdGVz
dHMvcm0vZW1wdHktaW1tdXRhYmxlLXNraXAuc2gKKysrIGIvdGVzdHMvcm0vZW1wdHktaW1t
dXRhYmxlLXNraXAuc2gKQEAgLTM2LDExICszNiwxMiBAQCBpZiB0ZXN0ICRjaGF0dHJfaV93
b3JrcyA9IDA7IHRoZW4KICAgc2tpcF8gImNoYXR0ciAraSBkb2Vzbid0IHdvcmsgb24gdGhp
cyBmaWxlIHN5c3RlbSIKIGZpCiAKK2NsZWFudXBfKCkgeyBjaGF0dHIgLWkgZW1wdHk7IH0K
KwogbWtkaXIgZW1wdHkgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCiB0b3VjaCB4IHkgfHwgZnJh
bWV3b3JrX2ZhaWx1cmVfCiBjaGF0dHIgK2kgZW1wdHkgfHwgZnJhbWV3b3JrX2ZhaWx1cmVf
CiBybSAtcmYgZW1wdHkgeCB5CiB7IHRlc3QgLWYgeCB8fCB0ZXN0IC1mIHk7IH0gJiYgZmFp
bD0xCi1jaGF0dHIgLWkgZW1wdHkKIAogRXhpdCAkZmFpbAotLSAKMi41NS4wCgo=

--------------0mMR0ptLZGCiqWklhd3s8S0K--