Ubuntu开发板多用户开发权限配置指南

Ubuntu开发板多用户开发权限配置指南

 次点击
11 分钟阅读

本文主要是为了解决多用户在同一台开发板上开发时导致的Github等ssh key混乱的问题

Linux系统多用户

# 切换到管理员权限
sudo su

# 创建用户wfy(会自动创建home目录)
adduser wfy

# 系统会提示设置密码,输入1(注意:Ubuntu默认要求密码复杂度,简单密码可能需要强制确认)
# 按提示完成用户信息设置(可直接回车跳过)

# 将wfy添加到sudo组
usermod -aG sudo wfy

后续使用 VS Code 或者 cmd 进行 ssh 连接时使用新的账户即可登录。

Github ssh key 生成

使用新用户登陆后,执行命令

ssh-keygen -t ed25519 -C "email address" -f ~/.ssh/id_rsa_github

/home/wfy/.ssh会生成2个文件:

  • 私钥:id_rsa_github
  • 公钥:id_rsa_github.pub

为了让 Git 操作自动使用该用户的密钥,需要在用户的 SSH 配置中指定密钥与 GitHub 的关联。

vim ~/.ssh/config

新增如下内容:

# GitHub配置(wfy用户)
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_github  # 指向当前用户的私钥

然后文件权限

chmod 600 ~/.ssh/config
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa_github  # 私钥必须是600权限

~/.ssh/id_rsa_github.pub内容添加到github账户的设置中。

比如测试:

wfy@pat-desktop:~$ ssh -T git@github.com
Hi Hachimi-Manbo! You've successfully authenticated, but GitHub does not provide shell access.

用户权限

在新用户下,使用 sudo su可以访问整台开发板上的所有内容,但是不推荐这样做。

如果调用一些系统库时出现问题,先检查新用户的 bashrc

为了更好的实现多用户隔离,建议添加用户组。

在默认情况下,/usr /opt 等系统路径是共享的,不需要额外操作,、新用户可使用命令 ls -ld /usr/include 验证,输出应为:drwxr-xr-x

但是对于初始用户中的一些三方库,如 livox_lidar_sdk等,需要对用户权限进行特别处理。

我们使用用户组方法,先新建一个用户组,用于统一管理权限。

此前先确认系统存在的用户组:

wfy@ubuntu:~$ groups
wfy sudo audio video render i2c gdm weston-launch gpio pat_group

如果是首次创建,先新增用户组:

sudo groupadd pat_group

然后将所有需要共享权限的用户加入该组:

sudo usermod -aG pat_group wfy
sudo usermod -aG pat_group wuba

将用户级开发目录的组权限开放为 读 + 执行。

这里要注意:尽量不要递归的设置整个 /home/pat目录权限,因为这样会破坏 .ssh目录密钥文件的安全权限,导致Github SSH连接失效。

如果其他用户已经完成了下面操作,你不需要再重复进行。

# 1. 仅修改需要共享的Deps目录(及子目录/文件)的所属组
sudo chgrp -R pat_group /home/pat/Deps

# 2. 仅给Deps目录添加组rx权限
sudo chmod -R g+rx /home/pat/Deps

# 3. 给/home/pat目录添加组rx权限(让wfy能进入pat的家目录),但不递归(保留.ssh等目录的权限)
sudo chgrp pat_group /home/pat
sudo chmod g+rx /home/pat

# (可选)如果pat用户的.ssh权限已被破坏,执行以下命令恢复
# 如果还未创建.ssh等内容,无需修改,但是注意后面用户不要修改.ssh权限
chmod 700 /home/pat/.ssh
chmod 600 /home/pat/.ssh/*
chmod 644 /home/pat/.ssh/*.pub  # 公钥文件可以是644

操作完成后,reboot

测试:

# 测试系统级头文件
cat /usr/include/stdio.h

# 测试用户级开发库,应该能读取到内容
cat /home/pat/Deps/ws_livox/install/setup.bash

其他设置

.bashrc文件可能需要复制过来。

记得先检查主用户中的 bashrc是否涉及到不可访问的绝对路径。

# 追加内容到现有用户的bashrc
cat /home/pat/.bashrc >> ~/.bashrc

# 确保.bashrc属于wfy用户和用户组
# .bashrc这类私有配置文件推荐用wfy:wfy用户私有组
# 共享的开发文件可根据需求用wfy:pat_group
sudo chown wfy:wfy ~/.bashrc

# 确保权限正确(默认644即可)
chmod 644 ~/.bashrc
© 本文著作权归作者所有,未经许可不得转载使用。