21

I have installed zsh and I am using Oh My ZSH plugins. Everything works fine, but when I become a root user, it changes to the default zsh theme.

What should I do to make the Oh My ZSH configuration as the default zsh for all users including root?

I have tried using the chsh -s /bin/zsh root

That gave me zsh but not oh_my_zsh

I also tried cp -R /home/user/.zshrc /root/.zshrcing to get oh_my_zsh for root, but nothing worked.

(I don't need zsh but I need oh_my_zsh for all the user in the system)

  • How are you becoming root? – frlan Sep 8 '14 at 12:01
  • 1
    How did you install oh my zsh in the first place? Any why not just do the same for root? – Adaephon Sep 8 '14 at 12:26
  • 1
    I think cFINNY's answer on stackoverflow.com/a/42193058/1408600 is what you need. I've done that for months on servers i managed. It works for root and all users – ayik Jan 2 '19 at 2:57
27

I made symbolic links to my zsh files in my home dir, that seems to work fine:

ln -s $HOME/.oh-my-zsh           /root/.oh-my-zsh
ln -s $HOME/.zshrc               /root/.zshrc

Disclaimer (Updated 2020-3-9): Only do this on a single user machine as it will make a user able to run programs as root (see comment by Eliah Kagan).

| improve this answer | |
  • 2
    This should be the accepted answer, eliminates the hustle of installing zsh twice. – Dominic Motuka Aug 17 '16 at 10:11
  • 2
    If you do that, it actually doesn't make sense to link .oh-my-zsh, because the .zshrc still references the .oh-my-zsh of your original user. – Jam Risser Mar 3 '17 at 8:14
  • 1
    Didn't work for me when trying to link from non-root to root, ended up installing it for the non-root as well – Akash Agarwal Apr 7 '17 at 13:55
  • 3
    I tried it and could not use oh-my-zsh plugins using this method. They were considered insecure by compinit. – Melebius Jul 18 '17 at 8:48
  • 10
    I recommend against this method, at least if one does not first consider the security risks. Any program the user runs can edit those configuration files without prompting the user--because they belong to the user, not root--and thus can cause root to perform any action whatsoever next time root uses zsh! Would you be willing to add (or okay with someone else adding) a warning about that to this answer? – Eliah Kagan Jul 30 '17 at 20:29
9

Just run the install command as root user (after doing sudo su)

sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
| improve this answer | |
2

For anyone else with the same question, I would recommend a combination of Tummala Dhanvi's and Morton's approach. I installed oh-my-zsh both as root and as the user using the following commands:

User:

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Root:

su
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Then I created a symbolic link for the config file (run as user):

sudo ln -s /root/.zshrc $HOME/.zshrc

Make sure the user has permissions to read the file:

sudo chmod 744 /root/.zshrc

This approach allows for a shared config while keeping the system secure. You will, however, need root privileges to edit .zshrc

| improve this answer | |
1

I installed oh-my-zsh with root account. Now I login with another account, and install oh-my-zsh again in the home directory of the account. It works for the non-root account.

| improve this answer | |

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.