xfce4 普通用户登陆不了 -- 解决

本文记录了一个关于 Ubuntu 系统下 XFCE4 桌面环境中普通用户无法登录的问题及其解决过程。通过分析错误日志,发现权限设置不当导致了登录失败。最终通过调整文件权限解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


现象:

突然发现新装的ubuntu的xfce4 普通用户登陆不了,而root管理员却能登陆。


分析 log:

root@bmc:/home/fred# cat .xsession-errors 
Xsession: X session started for  at Sun May 21 22:03:26 CST 2017
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  109 (X_ChangeHosts)
  Value in failed request:  0x5
  Serial number of failed request:  6
  Current serial number in output stream:  8
localuser:fred being added to access control list
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  109 (X_ChangeHosts)
  Value in failed request:  0x5
  Serial number of failed request:  6
  Current serial number in output stream:  8
openConnection: connect: No such file or directory
cannot connect to brltty at :0


(xfce4-session:41354): dconf-CRITICAL **: unable to create file '/run/user/1000/dconf/user': Permission denied.  dconf will not work properly.


(xfce4-session:41354): dconf-CRITICAL **: unable to create file '/run/user/1000/dconf/user': Permission denied.  dconf will not work properly.


(xfce4-session:41354): dconf-CRITICAL **: unable to create file '/run/user/1000/dconf/user': Permission denied.  dconf will not work properly.
xfce4-session: Unable to access file /home/fred/.ICEauthority: Permission denied
root@bmc:/home/fred# chmod fred:fred -R /run/user/1000/dconf/user 
chmod: invalid mode: ‘fred:fred’
Try 'chmod --help' for more information.

root@bmc:/home/fred# ll
total 128
drwxr-xr-x 19 fred fred 4096 5月  21 22:04 ./
drwxr-xr-x  4 root root 4096 5月  20 23:28 ../
-rw-------  1 fred fred  325 5月  21 20:56 .bash_history
-rw-r--r--  1 fred fred  220 5月  19 07:24 .bash_logout
-rw-r--r--  1 fred fred 3771 5月  19 07:24 .bashrc
drwx------ 14 fred fred 4096 5月  19 10:45 .cache/
drwx------ 17 fred fred 4096 5月  19 10:46 .config/
drwx------  3 fred fred 4096 5月  19 07:59 .dbus/
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Desktop/
-rw-r--r--  1 root root   40 5月  19 10:45 .dmrc
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Documents/
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Downloads/
-rw-r--r--  1 fred fred 8980 5月  19 07:24 examples.desktop
drwx------  2 fred fred 4096 5月  19 07:57 .gconf/
drwx------  3 fred fred 4096 5月  20 23:26 .gnupg/
-rw-------  1 root root 1534 5月  19 10:45 .ICEauthority
drwx------  3 fred fred 4096 5月  19 07:41 .local/
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Music/
drwxr-xr-x  6 root root 4096 5月  19 09:50 node_modules/
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Pictures/
-rw-r--r--  1 fred fred  655 5月  19 07:24 .profile
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Public/
drwxr-xr-x  3 root root 4096 5月  19 11:22 .subversion/
-rw-r--r--  1 fred fred    0 5月  19 07:40 .sudo_as_admin_successful
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Templates/
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Videos/
-rw-------  1 root root  633 5月  19 12:38 .viminfo
drwx------  2 fred fred 4096 5月  19 07:59 .vnc/
-rw-------  1 fred fred   48 5月  20 23:26 .Xauthority
-rw-r--r--  1 root root   14 5月  19 07:58 .xsession
-rw-------  1 fred fred 1218 5月  21 22:03 .xsession-errors


原来是权限不对。记得之前为了省事,直接将 fred 升级到 root 组去了,后来又降了回来。


修改:

