I was browsing through some Linux questions and saw this interesting question.
What steps to add a user to a system without using useradd
/adduser
?
The one possible way that comes to my mind is,
- Add an entry for the user in
/etc/passwd
file. - Add an entry for the group in
/etc/group
file. - Create the home directory for the added user.
- Set the new user password using the
passwd
command.
I tested the above approach and it worked fine.
Is this the only possible way or is there any other work around to achieve this?
Best Answer
The possible way to add an user is more or less similar to what I had put in the question. I got this approach from here.
To create a new account manually, follow these steps:
Edit
/etc/passwd
withvipw
and add a new line for the new account. Be careful with the syntax. Do not edit directly with an editor.vipw
locks the file, so that other commands won't try to update it at the same time. You should make the password field be `*', so that it is impossible to log in.Similarly, edit
/etc/group
withvigr
, if you need to create a new group as well.Create the home directory of the user with
mkdir
.Copy the files from
/etc/skel
to the new home directory.Fix ownerships and permissions with
chown
andchmod
. The-R
option is most useful. The correct permissions vary a little from one site to another, but usually the following commands do the right thing:cd /home/newusername
chown -R username.group .
chmod -R go=u,go-w .
chmod go= .
Set the password with
passwd
.After you set the password in the last step, the account will work. You shouldn't set it until everything else has been done, otherwise the user may inadvertently log in while you're still copying the files.