首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux增加用户无法登陆

在Linux系统中,增加用户后无法登录可能由多种原因造成。以下是一些基础概念、可能的原因、解决方案以及相关的应用场景和优势。

基础概念

  • 用户账户:Linux系统中的用户账户用于标识和验证用户身份。
  • 用户组:用户可以被分配到一个或多个用户组,以便进行权限管理。
  • 主目录:每个用户都有一个主目录,用于存放用户的个人文件。
  • Shell:用户登录后使用的命令解释器,如bash、sh等。

可能的原因

  1. 密码未设置或错误:新创建的用户没有设置密码,或者设置的密码不正确。
  2. Shell配置错误:用户的默认Shell配置不正确,导致无法启动登录Shell。
  3. 主目录不存在或权限问题:用户的主目录不存在,或者用户对该目录没有读取和执行权限。
  4. 用户被禁用:用户账户被禁用,无法登录。
  5. PAM(Pluggable Authentication Modules)配置问题:PAM配置文件中的设置可能导致认证失败。

解决方案

1. 检查并设置密码

代码语言:txt
复制
sudo passwd username

输入两次新密码以设置成功。

2. 确认Shell配置

编辑 /etc/passwd 文件,确保用户的Shell路径正确。例如:

代码语言:txt
复制
username:x:1000:1000:User Name:/home/username:/bin/bash

3. 创建并设置主目录权限

代码语言:txt
复制
sudo mkdir /home/username
sudo chown username:username /home/username
sudo chmod 755 /home/username

4. 启用用户账户

检查 /etc/shadow 文件,确保用户没有被禁用(即第二个字段不是 !!*)。

5. 检查PAM配置

查看 /etc/pam.d/common-password/etc/pam.d/common-auth 等文件,确保认证模块配置正确。

应用场景与优势

  • 多用户环境:在企业或团队环境中,通过创建多个用户账户可以实现权限隔离和责任明确。
  • 安全性:每个用户拥有独立的账户和权限,有助于防止未经授权的访问和数据泄露。
  • 灵活性:可以根据不同用户的需求配置不同的Shell环境和资源访问权限。

示例代码

假设我们要创建一个名为 newuser 的新用户,并设置其主目录和Shell:

代码语言:txt
复制
sudo useradd -m newuser -s /bin/bash
sudo passwd newuser

然后按照上述步骤检查和修正可能的问题。

通过这些步骤,通常可以解决Linux系统中新增用户无法登录的问题。如果问题依然存在,建议进一步检查系统日志(如 /var/log/auth.log)以获取更多详细信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux 踢出其他正在 SSH 登陆用户

在一些生产平台或者做安全审计的时候往往看到一大堆的用户 SSH 连接到同一台服务器,或者连接后没有正常关闭进程还驻留在系统内。...限制 SSH 连接数与手动断开空闲连接也有必要之举,这里写出手动剔出其他用户的过程。...查看   查看系统当前所有在线用户 [root@apache ~]# w 14:15:41 up 42 days, 56 min, 2 users, load average: 0.07, 0.02...[root@apache ~]# pkill -9 -t pts/1 转载声明   原文转自 《Linux 踢出其他正在 SSH 登陆用户》(作者未知) 版权声明:如无特别声明,本文版权归 仲儿的自留地...(采用 CC BY-NC-SA 4.0 许可协议进行授权) 本文标题:《 Linux 踢出其他正在 SSH 登陆用户 》 本文链接:https://lisz.me/tech/linux/kill-other-sshuser.html

