New user can't mkdir ~/go/src in Ubuntu 18.04

April 27, 2019 679 views
Linux Basics Ubuntu 18.04

Per https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04 I created a new user with sudo privileges who can successully ssh in:

root@dev: adduser tom
root@dev: # Give him sudo privileges
root@dev: usermod -aG sudo tom
root@dev: # Copy keys to this account
root@dev:$ rsync --archive --chown=tom:tom ~/.ssh /home/tom

Then I exit to my local OS, and ssh back in as the new user, tom.

The only other thing I did was install Golang:

tom@dev: cd ~
tom@dev: curl -O https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz
tom@dev: sudo tar -xvf go1.12.1.linux-amd64.tar.gz -C /usr/local
tom@dev: sudo chown -R root:root /usr/local/go
tom@dev: # Must have used sudo on these but not sure???
tom@dev: mkdir -p $HOME/go/{bin,src}
tom@dev: nano ~/.profile
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin
tom@dev: # Reload profile
tom@dev: . ~/.profile

When I go to create a new directory for a project in Go I get Permission denied:

tom@dev: mkdir ~/go/src/foo
mkdir: cannot create directory ‘foo’: Permission denied

I can do it with sudo but that’s tiring and doesn’t work right anyhow–if I try to nano main.go in the new directory I can’t save because I don’t have privileges.

What did I do wrong that my new user has sudo privileges but can’t even create file or directory without it?

3 Answers
Mohsen47 April 28, 2019
Accepted Answer

@tomcampbell

I created a new droplet and replayed all of your commands without any errors to make sure you can create directories as normal user do this command

sudo chown -R tom:tom $HOME

To make sure tom is the owner of your home directory and all of its sub directories

Hope this helps

THAT DID IT!!!!! Thank you, @Mohsen47! Obviously the problem line was where I gave root, which I didn’t really understand was a user and not a privilege level, permissions–not tom.

What a huge relief!

Wait, but now I have another question. What is the difference between these two commands? Is that giving the user tom sudo privileges has NOTHING to do with the $HOME directory? I would assume that sudo privileges would just naturally be granted to that directory, but I’m beginning to suspect that’s nothing close to the truth.

# Give tom sudo privileges…
$ usermod -aG sudo tom

# …but tom still can't even write to his
# own directory without this. WTF?
$ sudo chown -R tom:tom $HOME
  • @tomcampbell

    Giving the user tom sudo privileges does not change the ownership of his home directory.

    Maybe you have some error in your previous commands where you changed the ownership of your home directory.

    Please verify on a new droplet if you give your new user sudo privileges he cannot write to his home directory, if so please paste the commands you executed exactly so we can help you.

    Best of luck from DO community :)

Have another answer? Share your knowledge.