繁体   English   中英

如何在su下运行sudo?

[英]How to run sudo under su?

我有这个:

su $username -c ./script.sh

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

sudo: no tty present and no askpass program specified

如何正确执行此操作?

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

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

首先将chmod +x设置为脚本

尝试:

#!/bin/bash
echo "hello"
su - <your-user> -c /path/to/script.sh
echo "good bye"

更新:

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

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

如果用户不喜欢sudoers,请执行以下步骤:

这是您需要在/etc/sudoers

# User privilege specification
root        ALL=(ALL:ALL) ALL
newuser    ALL=(ALL:ALL) ALL

您还可以使用以下方法:如果密码具有密码,则可以通过管道传递密码:

echo "yourpassword" | sudo -S

要么

您可以运行以下脚本:

#!/usr/bin/expect -f 
spawn sudo -s <<EOF 
expect "assword for username:" 
send -- "user-password\r" 
expect eof

您也可以这样做:

sudo -kS bash - << EOF
password
whoami
echo "Not a good idea to have a password encoded in plain text"
EOF

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM