diff options
Diffstat (limited to 'mksh.install')
-rw-r--r-- | mksh.install | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/mksh.install b/mksh.install index 20c2f51136de..4abd6346f6e3 100644 --- a/mksh.install +++ b/mksh.install @@ -1,14 +1,45 @@ +pre_install() { + : +} + post_install() { grep -x '/bin/mksh' /etc/shells 2>/dev/null || echo '/bin/mksh' >> /etc/shells + # need to also add /usr/bin/mksh to /etc/shells to avoid https://bugs.archlinux.org/task/55053 grep -x '/usr/bin/mksh' /etc/shells 2>/dev/null || echo '/usr/bin/mksh' >> /etc/shells } +pre_upgrade() { + : +} + post_upgrade() { post_install } -post_remove() { - sed -i -r '/^(\/usr)?\/bin\/mksh$/d' /etc/shells +pre_remove() { + # This is only necessary on alternate shells. sh and bash + # are at the base of Arch and cannot be removed. + # To test this you should have a spare root shell already open. + # Otherwise, if this doesn't work, you will need to learn how to bypass + # the default shell on login. + # http://stackoverflow.com/questions/11059067/what-is-the-nix-command-to-view-a-users-default-login-shell + if getent passwd root | cut -d: -f7 | grep -qle '/bin/mksh'; then + echo '**********************************************' + echo '*** Warning: ROOT HAS mksh as the login shell.' + echo '*** Shell changed to sh to prevent loss of root access.' + echo '**********************************************' + # sh is more likely to guarantee a login than bash because sh is typically + # unmodified. Crappy, but guaranteed. + chsh -s '/bin/sh' + fi + sed -i -r '/^(\/usr)?\/bin\/mksh$/d' '/etc/shells' } -# vim:set ts=2 sw=2 et: +post_remove() { + mandb -q + # /usr/bin/mksh is also detected + if getent passwd | cut -d: -f7 | grep -qle '/bin/mksh'; then + echo '*** Warning: Some users have mksh as their login shell.' + echo '*** Fix promptly to restore access.' + fi +} |