La radice non può cambiare l'autorizzazione o la proprietà del file


8

Il mio direcotrory è root:

pwd 
/

Ho la seguente directory:

drwxrwxrwx   4 root   root     81920 Jun  4 09:25 imr_report_repo

NOTA: imr_report_repo è una condivisione NFS.

Ecco l' fstabelenco per imr_report_repo:

netapp1:/imr_report_repos_stage  /imr_report_repo  nfs   rw,bg,actimeo=0,nointr,vers=3,timeo=600,rsize=32768,wsize=32768,tcp 1    1
d imr_report_repo

Un file all'interno di mount:

$ ls -al
-rw-r--r--  1 502     502      1273 Mar 21  2013 imr1_test.txt

L'UID 502 non esiste. Se aggiungiamo tale UID / GID localmente:

$ groupadd -g 502 jimmy
$ useradd -g 502 -u 502 jimmy

Ora viene visualizzato:

$ ls -al
-rw-r--r--  1 jimmy     jimmy      1273 Mar 21  2013 imr1_test.txt

Ora passa a root:

$ su -
$ chown oracle:oinstall imr1_test.txt
chown: changing ownership of `imr1_test.txt': Operation not permitted

Il server NFS è una NetApp? Hai accesso amministrativo ad esso?
Mark Plotnick,

Sì, è NetApp. Ho dei privilegi di amministratore
Stringer,

Risposte:


10

Di solito rootnon ha autorizzazioni speciali per le condivisioni NFS. Al contrario: rootviene mappato su un utente normale (ovvero non ha nemmeno "normale" accesso in lettura e scrittura ai rootfile).

È necessario eseguire chownsul server NFS.


4

In genere, l'utente root locale sui client NFS non può eseguire questo tipo di attività su condivisioni montate su NFS. NetApp sembra aggiungere un po 'di svolta a questo come segue:

  • Per impostazione predefinita, l'opzione anon specifica un UID di 65534. In altre parole, se non si utilizzano le opzioni root e anon per una risorsa, gli utenti root su tutti gli host accedono alla risorsa utilizzando l'UID 65534.
  • Se l'opzione anon specifica un UID di 65535, l'accesso root è disabilitato.
  • Se l'opzione anon specifica un UID di 0, l'accesso root è concesso a tutti gli host.
  • Se viene fornito un nome anziché un UID, tale nome viene cercato in base all'ordine specificato nel /etc/nsswitch.conffile per determinare l'UID corrispondente da assegnare con l'opzione anon.

Quindi, a quanto pare, la condivisione NFS di NetApp ha l'opzione predefinita, # 1. È possibile confermare ciò toccando un file sulla condivisione NFS come root e vedere quale ID risulta dal fare questo.

Dovresti essere in grado di vedere le opzioni esportate della condivisione NFS usando mount -vsul tuo client NFS.

$ mount -v
...
mulder:/export/raid1/home/sam on /home/sam type nfs (rw,intr,tcp,nfsvers=3,rsize=16384,wsize=16384,addr=192.168.1.1)

Riferimenti


2

Un server NFS NetApp cambierà, per impostazione predefinita, le credenziali dell'utente root su un client in uid 65534 sul server, quindi operazioni come questa chownfalliranno. Per cambiarlo, modifica l'elenco di esportazione sul filer in modo che la riga per il filesystem abbia il parametro root=clientid, dove clientid è l'indirizzo IP o il nome host del client a cui vuoi avere accesso root a quel filesystem. Quindi esegui exportfs -ase stai utilizzando l'interfaccia della riga di comando sul filer.


0

Come ha detto il commento slm sopra,

In genere, l'utente root locale sui client NFS non può eseguire questo tipo di attività su condivisioni montate su NFS

La funzione utilizzata si chiama rot squash . Maggiori informazioni qui . Nel mio caso, l'unico modo era effettuare il login per disabilitare il root squash per questo particolare server e abilitarlo in un secondo momento.

Una situazione simile si verificherà se si utilizza un dockercontenitore con volumi e il contenitore viene eseguito con un utente non privilegiato (ad es USER apache.). Quindi l'idea che i mountpoint di NFS siano r/ wsolo per owner, e non per, rootè una pratica di sicurezza comune.

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.