root@bmc:/home/fred# chown -R fred:fred *.*
root@bmc:/home/fred# ll
total 128
drwxr-xr-x 19 fred fred 4096 5月  21 22:04 ./
drwxr-xr-x  4 fred fred 4096 5月  20 23:28 ../
-rw-------  1 fred fred  325 5月  21 20:56 .bash_history
-rw-r--r--  1 fred fred  220 5月  19 07:24 .bash_logout
-rw-r--r--  1 fred fred 3771 5月  19 07:24 .bashrc
drwx------ 14 fred fred 4096 5月  19 10:45 .cache/
drwx------ 17 fred fred 4096 5月  19 10:46 .config/
drwx------  3 fred fred 4096 5月  19 07:59 .dbus/
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Desktop/
-rw-r--r--  1 fred fred   40 5月  19 10:45 .dmrc
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Documents/
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Downloads/
-rw-r--r--  1 fred fred 8980 5月  19 07:24 examples.desktop
drwx------  2 fred fred 4096 5月  19 07:57 .gconf/
drwx------  3 fred fred 4096 5月  20 23:26 .gnupg/
-rw-------  1 fred fred 1534 5月  19 10:45 .ICEauthority
drwx------  3 fred fred 4096 5月  19 07:41 .local/
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Music/
drwxr-xr-x  6 fred fred 4096 5月  19 09:50 node_modules/
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Pictures/
-rw-r--r--  1 fred fred  655 5月  19 07:24 .profile
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Public/
drwxr-xr-x  3 fred fred 4096 5月  19 11:22 .subversion/
-rw-r--r--  1 fred fred    0 5月  19 07:40 .sudo_as_admin_successful
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Templates/
drwxr-xr-x  2 fred fred 4096 5月  19 07:41 Videos/
-rw-------  1 fred fred  633 5月  19 12:38 .viminfo
drwx------  2 fred fred 4096 5月  19 07:59 .vnc/
-rw-------  1 fred fred   48 5月  20 23:26 .Xauthority
-rw-r--r--  1 fred fred   14 5月  19 07:58 .xsession
-rw-------  1 fred fred 1218 5月  21 22:03 .xsession-errors


验证:




