16

I want to change the default username (pi) to something, I tried

usermod -l newusername pi

but that gives me

usermod: user pi is currently used by process 2104

Is there another way to modify the root account or disable this and create a new root account?

1

6 Answers 6

8

ps -lp 2104 will give you some information about what the process is. You can check that and kill 2104.

Note you'll have to do this logged in as root, or some other user with the permissions to do it. It probably will not work via sudo, etc.

You'll also have to rename the home directory.

IMO you should just create a new user with whatever name, and leave pi there, but that is up to you.

1
  • Thanks, I just like to have a clean system and the unused user for some reason bothers me, but i'll just leave it. Thanks for the help! Commented Jan 8, 2014 at 19:10
18

If you're in the console of the pi there is a way to get around this without having to make another user (or set a pw on root):

Assuming nothing else is running with your username other then the shell on the console - no X session, no ssh login, etc:

exec sudo -s
cd /
usermod -l newname -d /home/newname -m oldname

The reason this works:

  • sudo -s tells sudo that instead of just running the command as another user, it should run a new shell as the given user
  • exec tells the shell that instead of spawning off a new process when it runs a command (hence leaving the shell process running as the logged in user), that the shell should overwrite itself with the new process. This means that when the exec command ends the shell is gone. In the case of a login shell, that equates to disconnecting from the login.
  • the cd / is optional. At a minimum, things get a bit confusing if you move a directory you're in (your login starts out sitting in the user pi home directory). Sometimes this will cause a fail, so it's better to be safe than sorry.

Therefore with exec sudo -s you're overwriting your shell with a new shell that has been created as a different user (the root user in this case).

P.S. be sure to give usermod -d a full (hard link) path or you'll end up moving the account's home to somewhere you don't expect and have a bogus directory entry in passwd.

1
  • 1
    mike's solution works fine for me... thanks and one more thing before doing this steps goto tty (ctrl + alt + f1). and follow the steps given by mike. Commented Jul 17, 2014 at 14:52
6

The answers above are correct, I just want to give another option that may suits you better.

Assuming:

  • A brand new raspberry pi
  • You want to change the default username pi to mypie
  • You want to adapt also the main group from pi to mypie
  • You want other things to work out like sudo and auto-login

Proceed to:

