11

Is it possible to add a user in ubuntu linux without useradd command I think its possible by adding the entries in /etc/passwd and /etc/shadow but i don't know the exact steps to do it and the user should get its home directory and bash shell too.

Vishwanath Dalvi
  • 1,397
  • 3
  • 14
  • 15

3 Answers3

19

It's not recommended to manually modify /etc/passwd, /etc/shadow, /etc/group or /etc/gshadow because the risk of breakage. If you're looking for an alternative command that is easier to use, take a look at adduser(8). All you have to run is:

sudo adduser user

The shell will be /bin/bash by default per /etc/adduser.conf.

Usually, if you wish to add a user with the bash shell, thereby create a home directory /home/user and a user group, you would use:

sudo useradd --create-home --shell /bin/bash --user-group user

This command is basically determining a free User ID $UID and Group ID $GID and then executing the next commands:

echo "user:x:$UID:$GID::/home/user:/bin/bash" | sudo tee -a /etc/passwd
echo "user:x:$GID:" | sudo tee -a /etc/group
echo "user:!:$DATE_OF_LAST_PASS_CHANGE:0:99999:7:::" | sudo tee -a /etc/shadow
echo "user:!::" | sudo tee -a /etc/gshadow

..and thereby possibly making a backup of the files.

The next manual pages about the file formats may be of interest to you:

Lekensteyn
  • 171,743
  • 65
  • 311
  • 401
  • hey, Lekensteyn, did you miss this first part of their post? "Is it possible to add a user in ubuntu linux without useradd command..." They want a solution without useradd :/ – Thomas Ward Jul 29 '11 at 14:46
  • 1
    @TheEvilPhoenix: I thought he was asking about an alternative for `adduser`. I've now included `adduser` as answer. It's indeed "without useradd" :) – Lekensteyn Jul 29 '11 at 14:53
  • No problem, wanted to point it out is all. and forgive me being semiconfrontational... long, bad days at work with cascade server failure does that to ya... – Thomas Ward Jul 29 '11 at 15:40
  • @All I want to create user without useradd by adding possible entries in /etc/passwd and /etc/shadow – Vishwanath Dalvi Jul 29 '11 at 17:24
  • this is not what i wanted. – Vishwanath Dalvi Jul 29 '11 at 17:25
  • @mr_eclair: I've included how to add a user to `/etc/passwd`. The group changes are optional but recommended. What else do you expect? – Lekensteyn Jul 29 '11 at 18:59
  • Very helpful answer! What's the reason to use `tee -a` instead of `>>`? – m59 Nov 18 '16 at 04:56
  • 2
    @m59 `>>` tries to open a file as the current (non-root) user which will fail with a Permission denied error. Using `sudo tee` bypasses that. Alternatively, you could wrap the command in a `sudo sh -c '...'` to avoid that issue. – Lekensteyn Nov 18 '16 at 16:33
1

Although not usually necessary or recommended, the answer to the question of How to add user without useradd command is to use sudo vipw

This will launch your system-defined editor while locking the passwd file. Enter a line for a new user. (In vi, shift-G to get to the last line then yy p to duplicate it.) Edit the username and create a unique user ID number.

After saving the file and exiting the editor, you'll be prompted to edit /etc/shadow. Use the same technique to create a new line and use "*" for the password hash. The new account is locked. Use passwd username to unlock it and set a password.

It's also necessary to create a home directory, copy files from the skeleton directory, set group permissions, etc. But vipw is your main resource. See also vigr.

Source: http://itguykelly.wordpress.com/2011/04/19/manually-add-new-user-to-red-hatfedoracentos/ (yes, these commands work across various flavors of *nix)

DrumEater
  • 191
  • 1
  • 2
  • 9
0

When the user is created in the system it has effect on the files such as /etc/passed , /etc/group , /etc/shadow so go through these files and make the manual entry . And finally from /etc/skel file add skeleton for user in user's home directory which you have to create in home directory.