首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何运行sudo在sudo下?

如何运行sudo在sudo下?
EN

Stack Overflow用户
提问于 2014-03-03 15:59:43
回答 1查看 484关注 0票数 1

我有这个:

代码语言:javascript
复制
su $username -c ./script.sh

问题是在脚本中我有“sudo”命令,他们说我

代码语言:javascript
复制
sudo: no tty present and no askpass program specified

怎么做才对?

UPD:我需要sudo和su。我需要做的是以用户$username的身份运行脚本,并能够以root的身份在脚本中运行某些命令(例如,pacman -S)。

解决方案:在运行脚本之前,我向/etc/sudoers添加了NOPASSWD选项,并在脚本完成后使用sed删除该条目。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-03 16:13:08

首先将设置为脚本

尝试:

代码语言:javascript
复制
#!/bin/bash
echo "hello"
su - <your-user> -c /path/to/script.sh
echo "good bye"

更新:

您应该找到一种方法来强制bash使用伪tty

强制伪分配。这可以用于在远程计算机上执行基于屏幕的任意程序,这是非常有用的,例如在实现菜单服务时。多个-t选项强制分配tty,即使ssh没有本地tty。

如果用户不是sudoers,则执行以下步骤:

这就是你在/etc/sudoers中需要做的

代码语言:javascript
复制
# User privilege specification
root        ALL=(ALL:ALL) ALL
newuser    ALL=(ALL:ALL) ALL

您还可以这样做:如果密码有密码,您可以通过管道传送密码:

代码语言:javascript
复制
echo "yourpassword" | sudo -S

您可以运行以下脚本:

代码语言:javascript
复制
#!/usr/bin/expect -f 
spawn sudo -s <<EOF 
expect "assword for username:" 
send -- "user-password\r" 
expect eof

你也可以这样做:

代码语言:javascript
复制
sudo -kS bash - << EOF
password
whoami
echo "Not a good idea to have a password encoded in plain text"
EOF
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22151361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档