shell脚本:导航到root

发布于 2024-12-20 23:06:42 字数 161 浏览 1 评论 0原文

我正在编写一个简单的 shell 脚本,需要 root 权限。使用终端,如果您输入 sudo su 并写入密码,它肯定可以工作。 我想将密码传递给脚本文件,然后将其传递给系统成为root ex:

pass= $1
navigateToRoot($pass)

I am writing a simple shell script which requires a root privilege. Using the terminal if you type sudo su and you write the password it works definitely.
I want to pass the password to the script file and then pass it to the system to become root ex:

pass= $1
navigateToRoot($pass)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

雄赳赳气昂昂 2024-12-27 23:06:42

更好的方法是:

chmod +s yourfile
chown root yourfile

通过设置 setuid 位,该文件将以 root(所有者)身份执行,而无需存储或传递 root 密码。

确保没有其他人可以修改脚本

chmod o-w yourfile

请参阅评论:

SETUID 不适用于 Shell 脚本,因此此答案无效。

A better approach would be to :

chmod +s yourfile
chown root yourfile

By setting the setuid bit, the file will execute as root (owner) without having to store or pass the root password.

Make sure nobody else can modify the script

chmod o-w yourfile

SEE COMMENTS:

SETUID does not work on Shell scripts so this answer is INVALID.

甚是思念 2024-12-27 23:06:42

根据您对问题的评论,我假设您实际上想以某种替代方式向用户询问密码,而不是将密码以明文形式保存在文件中。

您可以使用 -A 标志来 sudo。来自 man sudo

通常,如果 sudo 需要密码,它会从当前终端读取密码。如果指定了 -A (askpass) 选项,则 (可能
图形)执行帮助程序来读取用户的密码并
将密码输出到标准输出。如果 SUDO_ASKPASS
设置环境变量,它指定助手的路径
程序。否则,askpass 选项指定的值
使用 sudoers(5)。

Based on your comment on the question, I'm assuming you actually want to ask the user for a password in some alternate way, rather than having your password in clear text in a file.

You can use the -A flag to sudo. From man sudo:

Normally, if sudo requires a password, it will read it from the current terminal. If the -A (askpass) option is specified, a (possibly
graphical) helper program is executed to read the user's password and
output the password to the standard output. If the SUDO_ASKPASS
environment variable is set, it specifies the path to the helper
program. Otherwise, the value specified by the askpass option in
sudoers(5) is used.

玩世 2024-12-27 23:06:42

如果您想从脚本发送密码,则需要一种能够在 tty-s,例如 expect (基于 tcl,一种我非常不喜欢的脚本语言)。

但是配置良好的sudo,或者较少使用的super命令,或者可能是一个二进制可执行文件(在 C 中非常谨慎地编码),它是 setuid 并调用一些其他脚本,应该足够了......

If you want to send a password from a script, you need a scripting language able to do weird things on tty-s, like e.g. expect (which is based upon tcl, a scripting language that I strongly dislike).

But a well configured sudo, or the less used super command, or perhaps a binary executable (coded with great caution in C) which is setuid and invokes some other script, should be enough...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文