I am new in linux and I was trying to do some commands in terminal. My problem is that when I do su to another user, and I want to create a directory there, it shows me that permission is denied. Please, help me to understand why this happens and what can I do to solve it.
user@user_VB:~$ sudo su
root@user_VB:~$ useradd user1
root@user_VB:~$ groupadd students
root@user_VB:~$ usermod -g people user1
root@user_VB:~$ su user1
user1@user_VB:~$ mkdir exams
user1@user_VB:~$ sudo mkdir exams
user1 is not in suboers file.
So you have two issues here.
The first is that the new user you created cannot create a new dir. This is because, even though you're changing users (user -> root -> user1), you're still in the home directory of
user1 can't write to. What you need to do is either specify a user directory when you create the user, (
useradd -d /home/user1 user1), as @fedorqui mentioned, or, if you've already created
user1, use the
usermod command to add a home directory to
user1, like this:
usermod -d /home/user1 user1
/home/user1 does not exist, you'll need to, as
root, do the following:
mkdir /home/user1 chown -R user1 /home/user1
What this is doing is first creating the directory, and then assigning ownership of it to your newly created user. So now, when you do
su - user1, you'll end up in
/home/user1. You should now be able to create directories and files.
Your second issue,
"user1 is not in suboers file.", is a result of how sudo manages which users are allowed to use it. The rules that control this are in
/etc/sudoers, which you should edit with
visudo. If you wanted to allow
user1 to run whatever they want with sudo, you could add a line like this:
user1 ALL=(ALL) ALL
Which says that user
user1 may run any command on the system as root. If you now try to run a command with sudo as
user1, it will prompt you for
user1's password and then run the command.