起因
要在mac中开发一个rust网络程序,编辑器用的vscode。
里面涉及的系统级别的socket连接,直接用户身份执行cargo test会报权限问题,sudo cargo test可以通过。
而想debug程序使用rust analyzer或code lldb插件启动的terminal没有root权限,这边有个类似的issue。折腾了好久才用了个奇葩方法曲线救国,如果有人有更好的方案欢迎留言👏🏻
过程
尝试各种方案未果,以下是失败的方案
sudo code . --user-data-dir xx- 在.bash_profile alias
alias code_root="echo \" run vscode as root \" && sudo open /Applications/Visual\ Studio\ Code.app --args --user-data-dir=/Users/xxx/VsCodeRoot/ --extensions-dir=/Users/xxx/VsCodeRoot/extensions --only-same-user=false --no-sandbox"
sudo su以管理员身份登录了之后code .- 恢复模式下关闭sip
csrutil disable - launch.json加一些配置
- 重命名lldb执行sudo
解决方案
搞了大半天没搞定,有篇文章讲到了remote可以用root,尝试可用,所以最终采用vscode远程登录的方案
1. 普通账号生成私钥
cd ~/.ssh
ssh-keygen -t rsa
修改~/.ssh/config添加
Host self
HostName 127.0.0.1
User root
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
2. root账号修改密码,添加公钥
sudo su
passwd root
cat /Users/xxx/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
3. 开启ssh服务
【系统偏好设置】 -> 【共享】 -> 【选中 远程访问】
4. vscode安装插件
插件列表搜ssh,第一个就是Remote - SSH, 安装好就行
5. 远程连接
点击左侧远程资源管理器
选到self(刚刚我们.ssh/config加的)
连接进去就是root身份了