Posso consentire agli utenti di modificare un file non di loro proprietà?


17

Vorrei consentire agli utenti di modificare un file di proprietà di root o di alcuni utenti che non sono loro stessi. Ho modificato il file su 777 e ottengo "operazione non consentita". Ho aggiunto l'utente al gruppo del file e ottengo lo stesso. Perché un utente non può modificare un file a cui ha accesso in scrittura?


1
Secondo questa logica, perché non eseguire tutto come root? Se un utente può cambiare qualsiasi modalità, praticamente distruggi l'intero modello di autorizzazioni Unix ...
Chris Down

1
Che cosa vuoi fare? forse dovresti dare un'occhiata a sudo: linux.die.net/man/8/sudo & linux.die.net/man/5/sudoers
xx4h

Il file ha i permessi 777, un utente potrebbe andare "mv file file.old; cat file.old> file" e ora possederebbero il file e potranno cambiarlo. Perché non possono "file chmod 777"?
ashleysmithgpu,

5
No, possono farlo solo se dispongono dell'autorizzazione in scrittura per la directory. Se l'utente avesse il diritto di modificare i permessi di un file che non possiede, impostando la modalità 04777 e copiando / usr / bin / env in esso, potrebbe eseguire qualsiasi comando come quell'utente.
Stéphane Chazelas,

@StephaneChazelas Questo è uno strano argomento perché il kernel potrebbe facilmente decidere (e lo fa!) Di consentire tali modifiche ai non proprietari senza essere vincolato da quella decisione di consentire loro tutti i tipi di modifiche. Dopo tutto, anche il SUID viene ripristinato quando un non proprietario scrive il file.
Hauke ​​Laging,

Risposte:


8

Perché un utente non può modificare un file a cui ha accesso in scrittura?

Per i normali diritti di accesso questa è una decisione di progettazione. Hai bisogno di richacls : WRITE_ACLe forse WRITE_OWNER.


1
E dovresti avvertire che richacls non è generalmente disponibile.
sendmoreinfo,

@sendmoreinfo L'articolo di Wikipedia lo dice e ovviamente deve essere letto poiché la mia risposta non spiega cosa sono i richacl e come vengono usati. È ridicolo considerare una risposta corretta "non utile" a causa di ciò. Soprattutto perché non esiste un'alternativa equivalente. La prossima volta apporta una modifica se ritieni che tali informazioni siano necessarie.
Hauke ​​Laging,

Vedo, è una decisione progettuale, grazie
ashleysmithgpu,

2
Ovviamente hai usato la funzione, quindi spiegala tu stesso, con parole tue.
sendmoreinfo,

10

Le autorizzazioni Unix sono progettate per essere semplici. È necessaria l'autorizzazione di lettura per leggere da un file, l'autorizzazione di scrittura per scrivere su un file e l'autorizzazione di esecuzione per eseguire un file. Devi possedere un file per modificarne i metadati¹.

Consentire a un utente in grado di leggere un file di concedere ad altri l'autorizzazione in lettura o consentire a un utente in grado di scrivere un file di concedere ad altri l'autorizzazione in scrittura non cambierebbe molto il modello di sicurezza. Questo perché le autorizzazioni unix sono discrezionali: un utente che può leggere un file può esporre il suo contenuto ad altri utenti, anche se questi altri utenti non sarebbero altrimenti in grado di leggere il file (e allo stesso modo per la scrittura, l'utente potrebbe agire come proxy e scrivere per conto di altri).

D'altra parte, consentire a un utente di concedere l'autorizzazione che non ha avrebbe completamente rotto il sistema di autorizzazioni: l'utente potrebbe concedere tutte le autorizzazioni a se stesso.

È piuttosto raro dover modificare le autorizzazioni di un file che non possiedi. Di solito è necessario disporre che il file abbia le autorizzazioni giuste non appena viene creato. Se ne hai davvero bisogno, potresti dare all'utente i sudo chmoddiritti per una particolare modalità e un determinato file (ad es joe: ALL = (ALL) chmod g+r /path/to/file.).

¹ Tranne i tempi di accesso e modifica, che sono particolari perché anche la lettura o la scrittura nel file li imposta.


Nel mio caso d'uso c'è sia un processo web (tramite www-data) che un processo cli (da solo), che vogliono impostare le autorizzazioni su un file. Mi sono aggiunto al gruppo www-data, ma questo non è sufficiente.
donquixote

Anche cambiando proprietario / gruppo a me stesso: www-data non aiuta. (Non ho progettato il meccanismo che tenta di impostare le autorizzazioni, non ho alcun controllo su di esso)
donquixote
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.