背景
树莓派是基于Debian系统的,总体用户配置与Debian Liunx类似,不同版本之间稍有不同,本文是基于树莓派 Debian 9 (stretch)。
默认用户
pi:这是树莓派的默认登陆用户。在初始化的系统的时候会提示配置密码,但即使设置了密码,在开机时,系统也会自动免密登陆。
root:这是树莓派的超级用户。默认没有设置密码,使用如下命令设置密码
1
2
3
4sudo passwd root
输入新的UNIX密码:
重新输入新的UNIX密码:
passwd:已成功更新密码设置密码之后,可以在登陆页面选择使用root用户登陆,也可以通过
su
命令切换到root用户。
新建用户
在管理员权限下,使用如下命令新建用户:
1 | sudo adduser raspi |
按提示输入两次密码以及一些信息(可以为空)即可创建。同步会在/home
路径下创建对应的文件夹。
新建的用户默认是普通用户,没有特殊权限。
sudo
一般涉及系统配置等操作需要root权限,普通用户可以通过增加sudo
前缀来使用管理员权限执行相关命令。
但不是所有的用户都可以使用sudo
来执行命令的。在树莓派中,默认账号pi是有sudo权限的,而我们前面自己新建的用户则没有。
比如我们用raspi
用户执行sudo ifconfig
命令,虽然会提示我们输入密码,但是最终会提示报错,并记录日志。
那么如何将用户加入到可以使用sudo的分组呢?
增加sudoer权限
根据官网推荐,在管理员权限下运行如下命令
1 | sudo visudo |
找到如下语句:
1 | # User privilege specification |
参考root增加:
1 | root ALL=(ALL:ALL) ALL |
即可,如果希望可以不输入密码直接执行sudo
命令,那么可以将该语句修改为:
1 | raspi ALL = NOPASSWD: ALL |
再次使用raspi用户执行sudo
命令:
注意:
也可用直接修改配置文件的方式增加sudoer:
1 | sudo nano /etc/sudoers |
sudoer的配置文件
在修改sudoers配置文件时,我们可以看到这样一句话:
1 | #includedir /etc/sudoers.d |
到对应的目录我们可以看到如下文件:
并且pi用户的配置了可以免密使用sudo权限。
这里是用了另外一种配置方法,我们可以参考同目录下README
的说明。
删除sudoer权限
对应的,删除某用户的sudo权限,只需要在配置文件中删除对应的条目即可。
但需要注意的是,pi用户是系统默认建立的用户,即使删除010_pi-nopasswd
文件,依然无法删除pi用户的sudo权限。可以通过在文件010_pi-nopasswd
文件的末尾加上~
符号,使文件异常的方式来曲线实现。但该方法会导致整个sudo
命令无法使用,即使在其他用户下使用sudo
也会报错:
注:这方法是由于在sudo配置文件中不允许存在~
符号,否则会导致解析出错。
比较建议的方法是,自己按需建立用户,并赋予权限之后,删除pi用户。
删除用户
在管理员权限下,使用如下命令删除用户:
1 | sudo userdel -r raspi |
这里的-r
是用于在删除用户的同时删除他们的文件。
注意:
用户pi是树莓派的默认账户,并且在树莓派9 Debian Stretch中,系统开机默认会登录pi用户。即使在root用户下也无法直接删除,会有如下报错:
使用w
命令可以发现pi用户默认登陆了,这时候就需要先取消pi用户的自动登录,确认没有pi用户的进程之后才可以删除。
扩展
查看树莓派中所有的用户组:
1 | cat /etc/group |
查看树莓派中所有的用户:
1 | cat /etc/passwd |
其他更多的关于树莓派用户配置的信息可参考:https://www.raspberrypi.org/documentation/linux/usage/users.md