I am writing a program to disable users from a system, i want to replace /bin/bash to /bin/false.



replace to


I want do with using bash script.

I know one way to do this is using sed. But i am not good at regular expressions.

Can any one help?

  • mv /bin/bash /tmp/bin/false
    – Stepo
    Feb 27, 2013 at 17:07
  • 5
    @Stepo That just makes /bin/bash unavailable to everyone.
    – chepner
    Feb 27, 2013 at 17:08
  • ah gosh, I see. you're right!
    – Stepo
    Feb 27, 2013 at 17:10

2 Answers 2


Well you don't do it at all with sed or regular expressions. What you do is to use the program chsh to change the shell of a user.

chsh -s /bin/false username


usermod -s /bin/false username

If you wanted to replace it with an actual shell you'd also have to make sure that it is listed in /etc/shells.

  • chsh says command not found!! i am using solaris
    – user1212207
    Feb 27, 2013 at 17:13
  • @user1212207: on my SunOS 5.8 SUNW,UltraAX-i2 ther is a usermod. And it even supports -s. I stand by my answer. Feb 27, 2013 at 17:24
  • yeah usermod works fine!!! and solved my problem
    – user1212207
    Feb 27, 2013 at 17:36

Please be aware that chsh is not always available! in alpine Linux for example or embeded systems using busybox ..

Simple inline sed command :

sed -i '/www-data/s/false/sh/g' /etc/passwd

(This example changes shell from /bin/false to /bin/sh for user www-data )

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy