linux bin login,linux – / sbin / nologin和/ bin / false有什么区别?

/ bin / false是一个实用程序,是/ bin / true的伴侣,它在一些抽象意义上很有用,可以确保unix是功能完整的.但是,已经找到了这些计划的紧急目的;考虑BASH语句/ some / program || / bin / true,无论/ some / program返回,它总是boolean-evaluate为true($?= 0).

正如您所识别的那样,紧急使用/ bin / false对于不允许登录的用户来说是一个空shell.在这种情况下,系统的行为就像shell无法运行一样.

POSIX(虽然我可能错了,它可能是SUS)约束这两个命令除了返回适当的布尔值之外什么也不做.

/ sbin / nologin是一个BSD实用程序,它具有与/ bin / false类似的行为(返回布尔值false),但也打印输出,因为/ bin / false被禁止执行.这应该有助于用户理解发生了什么,但实际上许多终端模拟器只是在shell终止时关闭,在某些情况下使消息无论如何都是不可读的.

在/ etc / shells中列出/ sbin / nologin的目的不大. / etc / shells的标准效果是列出当用户更改自己的shell时允许与chsh一起使用的程序(并且没有可靠的理由将自己的shell更改为/ sbin / nologin).超级用户可以将任何人的shell改为任何东西.但是,您可能希望在/ etc / rsh中列出/ sbin / nologin和/ bin / false,这将禁止具有这些shell的用户在他们获得shell的不幸事件中使用chsh更改其shell.

FTP守护程序可能禁止访问不在/ etc / shells中的shell的用户,或者他们可能使用他们希望的任何其他逻辑.在任何情况下都应避免运行FTP,因为sftp(提供类似功能)类似但安全.有些站点使用/ sbin / nologin来禁用shell访问,同时允许sftp访问,方法是将它放在/ etc / shells中.如果允许用户创建cronjobs,这可能会打开后门.

在任何一种情况下,scp都不会与无效的shell一起运行.在这种情况下,scponly可以用作shell.

另外,shell的选择会影响su – (AKA su -l)的运行.特别是,如果它是shell,/ sbin / nologin的输出将打印到stdout;这不是/ bin / false的情况.无论哪种情况,使用su -cl运行的命令都将失败.

最后,答案是:

要禁用某个帐户,请同时依赖它们,但将shell设置为/ sbin / nologin是为了提供信息(除非/ sbin / nologin在/ etc / shells中,此时你应该使用/ bin / false,这应该是’是).相反,将/ etc / passwd中的密码字段设置为!,crypt保证对无密码有效.考虑以相同的方式在/ etc / shadow中设置哈希以避免错误. passwd -l会为你做这个.

禁用帐户的第三种方法是将帐户到期日期字段设置为古老的日期(例如,usermod –expiredate 1).这将阻止登录,以防您的设置允许用户在没有密码的情况下对其unix帐户进行身份验证,并且他们使用的服务不需要shell.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值