Non importa se i file in /bin
(o in qualsiasi altra directory standard in cui sono conservati gli eseguibili) sono scrivibili da root o no. Su un server Linux che sto usando, sono scrivibili per root, ma sulla mia macchina OpenBSD non lo sono.
Finché non sono scrivibili dal gruppo o dagli "altri"!
Non ci sono problemi di sicurezza, ad es
-rwxr-xr-x 1 root root 126584 Feb 18 2016 /bin/ls
Se qualcuno volesse sovrascriverlo, dovrebbero essere root, e se lo sono root
e lo sovrascrivono, allora sono
- installare una nuova versione, o
- goffo, o
- un attaccante con permessi di root già .
Un'altra cosa da considerare è che root può scrivere sul file, indipendentemente dal fatto che sia protetto da scrittura o meno, perché ... root.
Notare anche che "uno script" è tanto un eseguibile quanto un file binario. Uno script non deve essere scrivibile "perché è un file di testo". Semmai, dovrebbe avere la stessa autorizzazione degli altri eseguibili nella stessa directory.
Non modificare le autorizzazioni su tutto ora! Ciò può provocare ogni sorta di caos e potenzialmente confondere i gestori di pacchetti che potrebbero verificare che le autorizzazioni siano impostate correttamente. Potrebbe anche rendere vulnerabile il sistema se si modificano accidentalmente le autorizzazioni in modo errato su un'applicazione critica.
Supponi solo che le autorizzazioni sugli eseguibili siano impostate correttamente, a meno che non trovi qualcosa che sembra davvero strano, nel qual caso dovresti probabilmente contattare il responsabile del pacchetto pertinente per verificare piuttosto che iniziare a cambiare roba.
Dai commenti e dalla chat , c'è stata una chiamata per un po 'di storia.
La storia delle autorizzazioni sui binari su Linux non è qualcosa di cui io sappia nulla. Si potrebbe ipotizzare che abbiano semplicemente ereditato i permessi dalla directory, o semplicemente dal default umask
di Linux, ma davvero non lo so.
Quello che so è che OpenBSD installa i binari nel sistema di base 1 con modalità di autorizzazione 555 per impostazione predefinita ( -r-xr-xr-x
). Questo è specificato in un frammento di Makefile in /usr/share/mk/bsd.own.mk
cui è impostato BINMODE
su 555 (a meno che non sia già impostato). Questo viene successivamente utilizzato durante l'installazione degli eseguibili durante make build
in /usr/src
.
Ho dato un'occhiata al registro CVS annotato per questo file e ho scoperto che questa riga nel file è rimasta invariata da quando è stata importata da NetBSD nel 1995.
Su NetBSD, il file è stato inserito per la prima volta nel CVS nel 1993, con un valore BINMODE
impostato su 555.
Il progetto FreeBSD sembra aver usato esattamente lo stesso file di NetBSD almeno dal 1994 , e con un commit successivo aggiunge un suggerimento nel messaggio di commit che i vecchi file provenivano dalla versione 4.4BSD di Berkeley Software Distribution.
Oltre a ciò, il CSRG di Berkeley ha conservato le fonti in SCCS ma il loro repository è disponibile in formato Git su GitHub 2 . Il dossier che stiamo dando al trattamento forencico qui sembra essere stato commesso da Keith Bostic (o da qualcuno vicino a lui) nel 1990.
Questa è quella storia. Se vuoi il perché , allora suppongo che dovremo chiedere a Keith. Speravo di vedere un messaggio di commit per un cambiamento che dicesse " questo deve essere 555 perché ... ", ma no.
1 I sistemi BSD hanno una divisione più rigorosa in "sistema base" e "pacchetti di terze parti" (porte / pacchetti) rispetto a Linux. Il sistema di base è un'unità coerente che fornisce un set completo di funzionalità per l'esecuzione del sistema operativo, mentre le porte o i pacchetti sono visti come "software locale" e sono installati sotto /usr/local
.
2 Un repository GitHub più completo dei rilasci Unix degli anni '70 in poi è disponibile troppo .
root
ha l'autorizzazione di scrittura per un file binario? Se non altro sarebbe utile durante l'aggiornamento di quel pacchetto.