sudo命令的作用
树莓派官方系统的默认用户并不是root用户,官方系统默认用户名是pi,而默认的密码是raspberry,据说曾经很多用户因疏于防范,没有第一时间去修改树莓派默认的密码,导致出现过大范围被黑的情况。
Linux操作系统是一个多用户操作系统,允许多个用户登录和使用同一台设备,并且可以对每个用户设置不同的权限。非root用户在运行某些需要超级用户权限才可以执行的命令时,会需要用到sudo指令,说白了,sudo就类似于windows系统上的右键-以管理员身份运行。习惯于root用户的人往往会觉得多加一个sudo各种不习惯,但事实上,树莓派上的sudo指令也不是想用就用的,只有指定的用户才能够使用sudo命令获取计算机管理员的权限。这些用户会被包含在“/etc”文件夹内的sudoer文件中,当然,你同样需要sudo指令才能够访问它,就像这样:
sudo nano /etc/sudoers
所以在很多树莓派的教程中,我们都能看到sudo指令的身影,就比如我们想为树莓派搭建一个lamp环境,本来一个apt-get指令就可以了,但因为权限的问题,所以还是得在前面增加一个sudo:
sudo apt-get -y install apache2
sudo apt-get -y install php-mysql
sudo apt-get -y install mariadb-server
忘记添加sudo会导致一个“Permission denied”错误花式的从我们的全世界路过,当然这对于英文薄弱的亲也不是什么坏事,顺便还能复习一下单词拼写。当遇到这类错误,又不想再重新输入一遍长长的命令时,也可以接着在下面输入如下语句,系统会以管理员权限重新执行上一次出错的命令:
sudo !!
简单来说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些root执行的操作,而不需要知道root的密码。
sudo的参数说明
- -V 显示版本编号;
- -h 会显示版本编号及指令的使用方式说明;
- -l 显示出自己(执行 sudo 的使用者)的权限;
- -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会询问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会询问密码;
- -k 将会强迫使用者在下一次执行 sudo 时询问密码(不论有没有超过 N 分钟);
- -b 将要执行的指令放在后台执行;
- -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称,%h 会显示主机名称;
- -u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码);
- -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell;
- -H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root );
- command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令。