曾经在Ubuntu下经常都是使用sudo命令来执行一些高权限的操作,因为Ubuntu下默认是不开启root用户的,所以在执行一些必要的操作时就必须要使用sudo命令,但是今天突然发现当我在CentOS使用sudo命令执行时,却失败了,经过一番查看,终于找到原因,先总结如下:
在CentOS下当你要执行sudo 命令时,系统首先会查看/etc/sudoers中的记录,如果有当前用户的记录存在,那么系统就会响应当前普通用户的命令,即允许当前普通用户通过sudo来执行一些只有root才有权限执行的操作,如果没有,那么就会执行失败,如下
当我以普通用户sharp建立递归目录时系统给出提示,权限拒绝,于是我便使用sudo命令来执行,即使在我输入正确的root用户密码之后冷然提示错误。
[sharp@sharpshooter ~]$ mkdir -p /aaa/bbb/ccc
mkdir: cannot create directory `/aaa/bbb/ccc': Permission denied
[sharp@sharpshooter ~]$ sudo mkdir -p /aaa/bbb/ccc
Password:
Sorry, try again.
Password:
Sorry, try again.
Password:
解决方法很简单,就是编辑使用root用户编辑/etc/sudoers这个文件即可
首先我切换到root用户下,利用vim查看sudoers里面的内容如下:
[sharp@sharpshooter ~]$ visudo #建议最好用visudo这个命令,为什么?你懂的。
## Networking
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
## Installation and management of software
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
## Updating the locate database
Cmnd_Alias LOCATE = /usr/bin/updatedb
## Storage
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
## Delegating permissions
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
## Processes
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
## Drivers
Cmnd_Alias DRIVERS = /sbin/modprobe
# Defaults specification
#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
# You have to run "ssh -t hostname sudo <cmd>".
#
Defaults requiretty
Defaults env_reset
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"
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL = (ALL) ALL
#账户 所登录的主机 可以切换的用户 可以执行的命令#
其他什么的都不需要我们看,只需要看我用红色标记出来的那一句即可,分别代表什么意思我大概也标出来了#-----#之间的就是,所以我就在里面添加如下一行即可
sharp ALL = (ALL) ALL
#大概意思就是sharp这个用户,可以在任何地方登录主机,可以切换到任何的用户执行任何的命令,怎么样,够霸道吧,当然我这里只是在个人实验的机子上这样做而已。
这个时候我在执行如上命令的时候就正常了。
[sharp@sharpshooter ~]$ sudo mkdir -p /aaa/bbb/ccc
Password: #注意这里你的密码还是输入sharp这个用户自己的密码,并不是root用户的密码
[sharp@sharpshooter ~]$
[sharp@sharpshooter ~]$ ll /aaa/bbb/
total 4
drwxr-xr-x 3 root root 4096 Sep 8 18:31 ccc
[sharp@sharpshooter ~]$
转载于:https://blog.51cto.com/sharpshooter/389191