Subject: pkg/27162: pkgsrc creates an inadequate /etc/shells if it doesn't already exist.
To: None <gnats-bugs@gnats.NetBSD.org>
From: None <gavan@coolfactor.org>
List: pkgsrc-bugs
Date: 10/06/2004 12:21:27
>Number:         27162
>Category:       pkg
>Synopsis:       pkgsrc creates an inadequate /etc/shells if it doesn't already exist.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 06 12:22:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     Gavan Fantom
>Release:        Solaris 10
>Organization:
>Environment:
SunOS yellow-30 5.10 s10_68 sun4u sparc SUNW,Ultra-60
>Description:
Installing a shell from pkgsrc on a system which doesn't already have an /etc/shells file causes one to be created, containing only the shell being installed from pkgsrc. On Solaris, dtlogin looks at /etc/shells and prevents users of shells not in it from logging in.

If no /etc/shells is present, a default list of shells is assumed. On NetBSD this consists of /bin/sh and /bin/csh. On Solaris this includes:

     /bin/bash                  /bin/csh
     /bin/jsh                   /bin/ksh
     /bin/pfcsh                 /bin/pfksh
     /bin/pfsh                  /bin/sh
     /bin/tcsh                  /bin/zsh
     /sbin/jsh                  /sbin/pfsh
     /sbin/sh                   /usr/bin/bash
     /usr/bin/csh               /usr/bin/jsh
     /usr/bin/ksh               /usr/bin/pfcsh
     /usr/bin/pfksh             /usr/bin/pfsh
     /usr/bin/sh                /usr/bin/tcsh
     /usr/bin/zsh               /usr/xpg4/bin/sh


As NetBSD ships with an /etc/shells by default, this doesn't really bite NetBSD users. However, should an administrator decide to delete /etc/shells, this would still bite. The impact on Solaris is much greater, as the default list includes many more shells, and Solaris doesn't ship with /etc/shells by default.
>How-To-Repeat:
Install a shell from pkgsrc on a system without /etc/shells. Observe being able to log in beforehand, but not afterwards. Observe /etc/shells file containing only one entry.

>Fix:
An ideal fix would be to read the shell list from somewhere and create an /etc/shells file that matches the default.


>Release-Note:
>Audit-Trail:
>Unformatted: