Re: /sbin/nologin in /etc/shells

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>My objection here is roughly the same. /sbin/nologin does not mean 
>"locked out", it's a non-shell that can serve as a shell. While there 
>may be some value in chsh disallowing a change *from* /sbin/nologin to 
>something else by the own user, it's not intended to block any access at 
>all by a user -- it's canonical purpose allowed FTP logins successfully, 
>for example.

OK. I understand what you're saying. I suppose this boils down to what
"nologin" is supposed to mean.

1. On the one hand, we have the behaviour of Fedora (and RHEL and
CentOS) since 2002, with nologin in /etc/shells, which is as you
describe.

2. On the other hand, we have nologin as introduced by 4.4BSD and copied
by Linux, including the original RedHat distro itself before Fedora
days: nologin is absent from /etc/shells, and setting it does disable
all access.

I am sure that disallowing logins while still allowing FTP was *not* the
original canonical purpose of nologin in 4.4BSD. Indeed, there is a
currently open ticket [1] to remove this text from the shells(5) man
page:

       Be aware that there are programs which consult this file to
       find out if a user is a normal user; for example, FTP daemons
       traditionally disallow access to users with shells not included
       in this file.

This text, of course, also appears in all those other Linux distros
where nologin is not in /etc/shells. 

>To prevent an 'su' specification of shell and to prevent any login, one 
>can use /bin/false easily enough (which, again, was historical practice 
>AFAIK). To prevent login via password (or an 'su' from one local user to 
>another), usermod -L would seem to be more correct.

It's true that we used to use /bin/false to disable shell access. I
wasn't there at the time, but I imagine the reason nologin was invented
was to make it clear to a user that their account has been disabled by
printing a message, rather than just mysteriously kicking them out.

It's also true that locking the password is a good idea if you want to
definitively disable an account. However, on all other systems except
Fedora and friends, nologin alone does seem to be sufficient.

(Of course, ssh with key-based access does not respect locked passwords,
although I've just discovered it does respect expired accounts. It would
seem that "usermod -e 1 -s /sbin/nologin -L user" is the belt and braces
approach to disabling an account!)

>My concern here is that we're losing a useful tool: a built-in 
>"non-shell" shell, functioning as a middle-ground between an invalid 
>shell and an account lockout.

Well, you do of course have the option of adding nologin back into
/etc/shells, or supplying your own program to do the job and listing
*that* in shells. You could even try to get such a thing into the core
distribution, but please don't call "nologin", as that is confusing to
anyone that's used to *BSD, Debian, etc.

I contend that we have this middle ground by historical accident, not by
design. If it were by design, surely all those system accounts (bin,
daemon, adm, etc) would have the "definitely no access" shell,
/bin/false or whatever, and not the "middle ground" shell of nologin?

[1] https://bugzilla.redhat.com/show_bug.cgi?id=1218302

Toby
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux