sudo使用

对于linux用户来讲,普通用户的权限是有一定限制的,所以在有些操作的时候,是需要sudo权限的,那么如何在linux下赋予普通用户sudo权限呢?此处将讲解一下方法。

在login我们的系统后,如果是普通用户,我们可以使用su - root来切换到root用户下进行操作,在root用户下,命令行输入 visudo回车即可进入/etc/sudoers下,找到

## Allow root to run any commands anywhere
root ALL=(ALL) ALL

在这个下面添加如下即可

xxx ALL=(ALL) ALL

然后保存退出,再次切换到普通用户下,执行sudo命令就可以看到相应的信息了,

shell脚本中切换用户并执行命令

[root@oracledb ~]# su oracle -c "sudo ls"
[sudo] password for oracle:
2.txt a.sh deplomet.yaml orcale output.sh pip_output.sh Python-3.6.5.tgz
3.txt c.sh d.sh orcale_output.sh output.txt pip_output.txt user.txt
anaconda-ks.cfg cut_new.sh d.txt orcale.sh –p pip.sh
a.py cut.sh lnmp.sh orcale.txt pdksh-5.2.14-37.el5.x86_64.rpm python3

自动切换su并且执行ls命令

[root@oracledb ~]# cat login.sh
#!/usr/bin/expect
set timeout 5
spawn su oracle -c "sudo ls"
expect "password for oracle:"
send "123\r"
interact

[root@oracledb ~]# ./login.sh
spawn su oracle -c sudo ls
[sudo] password for oracle:
2.txt a.sh deplomet.yaml login.sh orcale.txt pdksh-5.2.14-37.el5.x86_64.rpm python3
3.txt c.sh d.sh orcale output.sh pip_output.sh Python-3.6.5.tgz
anaconda-ks.cfg cut_new.sh d.txt orcale_output.sh output.txt pip_output.txt user.txt
a.py cut.sh lnmp.sh orcale.sh –p pip.sh

报错:

[root@oracledb ~]# su oracle -c "ls"
ls: cannot open directory .: Permission denied

解决:
sed = /etc/sudoers | sed -i '92a oracle ALL=(ALL) ALL'


报错:
sudo: no tty present and no askpass program specified

解决:

http://blog.51cto.com/nosmoking/1595241

1. 注释Defaults requiretty
Defaults requiretty修改为 #Defaults requiretty, 表示不需要控制终端。
否则会出现sudo: sorry, you must have a tty to run sudo

2. 增加行 Defaults visiblepw
否则会出现 sudo: no tty present and no askpass program specified

grep -n "Defaults" /etc/sudoers && sed -i '55 s/!//g' /etc/sudoers

猜你喜欢

转载自www.cnblogs.com/effortsing/p/9999500.html