Trying out Linode for the first time, running an Arch Linux image, I successfully installed nginx as root.

This, however, made /usr/share/nginx/html inaccessible to non-root users.

Intuitively, I thought this would work:

  • newgrp www (create a new group)
  • chgrp -R www /usr/share/nginx/html (associate directory recursively with new group)
  • chmod -R g=rw /usr/share/nginx/html (give read-write permissions to new group)
  • usermod -a -G www john.doe (add non-root user to new group)

However, I still could not write files to /usr/share/nginx/html as john.doe. I also tried

  • chown -R :www /usr/share/nginx/html

to see if it had any effect—it didn't.

Here's what the setup looks like currently:

[john.doe@hydrogen nginx]$ ls -l
total 4
drwxrw-r-x 4 root www 4096 Dec 19 08:10 html
[john.doe@hydrogen nginx]$ id
uid=1000(john.doe) gid=100(users) groups=100(users),10(wheel)
[john.doe@hydrogen nginx]$ groups john.doe
wheel www users

What am I misunderstanding / missing that I can't write to this directory?

  • 1
    new groups do not activate immediately. I had loads of trouble with this, when I added a new group to my self. Logging out and back in fixes it. I don't remember the other option. But try 'newgrp', – ctrl-alt-delor Dec 19 '13 at 14:06
  • Obscuring information makes questions difficult to understand. id says you're john.doe, but you ran groups acheong87. These aren't the same user. – phemmer Dec 19 '13 at 14:07
  • @Patrick - My mistake—fixed. (I thought using generic placeholders would make it easier to read.) – Andrew Cheong Dec 19 '13 at 14:08
  • 1
    In addition to what richard said, you removed the execute bit from the group on the html directory. You need execute when working with directories. – phemmer Dec 19 '13 at 14:09
  • @Patrick - Agh, that was it! And logging out and back in. I can't believe I never knew that. I guess I never paid much attention, having always learned/developed on UNIX as root. Thank you. – Andrew Cheong Dec 19 '13 at 14:14

Add the Execute bit to your directories. As it stands, john.doe can write and read files in the directory but can't see the files in the directory. You can see this is true by having john.doe edit a file using a path that is inside the directory.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.