/etc/shells micropolicy The expected audience of this is debian developers packaging programs meant to be used as login shells. /etc/shells is no longer a config file, but is maintained by the add-shell, remove-shell and update-shells programs. So, if a package contains something that the maintainer thinks ought to be a valid login shell, it can have its shell included in two different way. By placing a fragment in /usr/share/debianutils/shells.d/, it will invoke a file trigger on debian-utils and invoke update-shells, which will add and remove the contained shells from /etc/shells as needed. Alternatively, it's postinst should, (on initial install only, to allow a sysadmin to take it out again), run: /usr/sbin/add-shell /path/to/shell In the postrm, probably on remove, the package should call /usr/sbin/remove-shell /path/to/shell The latter method has the disadvantage of shells disappearing from /etc/shells when the relevant package is removed but not purged and then reinstalled. The fragment method does not suffer from this limitation.