40

I have a remote partition that i have mounted locally using NFS.

'mount' gives

192.168.3.1:/mnt/storage-pools/ on /pools type nfs (rw,addr=192.168.3.1)

On the server i have in exports:

/mnt/storage-pools   *(rw,insecure,sync,no_subtree_check)

Then I try

 touch /pools/test1
 ls -lah
 -rw-r--r--  1 65534 65534    0 Dec 13 20:56 test1
 chown root.root test1
 chown: changing ownership of `test1': Operation not permitted

What am I missing ? Pulling my hairs out.

Disco
  • 1,301
  • 5
  • 19
  • 34
  • everytime I've had this problem there is a space in the exports file between the server mount and the (rw,... – egorgry Dec 13 '10 at 20:34

2 Answers2

32

By default the root_squash export option is turned on, therefore NFS does not allow a root user from the client to perform operations as root on the server, instead mapping it to the user/group id specified by anonuid and anongid options (default=65534). This is configurable in /etc/exports together with other export options.

Sergey Vlasov
  • 6,088
  • 1
  • 19
  • 30
31

Read the section of the exports(5) concerning "root squashing":

Very often, it is not desirable that the root user on a client machine is also treated as root when accessing files on the NFS server. To this end, uid 0 is normally mapped to a different id: the so-called anony- mous or nobody uid. This mode of operation (called ‘root squashing’) is the default, and can be turned off with no_root_squash.

So you want:

/mnt/storage-pools   *(rw,insecure,sync,no_subtree_check,no_root_squash)

(edited typo)

larsks
  • 41,276
  • 13
  • 117
  • 170