我们都知道在Linux下Root用户的权限是最大的,所以一般不建议使用Root用户直接操作。平时使用普通用户,必要时使用sudo命令提权。在Ubuntu中,直接禁用Root用户。那么如何在Linux中禁止Root登录呢?今天,我们将介绍几种常用的方法。1.修改root用户的登录shell我们可以通过编辑/etc/passwd文件,将root用户的登录shell改为/sbin/nologin。$sudovim/etc/passwdroot:x:0:0:root:/root:/bin/bashtoroot:x:0:0:root:/root:/sbin/nologin之后用root用户登录只会显示消息“此帐户当前不可用”。当然你也可以通过修改/etc/nologin.txt来自定义错误信息。这种方式只能禁止那些需要Shell用户登录的场景,但是像Sudo、FTP之类的操作还是可以使用Root账号的。2、禁止root用户在任何终端设备上登录。Linux下的PAM模块中有一个叫做pam_securetty的模块,可以限制root用户只能在安全终端上登录。所谓secureterminal是由/etc/securetty决定的,里面有几行tty设备名(每行一个设备名,前面不带/dev/),只有这些设备名才能让root用户登录。因此,我们可以通过清除安全终端列表来禁止root用户登录。$sudomv/etc/securetty/etc/securetty.orig$sudotouch/etc/securetty$sudochmod600/etc/securetty这个方法只会影响需要分配终端的程序,比如登录,显示管理器比如gdm/kdm/xdm等.,Su、Sudo、SCP、SFTP、SSH等操作不起作用。3、禁止Root用户通过SSH登录修改SSH配置文件/etc/ssh/sshd_config,在其中添加PermitRootLoginno配置项。然后重启SSHD服务使配置生效。$sudosystemctlrestartsshdOR$sudoservicesshdrestart显然,此方法仅影响SSH、SCP、SFTP等SSH系列工具。4、禁止root用户通过PAM模块访问Login和SSHD服务。我们可以通过/lib/security/pam_listfile.so模块来限制指定用户访问某些服务。步骤如下:创建一个需要拒绝用户访问的文件,如:/etc/deniedusers。添加Root或您不希望它访问该服务的任何用户名。$sudoechoroot|tee-a/etc/deniedusers设置这个文件的权限。$sudochmod600/etc/ssh/deniedusers将以下配置添加到/etc/pam.d/login或/etc/pam.d/sshd文件中。authrequiredpam_listfile.so\onerr=succeeditem=usersense=denyfile=/etc/ssh/deniedusers