Linux系统操作作为后端开发必须掌握的技术之一,已经越来越多的成为我们工作的一部分。初入职场、首次接触Linux,面对满屏的操作命令,谁又不会怀念windows的界面呢,不过慢慢的就会发现用命令行敲击起来还是蛮爽的,毕竟我们可以"咔咔咔咔"的敲击键盘来证明我们那饱满的工作量!今天就和大家分享一个自己敲击命令遇到的小问题,希望大家都不会遇到。linux,yyds!
问题描述
在使用普通用户登录Linux系统时,由于需要root权限来执行一些操作,使用sudo su命令来将用户权限提升到root,执行并输入普通用户密码时提示错误:"...用户不在sudoers文件中,此事将被报告" ,由此引发了一场Linux小白对su、sudo命令的学习和探究。
产生原因
首先我们来学习一下su、sudo相关命令的执行结果:
sudo ..:sudo后跟命令,表示当前用户以root身份权限执行命令操作,需要验证当前用户密码,命令执行完成后退回到当前用户,sudo命令执行时需要用户在sudoers中有权限sudo su:使用sudo 给su命令提权,su root:切换至root用户,验证root密码,不改变所在目录,不改变环境变量su:等同于su root(用户缺省时默认为切换至root用户)su - root:切换至root用户,并进入到root用户对应目录下,改变环境变量su xxx:切换至xxx普通用户,root用户切换至普通用户不需要输入密码 因此我们可以对sudo su命令进行分析,sudo表示我们需要提升当前用户的权限为root用户权限,并使用root用户权限来执行su命令,我们发现执行sudo命令是需要在sudoers文件中需要写入当前普通用户的权限,如果执行时文件中没有当前用户的权限,就会提示 "...用户不在sudoers文件中,此事将被报告" 。
解决办法
既然找到问题的出现原因,那么我就可以采取办法来解决问题,正所谓只要思想不滑坡,办法总比问题多。既然是因为当前用户执行sudo命令时没有权限,那么我们就给他加上这个权限,问题不久解决了嘛!sudoers配置文件存在于Linux系统的/etc/sudoers路径下。
- 我们首先使用命令
su root切换至root用户,此时需要验证root用户密码 - 然后我们查看
/etc/sudoers文件内容是否包含当前用户权限 - 如果没有权限,使用命令
vim /etc/sudoers编辑文件增加shone用户的sudo权限## root用户默认存在 root ALL=(ALL:ALL) ALL ## 代表为shone用户添加了sudo命令的权限 shone ALL=(ALL:ALL) ALL - 注意
/etc/sudoers文件的权限是440只读文件,编辑文件内容后无法正常保存退出chmod u+w /etc/sudoers,增加写入权限chmod 740 /etc/sudoers,增加root用户的全部权限(4+2+1=7)- 编辑完成后使用命令
:wq!强制保存修改
- 最后我们使用命令
su shone切换至普通用户,重新测试sudo命令权限已经增加成功
作为新手,在平时的工作学习中,我们要保持好奇心,遇到问题不仅要知其然,也要尽力去知其所以然,只有如此我们才能在工作中不断积累、不断学习、并不断进步,终究有一天我们会真正进入到领域中,而不是永远作为一个在入门处徘徊的幽灵。