sudo 命令问题详解(一)

普通用户不能使用sudo命令的解决办法   https://www.cnblogs.com/fasthorse/p/5949946.html

解决sudo: sorry, you must have a tty to run sudo      https://blog.csdn.net/breezehappy/article/details/38895375

 

1. 切换到root用户下:su – root

2. 给/etc/sudoers文件添加写权限 :chmod u+w /etc/sudoers

3. 给普通用户添加使用sudu的的权限:

vim /etc/sudoers 

找到这行:root  ALL=(ALL)  ALL, 在这行下面添加 xxx  ALL=(ALL) ALL (这里的xxx就是你的普通用户)

##这里解释一下,sudoers下面添加普通用户可以使用sudo命令的格式:

xxx ALL=(ALL)  ALL   ##:普通用户可以使用sudo命令,但是需要密码

%xxx ALL=(ALL)  ALL  ##用户组xxx的用户可以使用sudo命令,但是需要密码

xxx ALL=(ALL)  NOPASSWD:ALL  ##普通 用户可以使用sudo命令,不需要密码

%xxx  ALL=(ALL)  NOPASSWD:ALL  ##用户组xxx的用户可以使用sudo命令,不需要密码

4. 添加完之后,保存退出

5. 去除root用户对sudoers文件的写权限:chmod u-w /etc/sudoers

 

 

前几天遇到一个问题,在一个终端中调用另一个shell,始终是无法执行的,后来捕捉到报错信息为sudo: sorry, you must have a tty to run sudo,后来,在网上了解到可以如下解决:

1. 编辑 /etc/sudoers

  1)Defaults    requiretty,修改为 #Defaults    requiretty,表示不需要控制终端。

  2)Defaults    requiretty,修改为 Defaults:nobody !requiretty,表示仅 nobody 用户不需要控制终端。

       如果修改为 Defaults:%nobody !requiretty,表示仅 nobody 组不需要控制终端。

其实只要注释掉)Defaults    requiretty 那个就可以了。表示在执行的时候不打开终端。但是,有的shell必须要有终端才可以执行。这样显然是不行的。后来,又找到一片文章才搞定。下面为抄录的,仅为记录以后使用。

有些程序/脚本可能在没有控制终端的环境下上执行(如系统启动服务时, Daemon,
或者是setsid启动的程序等) 但可能这个程序需要控制终端, 这这么办呢?
如我们的例子: 我们在linux启动时启动一个服务, 可是中间有个程序(旧的systemtap)使用了sudo
但sudo需要控制终端(当然可以通过修改sudo的配置文件, 但这样很对用户不友好啊)
例子: (setsid 启动的程序会失去控制终端)
# setsid sudo ls
sudo: sorry, you must have a tty to run sudo
(如果你的系统没有输出这句话, 那就是你的系统的sudo配置文件允许sudo可以在这个,
请确保已经设置了Defaults    requiretty)
没有控制中断的时候, 打开控制终端是这样的效果:
# setsid head -c 0 /dev/tty
head: cannot open `/dev/tty' for reading: No such device or address
为了解决这个问题, 所以应该使用能创建(伪)控制终端的程序来启动你的程序如: script, expect
如:
# setsid script -c "sudo ls" /dev/null
或:
# setsid expect -c 'spawn sudo ls; expect'
#打开控制终端成功:
# setsid script -c 'head -c 0 /dev/tty' /dev/null 
# setsid expect -c 'spawn head -c 0 /dev/tty; expect'
不过 setsid 跟 script 组合使用有着奇怪的bug, 我这段时间非常的depression,
这样对script, expect来说, 都是大材小用了

 

感觉比较有用,就拿来做个笔记,下次方便找。 ^o^

 

转载于:https://www.cnblogs.com/shijunjie/p/8799644.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值