本文主要是为了解决多用户在同一台开发板上开发时导致的Github等ssh key混乱的问题
Linux系统多用户
# 切换到管理员权限
sudo su
# 创建用户wfy(会自动创建home目录)
adduser wfy
# 系统会提示设置密码,输入1(注意:Ubuntu默认要求密码复杂度,简单密码可能需要强制确认)
# 按提示完成用户信息设置(可直接回车跳过)
# 将wfy添加到sudo组
usermod -aG sudo wfy
后续使用 VS Code 或者 powershell 进行 ssh 连接时使用新的账户即可登录。
Github ssh key 生成
使用新用户登陆后,执行命令
ssh-keygen -t ed25519 -C "email address" -f ~/.ssh/id_rsa_github_wfy
在 /home/wfy/.ssh
会生成2个文件:
- 私钥:id_rsa_github_wfy
- 公钥:id_rsa_github_wfy.pub
为了让 Git 操作自动使用该用户的密钥,需要在用户的 SSH 配置中指定密钥与 GitHub 的关联。
vim ~/.ssh/config
新增如下内容:
# GitHub配置(wfy用户)
Host github.com-wfy
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github_wfy # 指向当前用户的私钥
然后文件权限
chmod 600 ~/.ssh/config
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa_github_wfy # 私钥必须是600权限
将 ~/.ssh/id_rsa_github_wfy.pub
内容添加到github账户的设置中。
后续使用ssh命令连接 github.com
时,需要改为 github.com-wfy
比如测试:
ssh -T github.com-wfy
在clone项目时,如原本的 git@github.com:username/repo.git
需要修改为 git@github.com-wfy:username/repo.git
用户权限
在新用户下,使用 sudo su
可以访问整台开发板上的所有内容,但是不推荐这样做。
如果调用一些系统库时出现问题,先检查新用户的 bashrc
。
为了更好的实现多用户隔离,建议添加用户组。
在默认情况下,/usr
/opt
等系统路径是共享的,不需要额外操作,、新用户可使用命令 ls -ld /usr/include
验证,输出应为:drwxr-xr-x
。
但是对于初始用户中的一些三方库,如 livox_lidar_sdk
等,需要对用户权限进行特别处理。
我们使用用户组方法,先新建一个用户组,用于统一管理权限
sudo groupadd dev_group
然后将所有需要共享权限的用户加入该组:
sudo usermod -aG dev_group wfy
sudo usermod -aG dev_group nvidia
将用户级开发目录的组权限开放为 读 + 执行
sudo chgrp -R dev_group /home/nvidia/Deps # 将目录所属组改为dev_group
sudo chmod -R g+rx /home/nvidia/Deps # 给组用户添加读和进入权限
操作完成后,reboot
。
测试:
# 测试系统级头文件
cat /usr/include/stdio.h
# 测试用户级开发库,应该能读取到内容
cat /home/wuba/Deps/livox_ws/install/setup.bash