需要了解的信息
有些应用之所以在 Kali Linux 下无法启动,是因为它们不允许以 root 用户的身份运行,通常,我们可以直接修改相应的二进制文件,将
getuid
改为getppid
,来达到我们的目的。不过这样破坏了安全性,也会因为软件的反复更新,而需要每次做重复的操作。我们可以使用
gksu -u <username> <bin>
的方式来在终端以其他用户的身份启动应用。usr/share/applications
路径下陈列着应用菜单里相应的.desktop
文件。其中Exec
参数定义了执行的命令。
综述,我们可以创建一个普通的用户,并修改应用菜单执行命令,来达到在 root 桌面环境下方便地以其他用户身份运行应用的目的。
例:使用 Chrome
添加一个名为 normaluser 的用户:
1 | useradd -m normaluser |
此时,便可以用此用户运行 Chrome:
1 | gksu -u normaluser google-chrome-stable |
此外,编辑 /usr/share/applications
下的 google-chrome.desktop
将 Exec
参数改为:
1 | gksu -u normaluser /usr/bin/google-chrome-stable %U |
这样,我们便可以通过桌面图标启动 Chrome 了。
问题解决
已知会产生音频设备加载失败的问题,导致无法播放声音。搜索相关资料,发现如果用户安装了桌面环境,PulseAudio 很可能通过 /etc/X11/xinit/xinitrc.d/pulseaudio
文件或者 /etc/xdg/autostart/
目录下的文件自动启动。Chrome 认为 PulseAudio 已经安装并运行,但事实并非如此。故用户应通过参数直接指明使用哪种音频输出。
首先,给予 normaluser 访问音频设备的权限:
1 | usermod -a -G audio normaluser # 将 normaluser 移入 audio 用户组 |
获取必要的信息:
1 | cat /proc/asound/cards # 查看声卡及设备号,对应于 hw:x,x |
运行 Chrome:
1 | gksu -u normaluser "/usr/bin/google-chrome-stable --alsa-output-device=hw:1,0" |
至于 VLC 可以在图形界面设置中直接指定相应的输出设备,比较简单,这里不再赘述。
附:关于"用户"需要知道的知识
groups
查看当前登录用户的组内成员
groups <username>
查看某个用户所在的组,以及组内成员
whoami
查看当前登录用户名
/etc/group
文件包含所有组,格式为 group_name:passwd:GID:user_list
/etc/shadow
和 /etc/passwd
系统存在的所有用户名
添加一个用户:
1 | useradd <username> |
将用户添加至用户组:
1 | usermod -a -G <groupname> <username> |
将用户从用户组中删除:
1 | gpasswd -d <username> <groupname> |
修改用户名:
1 | usermod -l <new username> -d /home/<new username> -m <old username> |
vim 全部替换字符:
1 | %s/<old username>/<new username>/g |
删除用户:
1 | userdel -r <username> # -r 参数 宿主目录和邮件目录一并删除 |