linux – chmod -x /user/bin/chmod

ostatnio ktoś zapytał co zrobić jak wykonałem „chcący” coś takiego:

>chmod -x /user/bin/chmod

Pierwsze co mi przyszło do głowy to wymusić to w bash, jednak skompilowane aplikacje muszą mieć bit wykonywalności aby się wykonały. Można oczywiście wykorzystać inne języki skryptowe aby nadać ten bity wykonywalności np w perl to by było:

#!/usr/bin/perl
use strict;
use warnings;
#Plik
my $filename = "/usr/bin/chmod";
chmod 0755, $filename or die "Couldn't chmod $filename: $!";
# Katalog
#my $dir = "testchmod";
#chmod(0755, $dir) or die "Couldn't chmod $dir: $!";
exit 0;

No ale jest biblioteka wykonywalna która jako parametr przyjmuje nazwę aplikacji skompilowanej bez bitu wykonywalności:

# ls -l /usr/bin/chmod
-rwxr-xr-x 1 root root 58584 04-11 06:35 /usr/bin/chmod
# chmod -x /usr/bin/chmod
# ls -l /usr/bin/chmod
-rw-r--r-- 1 root root 58584 04-11 06:35 /usr/bin/chmod
# bash /usr/bin/chmod
/usr/bin/chmod: /usr/bin/chmod: nie można uruchomić pliku binarnego
# /lib64/ld-2.17.so /usr/bin/chmod
/usr/bin/chmod: brakujący argument
Napisz „/usr/bin/chmod --help” dla uzyskania informacji.
# /lib64/ld-2.17.so /usr/bin/chmod +x /usr/bin/chmod
# ls -l /usr/bin/chmod
-rwxr-xr-x 1 root root 58584 04-11 06:35 /usr/bin/chmod