<think>好的,我需要分析用户提供的终端输出,并给出清晰的解释和解决方案。首先,用户运行了`./start.sh`脚本,出现了多个警告和错误信息。我需要逐一解析这些信息,找出根本原因,并提供可行的解决步骤。 首先看第一部分的XKB警告: ``` "The XKEYBOARD keymap compiler (xkbcomp) reports:" "> "Warning: Could not resolve keysym XF86RefreshRateToggle "> "Warning: Could not resolve keysym XF86Accessibility "> "Warning: Could not resolve keysym XF86DoNotDisturb ``` 这些警告表明xkbcomp在编译键盘映射时无法识别特定的键符(keysym)。这三个XF86开头的键符通常与多媒体或特殊功能键相关。可能的原因是当前使用的XKB配置文件中缺少对这些键符的定义,或者X服务器版本过旧不支持这些新键符。不过,这些警告不会导致X服务器崩溃,属于非致命错误,可能只是某些特殊功能键无法使用,但普通键盘操作应该正常。 接下来是: ``` /root/.bashrc: line 19: ssh-agent: command not found ``` 这里提示在root用户的.bashrc文件的第19行尝试运行ssh-agent,但系统找不到该命令。ssh-agent是OpenSSH的一部分,用于管理SSH密钥。出现这个错误可能是因为OpenSSH客户端未安装,或者安装路径不在root的环境变量中。需要检查是否安装了openssh-client包,并确保其路径正确。 然后是: ``` /usr/bin/startxfce4: X server already running on display :0 ``` 这表明尝试启动XFCE4桌面环境时,检测到显示:0上已经有一个X服务器在运行。可能是因为之前的会话没有正确退出,或者脚本被重复执行。需要确认是否有现有的X会话,并适当终止或重新使用。 再次出现的XKB警告与之前相同,重复出现可能是因为启动脚本多次调用相关配置,或者X会话初始化过程中重复加载键盘配置。 接下来的错误: ``` _IceTransmkdir: ERROR: euid != 0,directory /tmp/.ICE-unix will not be created. ``` ICE(Inter-Client Exchange)协议相关的错误,提示无法创建/tmp/.ICE-unix目录,因为执行用户的euid(有效用户ID)不是0(即非root用户)。这个目录通常用于X11的进程间通信。当普通用户尝试创建该目录时,由于权限不足会失败,但大多数情况下这不会影响正常使用,只是某些程序可能会有警告。 最后: ``` xfce4-session: No SSH authentication agent found ``` 这表明XFCE4会话没有找到SSH认证代理。通常,ssh-agent用于管理SSH密钥,如果在启动时没有正确启动ssh-agent,会导致此问题。可能与之前提到的ssh-agent命令未找到有关,或者启动脚本中没有正确初始化ssh-agent。 综合以上信息,需要解决的主要问题包括: 1. 缺失的XF86键符定义导致的XKB警告。 2. ssh-agent未安装或路径问题。 3. 重复启动X服务器的问题。 4. ICE目录创建权限问题。 5. SSH认证代理未启动。 接下来,我需要针对每个问题提供解决方案,并建议用户按照步骤排查和修复。需要确保解决方案清晰,步骤可行,并考虑到用户可能的系统环境(如是否以root用户运行,是否缺少必要软件包等)。</think>### **关键问题分析与解决方案** 你遇到的错误涉及 **X Window 键盘配置、SSH 代理管理、X 服务进程冲突**等多个方面。以下是分步排查与修复指南: --- ### **1. XKB 键符警告分析** ```log "Could not resolve keysym XF86RefreshRateToggle" 等警告 ``` - **根本原因**: XKB 键盘布局定义中缺少对 **多媒体功能键**(如刷新率切换、勿扰模式)的支持符号。 - **影响**: 仅影响特殊功能键(普通打字无碍),属于非致命警告,可选择性修复。 - **解决方案**: ```bash # 更新 XKB 键符数据库(需 root 权限) apt install xkb-data -y # 重启 X 服务或系统后验证 ``` 若问题持续,可手动编辑 `/usr/share/X11/xkb/keycodes/evdev`,添加缺失键符定义(需技术背景)。 --- ### **2. `ssh-agent: command not found` 错误** ```log /root/.bashrc: line 19: ssh-agent: command not found ``` - **原因**: *root* 用户环境缺少 OpenSSH 客户端组件,或 `ssh-agent` 路径未加入 `$PATH`。 - **修复步骤**: ```bash # 安装 OpenSSH 客户端 apt install openssh-client -y # 检查命令路径 which ssh-agent # 正常应输出 /usr/bin/ssh-agent # 编辑 /root/.bashrc,注释或修复第 19 行的错误调用 nano /root/.bashrc # 查找 `ssh-agent` 相关代码,确保语法正确 ``` --- ### **3. X 服务已运行的冲突** ```log X server already running on display :0 ``` - **原因**: 系统已存在活跃的 Xorg 进程(如通过其他方式启动的桌面环境)。 - **解决流程**: ```bash # 确认当前 X 进程 ps aux | grep Xorg # 方案一:复用现有 X 会话(推荐) export DISPLAY=:0 # 后续 GUI 命令直接使用现有显示 # 方案二:终止旧进程(谨慎操作!) pkill Xorg # 可能导致当前桌面崩溃 ./start.sh # 重新启动 ``` --- ### **4. ICE 目录权限问题** ```log _IceTransmkdir: ERROR: euid != 0 ``` - **原因**: 普通用户尝试创建系统级 IPC 目录 `/tmp/.ICE-unix`(默认需 root 权限)。 - **安全建议**: 此警告可忽略,不影响大多数 GUI 应用。如需根治: ```bash # 手动创建目录并赋权(需 root) sudo mkdir /tmp/.ICE-unix sudo chmod 1777 /tmp/.ICE-unix ``` --- ### **5. SSH 认证代理缺失** ```log xfce4-session: No SSH authentication agent found ``` - **核心需求**: GUI 会话需要 `ssh-agent` 管理密钥(如 Git 操作、SSH 自动登录)。 - **配置方法**: ```bash # 确保已安装 openssh-client # 在 ~/.bashrc 或 ~/.xsession 中添加以下内容 eval $(ssh-agent) > /dev/null ssh-add ~/.ssh/id_rsa # 加载默认密钥 ``` --- ### **操作总结** 1. **优先处理关键错误**: 先修复 `ssh-agent` 缺失和 X 服务冲突问题,确保基础功能正常。 2. **选择性修复警告**: XKB 和 ICE 警告可根据实际需求决定是否处理。 3. **启动脚本优化建议**: 在 `start.sh` 中添加环境检查逻辑: ```bash # 检查 X 服务是否运行 if [ -z "$DISPLAY" ]; then export DISPLAY=:0 fi # 确保 ssh-agent 存在 if ! command -v ssh-agent &> /dev/null; then apt install openssh-client -y fi ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值