如何在 Yocto 中添加 Sudouser
How to add Sudouser in Yocto
我想在 Yocto 中添加一个新的 Sudouser。 Root 密码适用于更改和添加新用户,但它不是 Sudouser。如何添加 Sudouser?看了很多Google篇文章,也试着复制过来,都失败了。我做了一个食谱,但它没有用,只是将它添加到 local.conf 才有效。
- 添加额外用户。 (新用户:test1,密码:pass11!)
- Desable debug-tweaks 来更改 root 的密码。
- 更改根密码。 (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 工程师那里找到了解决方案。
如果有人遇到像我这样的问题,请尝试以下方法。
- 更改根密码。
在local.conf中添加以下内容。我没有使用我的食谱。
EXTRA_IMAGE_FEATURES=""
INHERIT += "extrausers"
EXTRA_USERS_PARAMS = " usermod -P password root; "
如果有人不会ssh,请参考here
- 添加具有 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
我想在 Yocto 中添加一个新的 Sudouser。 Root 密码适用于更改和添加新用户,但它不是 Sudouser。如何添加 Sudouser?看了很多Google篇文章,也试着复制过来,都失败了。我做了一个食谱,但它没有用,只是将它添加到 local.conf 才有效。
- 添加额外用户。 (新用户:test1,密码:pass11!)
- Desable debug-tweaks 来更改 root 的密码。
- 更改根密码。 (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 工程师那里找到了解决方案。
如果有人遇到像我这样的问题,请尝试以下方法。
- 更改根密码。
在local.conf中添加以下内容。我没有使用我的食谱。
EXTRA_IMAGE_FEATURES=""
INHERIT += "extrausers"
EXTRA_USERS_PARAMS = " usermod -P password root; "
如果有人不会ssh,请参考here
- 添加具有 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