su认证失败解决方法

su认证失败的解决方法 
Ubuntu安装后,root用户默认是被锁定了的,不允许登录,也不允许“su”到 root。有人说这是个不好的实践,特别是对于服务器来说。我觉得对于桌面用户来说,这样安全性更高一些,是应该的;但对于服务器可以设置成“允许 su 到root,但不允许root用户直接登录”。而我为了开发时的方便,则在桌面和服务器上都采用这种方式。 

◆允许 su 到 root 

非常简单,下面是设置的方法: 

me@tipfoo:~$ sudo passwd 

Password: <--- 输入安装时那个用户的密码 

Enter new UNIX password: <--- 新的Root用户密码 

Retype new UNIX password: <--- 重复新的Root用户密码 

passwd:已成功更新密码 

◆允许root登录 

如果要 允许root登录(不推荐),则这样操作: 

me@tipfoo:~$ gksu /usr/sbin/gdmsetup 

(或 者使用桌面菜单:系统>系统管理>登录窗口) 

点“安全”选项页,选择“允许本地管理员登录”。 

注:这一步依赖上一 步 

◆不输入密码直接登录 

在论坛上也看见有人抱怨,家中的Ubuntu不能像Window$那样──不用输入密码就能 登录。其实同样能做到: 

就在上一步的“安全”选项页中,勾选: 

“启用自动登录”,“用户”选择(如:“me”); 

注 意:公共用的计算机千万不能这么设置! 

◆SSH登录远程服务器 

如果远程服务器只允许root用户SSH到服务器时, 在Ubuntu下,必须“su 到root”用户才能登录成功(具体是看服务器端的配置)。 

首先,复制密钥到“/root/.ssh /”目录, 

me@tipfoo:~$ su 

Password: 

root@tipfoo:/home/me# chmod 600 -R /root/.ssh/ 

root@tipfoo:/home/me# ssh -p 27482 11.22.33.44 

Enter passphrase for key '/root/.ssh/id_rsa': 

Last login: Thu Jun 21 14:29:00 2007 from 11.22.33.45 

文章如转载,请注明:转载自:第九街-PHP[http://www.9streets.cn/] 
本文链接地址:http://www.9streets.cn/art-php-228.html 
<think>嗯,用户遇到了SU认证失败的问题,需要解决Android上的su权限问题。首先,我得回忆一下相关引用内容。引用[1]提到权限不足可能导致节点写入失败,需要检查权限和Root权限。引用[2]讨论了SuperSU更新二进制文件失败解决方案,可能需要重新安装或使用其他工具。引用[3]和[4]则提到了Magisk和SELinux设置,这些可能也是关键因素。 首先,用户的问题可能涉及几个方面:权限不足、二进制文件损坏、SELinux限制、系统兼容性或应用本身的问题。我需要一步步引导用户排查这些可能性。 第一步,确认Root权限是否正确获取。用户应该检查是否成功Root,比如用Root Checker验证。如果失败,可能需要重新Root设备,使用Magisk这样的工具更可靠,因为引用[3]提到Magisk可以获取Root权限。 第二步,检查su二进制文件的状态。如果二进制文件损坏或版本不兼容,可能需要重新安装。引用[2]中的SuperSU问题,用户可能需要通过TWRP手动刷入或使用Magisk替换SuperSU,因为Magisk现在更流行且维护更好。 第三步,SELinux的问题。引用[4]提到SELinux可能导致连接失败或闪退,所以需要将SELinux设为宽容模式,或者修改策略允许su执行。用户可能需要使用命令setenforce 0临时关闭,或者修改内核配置。 第四步,系统分区只读的情况。部分系统分区可能被挂载为只读,需要重新挂载为可写,才能更新su文件。这需要adb或终端命令,如mount -o remount,rw /system。 第五步,应用兼容性。如果用户的应用没有正确请求权限,或者存在代码问题,可能需要检查应用的root请求逻辑,确保使用正确的API,比如Runtime.exec("su"),并处理可能的异常。 此外,用户可能需要更新Magisk或SuperSU到最新版本,确保兼容当前的Android版本,尤其是Android Q及以上,因为系统限制越来越严格,引用[3]提到Android Q需要Magisk来获取Root权限。 最后,如果所有方法失败,可能需要考虑刷入第三方ROM,或者联系设备厂商获取支持,但这是最后的手段了。需要提醒用户注意操作风险,比如变砖或数据丢失,建议备份重要数据。 总结解决方案的步骤应该是结构化的,从检查Root权限开始,逐步排除二进制文件、SELinux、分区挂载等问题,最后考虑应用本身和系统兼容性。同时,引用相关的参考资料,比如引用[1]、[2]、[3]、[4]来支持每一步的建议,确保回答的可靠性。</think>### SU认证失败解决方案 在Android系统中遇到SU(超级用户)认证失败的问题,通常与Root权限获取不完整、二进制文件损坏或权限配置错误有关。以下是分步解决方案: --- #### 1. **确认Root权限是否有效** - **验证Root状态**:使用Root检测工具(如Root Checker)确认设备是否已成功获取Root权限。若未成功,需重新执行Root流程。 - **推荐工具替换**:若使用SuperSU出现二进制更新失败(如引用[2]所述),建议改用**Magisk**,因其对现代Android版本兼容性更好。Magisk通过“挂载”方式修改系统分区,避免直接写入冲突[^3]。 --- #### 2. **修复或更新SU二进制文件** - **手动刷入二进制文件**: 1. 下载最新版SuperSU或Magisk的ZIP包。 2. 通过TWRP等Recovery模式刷入,命令行示例如下: ```bash adb reboot recovery # 进入TWRP后选择安装ZIP包 ``` - **使用Magisk修复**: - 若已安装Magisk,打开应用后点击“安装” > “直接安装”以更新二进制文件。 --- #### 3. **检查SELinux策略限制** - **临时关闭SELinux**: ```bash adb shell setenforce 0 # 将SELinux设为宽容模式 ``` - **永久修改策略**: - 修改`sepolicy`文件或刷入已配置SELinux规则的第三方内核(需解锁Bootloader)[^4]。 --- #### 4. **系统分区挂载权限问题** - **重新挂载为可写模式**: ```bash adb shell su -c "mount -o remount,rw /system" ``` - **检查`/system/xbin`或`/system/bin`目录**: - 确保`su`文件存在且权限为`6755`(命令:`ls -l /system/xbin/su`)。 --- #### 5. **应用适配与权限请求** - **代码层检查**: - 在应用中调用Root权限时,需使用标准API(如`Runtime.getRuntime().exec("su")`),并捕获可能的异常。 - 示例代码: ```java try { Process process = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(process.getOutputStream()); os.writeBytes("your_command\n"); os.flush(); } catch (IOException e) { e.printStackTrace(); } ``` - **兼容性适配**:针对Android Q及以上版本,需使用Magisk的“隐藏Root”功能绕过系统限制[^3]。 --- #### 6. **其他可能原因** - **系统版本冲突**:部分Android版本(如定制ROM)可能限制Root权限,需刷入兼容的第三方ROM。 - **硬件级限制**:某些厂商(如华为、三星)通过Bootloader锁阻止Root,需官方解锁工具。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值