Autorizzazione negata per cambiare gid (gruppo) di un file che possiedo


17

Sembra che manchi ancora alcune cose sul modo in cui funzionano le autorizzazioni. Sono su un sistema debian 7 tra l'altro. proprio ora ho questo file di cui ho scaricato e di cui fa parte myuser:myuser, ovvero utente e gruppo sono impostati su di me. Risiede anche nella mia $HOMEdirectory poiché è lì che l'ho scaricato.

Fin qui tutto bene. Ora voglio condividere questo file con alcuni altri utenti del pc e per questo voglio cambiare la proprietà del gruppo del file in "utenti" del gruppo. tuttavia ciò non riesce:

nass@quarx:~/xmas_carol$ chgrp -R users * 
chgrp: changing group of movie.mov': Operation not permitted

E i contenuti della cartella sono:

-rwxr-xr-x 1 nass nass 2482411461 Feb  6 03:57 movie.mov

Sono confuso su cosa sta succedendo con le autorizzazioni. Qualcuno può spiegare


è /xmas_carolsamba / nfs mount?
Rahul Patil,

La soluzione è setfacl(se il filesystem ha ACL). vedi unix.stackexchange.com/questions/101263/…
ctrl-alt-delor

Ho avuto lo stesso errore fino a quando ho capito che mi ero AGGIUNTO a quel gruppo. In altre parole, ho dovuto disconnettermi, riconnettermi, per rendere effettive le modifiche.
Jonathan,

Risposte:


22

Probabilmente il tuo utente non è un membro del usersgruppo, quindi non hai il diritto di assegnare un file a quel gruppo. Illustrare:

$ groups
terdon sudo netdev fuse vboxsf vboxusers

$ ls -l file
-rw-r--r-- 1 terdon terdon 604 Feb  6 03:04 file
$ chgrp users file
chgrp: changing group of ‘file’: Operation not permitted
$ chgrp vboxusers file
$ ls -l file
-rw-r--r-- 1 terdon vboxusers 604 Feb  6 03:04 file

Questo comportamento è menzionato nelle specifiche POSIX :

Solo il proprietario di un file o l'utente con i privilegi appropriati può modificare il proprietario o il gruppo di un file.

Alcune implementazioni limitano l'uso di chgrp a un utente con privilegi appropriati quando il gruppo specificato non è l'ID gruppo effettivo o uno degli ID gruppo supplementari del processo chiamante.

Il motivo principale di ciò è che se non sei un membro di un gruppo, non dovresti essere in grado di modificare ciò a cui quel gruppo ha accesso. Anche questa risposta sulle chownautorizzazioni è rilevante.

Tradizionalmente, sui sistemi condivisi, si dispone di un usersgruppo a cui appartengono tutti gli utenti regolari e che è il gruppo principale di ciascun utente. In questo modo, i file vengono creati di proprietà del usersgruppo e tutti gli utenti possono leggerli.

Ad ogni modo, dato che non è questo il modo in cui sono impostate distribuzioni basate su Debian in questi giorni, il modo di dare a un utente specifico l'accesso al tuo file sarebbe

  1. Cambia la proprietà del gruppo del file / directory in un gruppo di cui tu e l'altro utente siete membri;

  2. Basta modificare le autorizzazioni del file / directory di conseguenza:

    $ chmod 755 /home/terdon
    $ ls -ld /home/terdon
    drwxr-xr-x 170 terdon terdon 491520 Apr 20 13:43 /home/terdon/
    

    Ciò renderà la directory accessibile a tutti.


4

Su UNIC recenti (e "recente" ha un significato piuttosto ampio qui), non è possibile modificare la proprietà del gruppo di file in un gruppo di cui non si è membri. Le versioni legacy di diverse versioni UNIX supportano questo, per casi d'uso come i tuoi, ma si è rivelato un problema di sicurezza.

Il problema di poter cambiare la proprietà del gruppo in gruppi stranieri è piuttosto banale: se il file system su cui risiede il file ha le quote di gruppo abilitate, un utente con intenzioni dannose potrebbe semplicemente riempire la quota del gruppo straniero, rendendo impossibile per gli utenti con questo gruppo come ID gruppo primario per creare altri file. Ciò potrebbe facilmente influire anche sui processi già in esecuzione e farli morire a causa del "disco intero".

Per aggirare il tuo problema ci sono (almeno) due possibilità: in primo luogo, potresti chiedere al superutente del tuo sistema di aggiungere il gruppo target previsto all'elenco di gruppi supplementari del tuo account. Naturalmente questo ha un senso limitato se non si ha una relazione con questo gruppo.

L'altro modo per non dover rendere il file scrivibile in tutto il mondo, ciò che sicuramente non è desiderato, è usare gli ACL per dare al gruppo previsto le autorizzazioni di lettura e scrittura:

$ setfacl -m group:thegroupsname:rwx the_file(s)

non devi dare execute (su un file normale) e probabilmente non vuoi dare il permesso di scrivere.
ctrl-alt-delor

2

Potrebbe essere perché il bit immutabile è impostato. Ottieni l'elenco degli attributi del file in esecuzione

lsattr /path/to/your/file

se i appare, l'attributo immutabile è impostato e nessuno può modificare il file (anche root).

Per rimuovere l'attributo è necessario eseguire come root

chattr -i /path/to/your/file

Per vedere più attributi del file system leggi le pagine man

man chattr
man lsattr

Buon punto, ma dalla domanda suppongo che l'interrogatore non abbia i diritti di superutente, che è necessario cancellare il flag immutabile (almeno su tutti i filesystem che ho seguito così a lungo). Inoltre, dal momento che ha appena estratto un archivio, molto probabilmente non è il problema poiché l'archiviatore usato avrebbe dovuto impostarlo (stesso problema).
Andreas Wiese,

0

Se ti sei aggiunto al gruppo proprio ora, assicurati di disconnetterti, riconnettiti per assicurarti che le modifiche abbiano effetto.

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.