如何在 Yocto 中添加 Sudouser

How to add Sudouser in Yocto

我想在 Yocto 中添加一个新的 Sudouser。 Root 密码适用于更改和添加新用户,但它不是 Sudouser。如何添加 Sudouser?看了很多Google篇文章,也试着复制过来,都失败了。我做了一个食谱,但它没有用,只是将它添加到 local.conf 才有效。

  1. 添加额外用户。 (新用户:test1,密码:pass11!)
  2. Desable debug-tweaks 来更改 root 的密码。
  3. 更改根密码。 (None --> pass1234!)

以下是我在local.conf中添加的代码。

# EXTRA_IMAGE_FEATURES = "debug-tweaks package-management"

INHERIT += "extrausers"
EXTRA_USERS_PARAMS = " usermod -P pass1234! root; \
                       useradd test1; \
                       usermod -P pass11! test1; "

如有任何建议,我将不胜感激。

0) 您想在哪里进行更改?

在某些配置文件中,如上所述,或者例如在图像配方中 - 见下文。

1) 你想给 root 一个密码吗?

这可能有帮助:

https://wiki.yoctoproject.org/wiki/FAQ:How_do_I_set_or_change_the_root_password

2) 然后你想创建另一个 sudoer 组成员的用户?

意味着更多用户将拥有 root 权限。

为什么?

那么让我们转到第 2 部分)sudoers

这是我在板上做的快速测试。您能否尝试类似的东西并告诉我这是否是您想要的?一旦您确认,我们将了解如何将其添加到 OE/YP。

Resy (Reliable Embedded Systems Reference Distro) 3.0.1 multi-v7-ml ttymxc1

multi-v7-ml login: root

root@multi-v7-ml:~# sudo adduser anotheruser
Changing password for anotheruser
Enter the new password (minimum of 5 characters)
Please use a combination of upper and lower case letters and numbers.
New password:
Re-enter new password:
passwd: password changed.

root@multi-v7-ml:~# id anotheruser
uid=1001(anotheruser) gid=1001(anotheruser) groups=1001(anotheruser)
root@multi-v7-ml:~#

root@multi-v7-ml:~# sudo visudo -f /etc/sudoers.d/anotheruser

add this lines:
# users ins anotheruser group can do this:
anotheruser ALL=(ALL) NOPASSWD: ALL

root@multi-v7-ml:~# logout

Resy (Reliable Embedded Systems Reference Distro) 3.0.1 multi-v7-ml ttymxc1

multi-v7-ml login: anotheruser
Password:
multi-v7-ml:~$ whoami
anotheruser
multi-v7-ml:~$ id
uid=1001(anotheruser) gid=1001(anotheruser) groups=1001(anotheruser)
multi-v7-ml:~$ sudo ls /
bin  boot  dev  etc  home  lib  media  mnt  my-core-image-minimal  opt  proc  run  sbin  sys  tmp  usr  var
multi-v7-ml:~$

请看以下内容。 idh 是我的新用户,但它有很多 'Permission denied' 消息。所以我不能复制一些文件。但是如果你看到我的root账号,是没有错误的。

colibri-imx6ull login: idh
Password:
Last login: Sat May  2 12:13:20 UTC 2020 on ttymxc0
-sh: /etc/profile.d/utf8.sh: Permission denied
colibri-imx6ull:~$ cp /usr/bin/precept/*.* .
cp: can't open '/usr/bin/precept/SSID-psk.config': Permission denied
cp: can't open '/usr/bin/precept/flash.sh': Permission denied
cp: can't open '/usr/bin/precept/gettysburg10.wav': Permission denied
cp: can't open '/usr/bin/precept/run-htrc.sh': Permission denied
cp: can't open '/usr/bin/precept/wifi.sh': Permission denied
colibri-imx6ull:~$ ls /home
idh   root
colibri-imx6ull:~$
colibri-imx6ull login: root
Password:
Last login: Sat May  2 12:15:11 UTC 2020 on ttymxc0
root@colibri-imx6ull:~# cp /usr/bin/precept/*.* .
root@colibri-imx6ull:~# ls /home
idh   root
root@colibri-imx6ull:~#

我想将权限授予新用户,例如 root 帐户。如果您知道如何在 Yocto 中授予此权限,请告诉我。

谢谢罗伯特。我从 Toradex 工程师那里找到了解决方案。

如果有人遇到像我这样的问题,请尝试以下方法。

  1. 更改根密码。

在local.conf中添加以下内容。我没有使用我的食谱。

EXTRA_IMAGE_FEATURES=""
INHERIT += "extrausers"
EXTRA_USERS_PARAMS = " usermod -P password root; "

如果有人不会ssh,请参考here

  1. 添加具有 root 权限的新用户。
EXTRA_IMAGE_FEATURES=""
INHERIT += "extrausers"
EXTRA_USERS_PARAMS = " usermod -P password1 root; \
            useradd -ou 0 -g 0 newuser; \ 
            usermod -P password2 newuser; "

也许您的用户帐户无法使用某些命令,例如 "ifconfig",因为您的用户帐户没有路径“/sbin”。转到您的 Yocto 代码并找到正确的文件并为您的用户帐户添加 /sbin。

r@p:~/oe-core/layers$ grep -r /etc/profile .
./meta-toradex-demos/recipes-core/base-files/base-files/profile:# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
./meta-toradex-demos/recipes-core/base-files/base-files/profile:if [ -d /etc/profile.d ]; then
./meta-toradex-demos/recipes-core/base-files/base-files/profile:  for i in /etc/profile.d/* ; do
if [ "$HOME" = "/home/root" ]; then
   PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
fi

if [ "$HOME" = "/home/newuser" ]; then
   PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
fi