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?

  • 4
    Good question, But where would this be useful? – Nidal Sep 1 '14 at 22:40
  • 1
    @Networker, from the same link I posted in the answer, I found this information as well. It is sometimes necessary to create dummy accounts that are not used by people. For example, to set up an anonymous FTP server. – Ramesh Sep 1 '14 at 22:42
  • 2
    @Networker, may be practical cases it might be useless. However, still it is useful in some interview questions which is where I originally got this question. serverfault.com/a/225954 – Ramesh Sep 1 '14 at 23:10
  • 1
    thanks for this explanation, and your answer is useful indeed, I will give it a try in the future. – Nidal Sep 1 '14 at 23:15
  • 2
    @Networker : here a use case: WSL Ubuntu on Win10 refuses to work, complains about lock files and continues refusing to work after removing said files (working as root). I bet it's related to the Win10 version, but I can't update right now. So, that's a case where I would use this method. – runlevel0 Oct 16 '18 at 14:17

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 with vipw 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 with vigr, 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 and chmod. 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.

| improve this answer | |
  • shouldn't : be used instead of . to separate username from group? – pqnet Sep 2 '14 at 1:12
  • @pqnet yes, use :. – joni Aug 19 '19 at 12:46
  • tnx @Ramesh for this question and materials. – Karthik Nedunchezhiyan Dec 9 '19 at 7:07

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.