3.7K20
  • 第 53 期:MySQL 创建了用户却无法登陆

    问题 MySQL 创建了用户却无法登陆 用户反馈前期进行了一个升级操作:从 MySQL 5.6 升级到 5.7 后,新建了一个 sky1@% 的用户,但是通过 socket 登录报错 Access denied...ChatDBA 给出解决方案 经过检查发现用户的权限等都不存在问题,但是输入用户信息表时,ChatDBA 发现确实存在匿名用户,那么他提示直接删除用户即可解决该问题。 4....后续经过检查我们发现,当用户不输入密码的时候是可以登陆的,而且登录的用户信息如下: mysql> select current_user(); +------------------+ |current...根据 MySQL 5.6 的匹配规则,虽然有一个 sky1@% 的用户存在,但由于存在一个 ''@localhost 的匿名用户,MySQL 优先匹配这个匿名用户。...由于匿名用户没有密码,当你输入 sky1@% 用户的密码时,MySQL 会因为匿名用户没有密码而拒绝访问,报错 Access denied。 但是其实在 MySQL 5.7 中优化了用户匹配规则。

    12610

    【Linux系列】无法创建用户useradd:无法打开 etcpasswd

    背景 事情起因源自阿里云服务上安装ES(elasticsearch),学习ES的路上可能都会遇到的一个问题,就是无法在root账户下启动ES服务,具体报错信息如下: uncaught exception...org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root 解决方案:创建一个新的用户.../etc/shadow ## 很明显/etc/shadow也无法打开 [root@izbp1hcw0fjg64l58525bqz etc]# lsattr /etc/shadow -----a---...shadow [root@izbp1hcw0fjg64l58525bqz etc]# adduser elk [root@izbp1hcw0fjg64l58525bqz etc]# passwd elk 更改用户...,同样成功,最后成功创建ELK用户; 扩展 对于Linux文件权限a和i进行简单的复习: i:不可修改权限 例:chattr u+i filename 则filename文件就不可修改,无论任何人,如果需要修改需要先删除

    7.3K10

    Linux配置SSH免用户免密码登陆

    目的 简化SSH登陆过程, 实现从机器A登陆机器B只需要运行ssh hostname即可, 即不需要输入用户名和密码。 2....配置host 配置host的作用是ssh登陆机器时用hostname代替IP, 在机器很多的集群环境中hostname比IP容易记的多, 编辑 /etc/hosts文件, 配置需要登陆的机器IP和hostname...2.配置免密 使用ssh-keygen生成密钥,将公钥文件上传至目标机器即可实现免密登陆,使用命令生成密钥: ssh-keygen -t rsa -C 'comment' -t rsa: 指定使用 rsa...运行成功后即可使用ssh user_name@hostname 免密码登陆。...3.配置免用户 编辑.ssh/目录下config 文件, 没有则新建一个, vim ~/.ssh/config 添加目标机器配置: ? 添加成功后,即可使用ssh hostname直接登陆。

    6.4K20

    Linux下mongodb用户管理和设置远程登陆

    折腾了下linux服务器上的mongodb的远程登陆,遇到了点问题,在这里记录下来。以备以后查询。 前提:已经在linux上安装好了mongodb。安装方法这里不说了,网上各种有。...将 auth=true //把#注释去掉,安全起见,远程登陆需要用户验证 #bind_ip 127.0.0.1 //注释掉这句,表明允许远程连接,或者指点允许远程登陆的ip 重启数据库 /etc/...init.d/mongodb restart 然后连接到数据库 use admin //创建root用户,root用户既可以创建用户,也可以对任何数据库操作,权限最高的 db.createUser(...root用户,而是创建一个管理用户权限的用户,注意这个用户只有管理用户权限的权力,而没有对其他数据库操作的权利 db.createUser(...内部角色:__system - 相应的功能 - Read:允许用户读取指定数据库 - readWrite:允许用户读写指定数据库 - dbAdmin:允许用户在指定数据库中执行管理函数

    3.4K40

    故障分析 | MySQL 中新建用户无法登陆的一种特殊场景

    同事提了个问题,某套5.7的MySQL,新建一个只读的用户,执行如下操作, create user 'readuser'@'%' IDENTIFIED BY 'readuser'; GRANT SELECT...ON *.* TO 'readuser'@'%' IDENTIFIED BY "readuser"; 但是当使用该用户登录的时候, mysql -ureaduser -preader 提示"MySQL...查了一些资料,说是给新增用户一个super权限,尝试了下,确实能解决,但这相当于给用户一个超级权限,不符合只读账号的需求, grant super on *.* TO 'readuser'@'%'; 这是因为什么...但是对具有SUPER权限用户,会忽略这个init_connect,不会执行其中的指令。 如果init_connect中包含的语句存在语法错误,则会导致客户端连接失败。...只能通过具有SUPER权限用户来修改init_connect的值。

    1.6K40

    linux tracepoint增加

    的方式打印信息: void trace_func() { //…… printk("输出信息"); //…… } 缺点: 内核中printk是统一控制的,各个模块的printk都会被打印,无法只打印需要关注的模块...这些printk分散在代码多处,每个地方都需要修改 嵌入式系统中,如果printk信息量大,console(如果有)有大量的打印输出,用户无法在console输入命令,影响人机交互 内核解决方案 内核采用...tracepoint关闭时对kernel产生的影响很小,只是增加了极少的时间开销(一个分支条件判断),极小的空间开销(一条函数调用语句和几个数据结构)。只有挂载了钩子函数才会真正启用trace功能。...如果用户准备为kernel加入新的tracepoint,每个tracepoint则以下列格式声明: #include linux/tracepoint.h> DECLARE_TRACE(tracepoint_name...此分组对Ftrace很重要,因为它允许用户按组启用或禁用事件 然后,该文件包含TRACE_EVENT()宏内容所需的任何头。(例如,includelinux/sched.h>)。

    26310

    zblogphp判断用户是否登陆

    搭建网站模板的时候,有时需要判断用户是否登陆或者判断是否是管理员登陆,这个不属于什么教程,只是偶尔用到了,百度之后看见天兴和烽烟博客有这个教程,把他们来的综合起来做个记录,以备不时之需。 ?...判断用户是否登陆 {if $user.ID>0}                            用户ID是否大于0(注册用户的id都会大于0...-->     欢迎你:{$zbp->user->StaticName}    用户没有登录显示的内容--> {/if} 示例: {if $user.ID>0}已经登陆用户可以看见我哦!{else}看见我说明你还未登陆哦!...{/if} 判断用户级别 根据不同的用户级别查看不同的内容: zblog用户级别划分: 1->管理员 2->网站编辑 3->作者 4->协作者 5->评论者 6->游客 示例一: {if $user.Level

    95130
    领券