su -
用户”登录,但阻止用户使用SSH登录?我试图将外壳设置为
/bin/false
,但是当我尝试使用su
时却没有? 是否有几种方法仅允许通过
su
登录? (如果可以的话,我该怎么办)#1 楼
如果只有几个允许通过ssh登录的用户/组,则可以使用AllowUsers / AllowGroups;如果只有几个不允许登录的用户/组,则可以使用DenyUsers / DenyGroups。请注意,这仅限制通过ssh登录,其他登录方式(控制台,ftp,...)仍然可行。对于大多数ssh安装,您需要将这些选项添加到/ etc / ssh / sshd_config文件中。如果将登录shell设置为/ bin / false,则可以使用
su -s /bin/bash user
(替换/ bin / bash随您选择的外壳)#2 楼
如果仍然要让su工作,则可以使用sudo -u [username]
或将-s /bin/bash
传递给su作为临时外壳。它们在/etc/passwd
中没有外壳的情况下都相同。#3 楼
如果帐户没有密码(passwd -d用户名),则它们将无法交互登录(控制台,SSH等)。如果它们具有有效的外壳,su仍然可以工作。但是请注意“交互式”;如果有人决定为该帐户设置SSH密钥对,那么它将起作用!评论
用户需要具有有效的外壳程序才能运行吗?我敢肯定,在您su到另一个用户之后,您仍然在同一原始shell中……您实际上并没有以其他用户身份登录……所以,仅将shell设置为/ dev / null可能有效还有。
–布莱恩·波斯托(Brian Postow)
2010年6月9日在16:24
是的,它仍然需要有效的外壳程序:[root @ localhost〜]#su daemon该帐户当前不可用。 [root @ localhost〜]#su-守护程序该帐户当前不可用。 (RHEL系统,守护程序的shell是/ sbin / nologin)
–astrostl
2010年6月9日在16:41
#4 楼
在sshd_config中添加一行DenyUser [username]
注意,这不会阻止该用户通过控制台登录。
评论
应该是DenyUsers,并带有“ s”。
– David G
16-3-21在18:39
#5 楼
除了上面提到的内容(禁用和/或未设置用户密码)之外,pam_access模块(在pam_access和access.conf上查找手册页)还可用于控制登录访问。#6 楼
就像其他人所说的那样:DenyUser username
中的DenyGroup groupname
或sshd_config
会阻止通过ssh登录密钥对/密码。尽管我通常会做类似AllowGroup ssh
之类的事情,或者明确地将需要ssh访问权限的人添加到该组中。然后,您可以按照他人的说法进行操作:
passwd -d username
可以清空用户密码,以便他们无法在控制台上登录或以其他方式登录。或者更好的选择“锁定”帐户。 ssh可能即使使用密钥也会拒绝访问锁定的帐户,但我并不肯定。评论
实际上,即使帐户密码已锁定,ssh仍允许您使用密钥身份验证登录。
–理查德·霍洛威(Richard Holloway)
2010年6月9日22:34
#7 楼
正如我在评论中提到的那样,我认为您仍然可以使用无效的shell进入帐户。因此,如果将用户的外壳程序设置为/ dev / null或bin的外壳程序,则您仍应该能够su到该用户...但是任何以任何方式登录的尝试都会使您退出...#8 楼
通过添加来编辑/ etc / shadow!到密码哈希的开头。username:!<hash>:#####:#:#####:#:::
当确保新安装的安全时,这是我在安装sudo之后要做的第一件事,因此没有人能够使用root用户登录或ssh进入系统, sudo用户仍可以以root用户身份执行。
#9 楼
知道哪种机制最好取决于需求。如果知道要求,则可以选择适当的机制。以上所有答案对于某些要求均有效。您是否只想限制SSH访问?您需要访问邮件或ssh方法吗?只能从根访问吗?
如果以root以外的用户身份运行,则
su - user
将要求该用户提供密码。但是,sudo -u user -i
不需要用户密码。#10 楼
不要为不允许登录或删除的用户指定密码。# passwd -d myuser
#11 楼
假设您只想从root用户的帐户中获取用户,并禁用所有其他访问权限:使用此命令(以root用户身份运行):
usermod -e 1 -L user
这会禁用密码登录(如建议其他答案一样),但也会使该帐户过期。您无法登录过期的帐户,例如使用SSH密钥。您仍然可以
su user
,尽管它会显示该帐户已过期的通知。
评论
非常感谢大家。我没想到我的问题会受到2+的反对:)我非常喜欢“ su -s ...”结构,而console / ftp是一个不错的选择。我真的很喜欢“ su -s”之类的东西。
– NoozNooz42
2010年6月9日在16:27
su -s的把戏是金。我一直在为需要测试权限(例如apache,nobody等)的系统帐户使用它。我通常会执行su-user -s / bin / bash。可选参数-可用于提供类似于用户直接登录后所期望的环境。
– dmourati
2013年12月31日下午2:22
如果您需要加载环境变量(例如来自/ etc / profile的变量),则传递额外的破折号即可:su--s / bin / bash用户
–狮子座
2014年1月29日在18:34