linux下非root用户的sudo问题

时间:2022-11-20 19:19:50

linux下的root用户是个超级管理员,一般是不用这个用户登录进行操作的,但有时候需要root权限,又不想切换用户的话可以使用sudo命令。但是不是所有的用户都可以使用sudo命令的。

首先可能会遇到下面的提示:
××× is not in the sudoers file.  This incident will be reported.

解决办法:

1、修改/etc/sudoers 文件

#su -
#chmod u+w /etc/sudoers
在 root    ALL=(ALL)    ALL 的下一行添加
username     ALL=(ALL)    ALL
#chmod u-w /etc/sudoers

可能还会遇到下面的提示
sudo: ×××: command not found
这个是PATH的问题,要继续进行下面的操作

2、把用户加入到wheel组中

#vi /etc/passwd
把用户的组号改为10(whell的组号为10,这步需要重新登录才能生效)

3、修改 Sudo 配置文件 /etc/sudoers

#visudo
或者直接 vi /etc/sudoers
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
LS_COLORS MAIL PS1 PS2 QTDIR USERNAME
LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC
LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY PATH"
在env_keep中加入PATH。(这步需要重新登录才能生效)

RHEL6.×版本里 有所改变,多出来一个 Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin 这个时候上面添加的 PATH就不管用了,
不添加env_keep里面的PATH, 在后面添加下用户安装的目录就可以了  Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

4、修改/etc/profile

# Path manipulation
#if [ "$EUID" = "0" ]; then ;
修改为
gid=`/usr/bin/id -g`
if [ $gid -eq 10 ];then
#source /etc/profile

至此解决问题了。

如果不想让root用户远程登录的话,可以做如下设置:
修改配置文件/etc/sshd/sshd_config,
在文件中查找 PermitRootLogin 这句话
“PermitRootLogin no”表示不允许root用户远程登录,
“PermitRootLogin yes”表示允许root用户远程
修改为想要的结果即可