Step 1: stop user pi from running before the change.

  • Boot it, go to RPI configurations and
    • allow SSH,
    • disallow auto-login
    • hit ok
  • Press ALT+F1 to go to the first tty
  • Escalate to root with sudo su -
  • Edit $vim /etc/systemd/system/[email protected]

    • Find and comment (#) the line

      • #ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM

      you can uncomment it later if you want console autologin, but then don't forget to change the user pi to your new username mypi

  • Create a new root password with passwd. (DON'T FORGET IT)
  • Type reboot

Step 2: make the user change

  • If you see the graphical login prompt, you are good. Do not login. Instead, press ALT+F1 (* if you want to do it via ssh, see the apendix)
  • After ALT+F1, you should see a login question (and not an autologin).
  • Login as root with your root password. Now you are alone in the system, and changes to pi will not be met with usermod: user pi is currently used by process 2104. Check with ps -u pi to see an empty list.
  • Very carefully, key by key, type usermod -l mypie pi . This will change your username, from /etc/passwd file, but things are not ready yet. Anyway, check with tail /etc/passwd and see the last line mypie:1000:... The 1000 is the UID and it is now yours.
  • Try su mypie just to be sure. Do nothing. Just exit again to root. It should work. Now you need to adjust the group and a $HOME folder.

Step 3: make the group change

  • Type, again carefully, groupmod -n mypie pi . This will change the pi group name. Check it with tail /etc/group and you will see the last line the new name associated with GID 1000.
  • Just to clarify, type ls -la /home/pi and you will see that the pi HOME now belongs to you, mypie.

Step 4: lets adopt the new home.

  • I see in the answers above the creation of a new folder, copying everything. No need. Lets just use the same.
  • First move to cd /home to make it easier. Type ls -la and see pi, onwer mypie group mypie
  • Type carefully: mv pi mypie . You now need to associate this change with your new user.
  • Type carefully: usermod -d /home/mypie mypie . This will change your home directory. Check it with tail /etc/passwd and look at the sixth field (separated by :).

Step 5: some adjusts after the fact.

  • Reboot with reboot
  • Login as your new user mypie in the graphical interface.
  • Open a terminal.
Change your password
  • Type passwd to change the password of mypie to something else than raspberry
  • Type sudo su - and you will be asked your password.
auto-login again if you will (I don't recommend, but well)
  • If you want to autologin your new account, edit the file:
    • $vim etc/lightdm/lightdm.conf
    • find the line with #autologin-user=, change it to autologin-user=mypie (no comment #)
  • If you want back the ALT+F1 autologin, find and edit the file:
    • $vim /etc/systemd/system/[email protected] and change the line
    • #ExecStart=-/sbin/agetty --autologin mypie --noclear %I $TERM
Make your sudo passwordless again (I don't recommend as well)
  • Move yourself (root) to cd /etc/sudoers.d
  • Rename the file 010_pi-nopasswd to 010_mypie_nopasswd
  • Open it vim 010_mypie_nopasswd and change the line pi ALL=(ALL) NOPASSWD: ALL to, obviously mypie ALL=(ALL) NOPASSWD: ALL. It is read-only, so save it forcing with :x!
While you are into it, change your hostname
  • Edit $vim /etc/hosts and change 127.0.1.1 raspberry to something more appropriate like 127.0.1.1 myoven.
  • Edit $vim /etc/hostname and let a single line with myoven.
Done

Step 6: reboot

  • Type, carefully, reboot

Appendix - ssh

  • You may want to do this via ssh. For this to work, first you need to allow root login.
  • Find the file /etc/ssh/sshd_config
  • Comment the line #PermitRootLogin without-password
  • Add the line PermitRootLogin yes
  • Save, exit, restart ssh with /etc/init.d/ssh restart

  • After you have done it, undo this changes as they are too dangerous to let that way.
  • Same file, delete PermitRootLogin yes line and remove the comment from PermitRootLogin without-password

Note 1: This is a guide, and the content deals with very dangerous commands. Backup first, or be aware that maybe you will need to burn again your image. As I am assuming a brand new raspberry pi, there is not much to backup anyway. But if you adapt it to another situation, be advised.

Note 2: There might be more things to change. As I am new to the Raspberry pi (I got mine 2 days ago), I may find other adjusts I left out and I will edit this answer again.

Note 3: My first attempt was to move pi user and pi group to another UID and GID (1001) and create a new user for me as 1000. That didn't quite go as I planned and I needed to burn my SD card again after spending the whole day trying to figure out why the "configure you pi" program would not work anymore. But well, this way here is far easier anyway, so here you go: a new pi with just your username as UID 1000 (and all the good stuff in your home).

Note 4: Be advised, after doing that, the standard configuration tool stops working.

Raspberry Pi Configuration Tool

footnote: Thanks for the stackexchange raspberrypi community (as I'm new here also).

1
  • Small notes I found while following your steps: A fresh install on my raspian had vi but no vim. To get to the first tty I had to use ctrl+alt+F1.
    – akozi
    Commented Feb 19, 2019 at 22:37
3
  1. sudo passwd root
    [enter new ridiculous root password. Remember it.]
  2. Log/ssh into pi as root using ridiculous password.
  3. usermod -l newname -d /home/newname -m oldname
  4. ls -al /home/
    [See that you've changed the user & home folder. Yay. Oh.. gotta change the group...]
  5. groupmod --new-name newname oldname
  6. ls -al /home/
    [See that user, group & home folder are changed. Yay!]
  7. exit
    (Now log in as newname. Yay!)
    But wait....
    Now you should reset root so others can't brute-force your ridiculous password.
  8. sudo passwd -l root
    (Oh, and if you REALLY care... edit /etc/ssh/sshd_config, setting "PermitRootLogin no", and restart that service.)

Then you'll have to change any additional changes in any scripts/setups that refer to 'pi'... JOY.

0

I don't have enough points to just put this as a comment, but if booting into safe mode doesn't work, you can try doing this by creating a temporary account and operating from there. See the description here: https://askubuntu.com/a/34075/112715

0

DO NOT do this - you will likely end up with an unusable system.

I had the same problem here and I tried to kill the process one by one but I just cannnot kill them all. I found a much easier solution: First make sure you have the password of root (su), then you can stop the auto login by raspi-config Find the option of auto login and stop user "pi" auto log into desktop GUI without typing password. After reboot, you would be asked to type in the password of "pi". Don't do it, intead press ctrl+alt+F2 to login as su then: sudo pkill -u pi Now all process that "pi" is using would be killed, you can change the name of user "pi" now.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.