帮助中心

产品使用与售后服务帮助

当前位置:首页 > 帮助中心> 如何在Linux服务器中禁止Shell访问用户账户?

如何在Linux服务器中禁止Shell访问用户账户?

发布时间:2021-03-22 09:13 来源:A5数据

在Linux服务器中创建用户账户时,默认情况下,用户将明确拥有SSH访问权限。在某些情况下,用户账户不需要shell访问FTP、邮件或ssh。

在本教程中,让我们学习如何为现有的Linux用户禁用shell访问权限或创建一个没有shell访问权限的新用户。

创建一个没有shell访问权限的新用户

默认情况下,当创建用户账户时,会按照/etc/default/useradd文件中的定义给用户分配一个shell。

在创建用户账户时,你可以明确指定用户应该登录的shell。

Linux自带的/sbin/nologin shell会在用户试图连接时显示 "This account is currently not available "的信息。这是一种禁止用户访问登录shell的方法。

让我们检查两个命令来创建一个禁用shell的用户。

使用 useradd。

语法:

chsh -s /sbin/nologin {username}

使用adduser。

语法:

adduser --shell /sbin/nologin {username}

禁用现有用户的Shell

使用chsh或usermod命令改变现有用户的shell。

语法:

chsh -s /sbin/nologin {username}。

要将名为bob的用户的shell改为nologin,键入:$ sudo chsh -s /sbin/nologin bob。

$ sudo chsh -s /sbin/nologin bob

使用usermod。

语法。

usermod {username} -s {shell path}

要将名为bob的用户的shell改为/sbin/ftpnologin,键入。

$ sudo usermod bob -s /sbin/ftpnologin

你可以自定义shell在用户通过ftp登录时显示信息。

cat /sbin/ftpnologin

!/bin/sh

No shell access. Only FTP access allowed.

要给予可执行的权限,键入

$ sudo chmod a+x /sbin/ftpnologin

所有的shell都在/etc/shell中,将新的shell追加到这个列表中。

$ echo "/sbin/ftpnologin" | sudo tee -a /etc/shells

不做上面的方法,你可以通过编辑/etc/password文件来手动更改shell,这样也可以。

结束语

在本教程中,我们学习了如何禁用用户账户访问默认shell。