你如何让用户使用“ su -
user ”login,但阻止用户使用SSHlogin?
我试图将shell设置为/bin/false
但是当我尝试su
它不起作用。
有几种方法只允许su
login?
SSH的AllowUser
的路要走吗? (如果要走的话,我将如何做到这一点)
如果只有几个允许通过ssh或DenyUsers / DenyGroupslogin的用户/组(如果只有一些不允许login的用户/组),则可以使用AllowUsers / AllowGroups 。 请注意,这只能通过ssh限制login,其他login方式(console,ftp,…)仍然是可能的。 您需要将这些选项添加到大多数ssh安装的/ etc / ssh / sshd_config文件中。
如果你已经把loginshell设置为/ bin / false,你可以使用su -s /bin/bash user
(用你select的shellreplace/ bin / bash )
如果你仍然想要工作,你可以使用sudo -u [username]
或传递-s /bin/bash
作为临时shell。 它们在/etc/passwd
中没有shell的情况下也是这样做的。
如果一个帐户没有密码( passwd -d用户名 ),他们不能以交互方式login(控制台,SSH等)。 如果他们有一个有效的shell, 苏仍然会工作。 注意“交互式”,虽然; 如果有人决定为该帐户设置一个SSH密钥对,它将起作用!
在sshd_config中添加一行DenyUser [username]
请注意,这不会阻止该用户通过控制台login。
除了上面提到的(禁用和/或不设置用户密码)之外,还可以使用pam_access模块(在pam_access和access.conf中查找手册页)来控制login访问。
正如别人所说;
sshd_config
DenyUser username
或DenyGroup groupname
会阻止通过sshlogin密钥对/密码。
虽然我通常做类似于AllowGroup ssh
东西,但是要明确地添加需要ssh访问权限的用户。
那么你可以像其他人那样说: passwd -d username
来清空用户的密码,这样他们就不能在控制台login或者其他的方式。 或更好的passwd -l username
来“locking”帐户。 有可能ssh会拒绝访问一个locking的帐户,即使有密钥,但我不积极。
正如我在评论中提到的那样,我认为你仍然可以用一个无效的shell进入账户。 所以,如果你把用户的shell设置为/ dev / null或者bin的shell,你应该仍然能够访问这个用户…但是任何以任何方式login的尝试都会退出你。
编辑/ etc / shadowjoin! 到密码哈希的开头。
username:!<hash>:#####:#:#####:#:::
在安装新安装时,这是我安装sudo后首先要做的事情,所以没有人能够使用root用户login或ssh进入系统,sudo用户仍然可以以root用户身份执行。
不要为不允许login或删除的用户指定密码。
# passwd -d myuser
假设您只想从root帐户中取得用户,并禁用所有其他访问:
使用这个(以root身份运行):
usermod -e 1 -L user
这将禁用密码login(许多其他答案已build议), 但它也过期的帐户 。 您无法login到过期帐户,例如使用SSH密钥。 您仍然可以su user
,但会显示该帐户已过期的通知。
知道哪个机制最好取决于要求。 如果你知道要求,你可以select适当的机制。 以上所有答案都适用于一些要求。
你只想限制SSH访问? 你需要访问邮件或SSH方法? 只能从根访问吗?
如果用户运行的是非root用户, su - user
将需要su - user
的密码。 但是, sudo -u user -i
不需要sudo -u user -i
的密码。