树莓派用户配置

背景

树莓派是基于Debian系统的,总体用户配置与Debian Liunx类似,不同版本之间稍有不同,本文是基于树莓派 Debian 9 (stretch)。

默认用户

  • pi:这是树莓派的默认登陆用户。在初始化的系统的时候会提示配置密码,但即使设置了密码,在开机时,系统也会自动免密登陆。

  • root:这是树莓派的超级用户。默认没有设置密码,使用如下命令设置密码

    1
    2
    3
    4
    sudo passwd root
    输入新的UNIX密码:
    重新输入新的UNIX密码:
    passwd:已成功更新密码

    设置密码之后,可以在登陆页面选择使用root用户登陆,也可以通过su命令切换到root用户。

新建用户

在管理员权限下,使用如下命令新建用户:

1
sudo adduser raspi

按提示输入两次密码以及一些信息(可以为空)即可创建。同步会在/home路径下创建对应的文件夹。

adduser

新建的用户默认是普通用户,没有特殊权限。

sudo

一般涉及系统配置等操作需要root权限,普通用户可以通过增加sudo前缀来使用管理员权限执行相关命令。

但不是所有的用户都可以使用sudo来执行命令的。在树莓派中,默认账号pi是有sudo权限的,而我们前面自己新建的用户则没有。

比如我们用raspi用户执行sudo ifconfig命令,虽然会提示我们输入密码,但是最终会提示报错,并记录日志。

sudo_deny

那么如何将用户加入到可以使用sudo的分组呢?

增加sudoer权限

根据官网推荐,在管理员权限下运行如下命令

1
sudo visudo

找到如下语句:

1
2
# User privilege specification
root ALL=(ALL:ALL) ALL

参考root增加:

1
root  ALL=(ALL:ALL) ALL

即可,如果希望可以不输入密码直接执行sudo命令,那么可以将该语句修改为:

1
raspi   ALL = NOPASSWD: ALL

再次使用raspi用户执行sudo命令:

add_sudoer

注意:

也可用直接修改配置文件的方式增加sudoer:

1
sudo nano /etc/sudoers

sudoer的配置文件

在修改sudoers配置文件时,我们可以看到这样一句话:

1
#includedir /etc/sudoers.d

到对应的目录我们可以看到如下文件:

sudoer.d

并且pi用户的配置了可以免密使用sudo权限。

这里是用了另外一种配置方法,我们可以参考同目录下README的说明。

删除sudoer权限

对应的,删除某用户的sudo权限,只需要在配置文件中删除对应的条目即可。

但需要注意的是,pi用户是系统默认建立的用户,即使删除010_pi-nopasswd文件,依然无法删除pi用户的sudo权限。可以通过在文件010_pi-nopasswd文件的末尾加上~符号,使文件异常的方式来曲线实现。但该方法会导致整个sudo命令无法使用,即使在其他用户下使用sudo也会报错:

sudo_error

注:这方法是由于在sudo配置文件中不允许存在~符号,否则会导致解析出错。

比较建议的方法是,自己按需建立用户,并赋予权限之后,删除pi用户。

删除用户

在管理员权限下,使用如下命令删除用户:

1
sudo userdel -r raspi

这里的-r是用于在删除用户的同时删除他们的文件。

注意:

用户pi是树莓派的默认账户,并且在树莓派9 Debian Stretch中,系统开机默认会登录pi用户。即使在root用户下也无法直接删除,会有如下报错:

image-20190424224947306

使用w命令可以发现pi用户默认登陆了,这时候就需要先取消pi用户的自动登录,确认没有pi用户的进程之后才可以删除。

扩展

查看树莓派中所有的用户组:

1
cat /etc/group

查看树莓派中所有的用户:

1
cat /etc/passwd

其他更多的关于树莓派用户配置的信息可参考:https://www.raspberrypi.org/documentation/linux/usage/users.md