Skip to main content

linux非root用户摆脱输入密码

当使用ubuntu、fedora、manjaro等带桌面环境的linux发型版时,相信你一定为密码输入所烦恼。敲sudo命令要输入密码,按照软件要输入密码,挂载磁盘要输入密码。如果直接以root用户登录风险太大,很容易就把系统玩蹦了。这里介绍如果用普通用户,不输入密码搞定一切。

1. 关闭sudo密码输入#

在控制台输入(最后一次sudo需要密码)

sudo visudo /etc/sudoers

找到你的用户在群组的sudoer配置:

%wheel ALL=(ALL) : ALL

加上NOPASSWD:

%wheel ALL=(ALL) NOPASSWD: ALL

也有可能是使用的用户名配置:

username ALL=(ALL) : ALL

加上NOPASSWD:

username ALL=(ALL) NOPASSWD: ALL

如果你之前能使用sudo命令,则/etc/sudoers文件中一定有一条当前用户对应的配置,在上面加上NOPASSWD即可。

2. 在Polkit的权限控制中放行一切操作#

即使完成了sudo不用输入密码的配置,在安装软件、挂载磁盘时图像界面仍会弹出让你输入密码。这是因为系统使用了Polkit的权限控制能力。只需要对Polkit进行配置,就可以完全摆脱密码输入了。

在目录/etc/polkit-1/rules.d/下创建49-nopasswd_global.rules文件,内容如下:

/* Allow members of the wheel group to execute any actions
* without password authentication, similar to "sudo NOPASSWD:"
*/
polkit.addRule(function(action, subject) {
if (subject.isInGroup("wheel")) {
return polkit.Result.YES;
}
});

这里的wheel是你的用户所在的群组。

参考#

https://wiki.archlinux.org/title/Polkit#Bypass_password_prompt

https://wiki.archlinux.org/title/Sudo

undefined reference to

错误解释#

调用了没有实现的函数。链接阶段链接器会将编译c/cpp生成的.o/.obj文件链接生成.exe/.so/.dll/.a/.lib等格式的可执行程序或库文件,c/cpp代码之间函数的相互调用,会在这个阶段由链接器将函数具体实现的地址写入可执行程序或库文件。当链接器找不到某个函数的具体实现时,就会抛出undefined reference to错误。

  • 发生阶段:链接
  • 错误级别:error

常见错误举例#

  1. 调用extern声明的函数,未找到该函数的实现

Qt中Tcp相关问题定位方法汇总

如果你刚开始学习使用Qt的QTcpServer、QTcpClient编写CS架构的应用程序,或者已经写过一些简单的程序,但当问题出现时不知到该如何定位,这篇文档应该对你有所帮助。

QTcpServer与QTcpClient连接过程介绍#

首先我们总结一下QTcpServer与QTcpClient间建立连接的过程。对整个过程熟悉后,可以帮助我们快速定界问题发生在哪个阶段。然后再针对对应的阶段,详细介绍可能发生的问题及解决方案。