Linux shell脚本:导航到根目录
我正在编写一个简单的shell脚本,它需要root权限。使用终端如果您键入sudo su并输入密码,它肯定会工作。 我想将密码传递到脚本文件,然后将其传递到系统以成为root ex:Linux shell脚本:导航到根目录,linux,shell,scripting,debian,Linux,Shell,Scripting,Debian,我正在编写一个简单的shell脚本,它需要root权限。使用终端如果您键入sudo su并输入密码,它肯定会工作。 我想将密码传递到脚本文件,然后将其传递到系统以成为root ex: pass= $1 navigateToRoot($pass) 更好的办法是: chmod +s yourfile chown root yourfile 通过设置setuid位,文件将作为root所有者执行,而无需存储或传递root密码 确保没有其他人可以修改脚本 chmod o-w yourfile 见评论
pass= $1
navigateToRoot($pass)
更好的办法是:
chmod +s yourfile
chown root yourfile
通过设置setuid位,文件将作为root所有者执行,而无需存储或传递root密码
确保没有其他人可以修改脚本
chmod o-w yourfile
见评论:
SETUID不适用于Shell脚本,因此此答案无效。根据您对该问题的评论,我假设您确实希望以某种替代方式向用户询问密码,而不是将密码以明文形式保存在文件中 您可以使用-A标志来表示sudo。来自man sudo: 通常,如果sudo需要密码,它将从当前终端读取密码。如果指定了-A askpass选项,则可能 执行图形助手程序来读取用户的密码和密码 将密码输出到标准输出。如果SUDO_ASKPASS 如果设置了环境变量,它将指定辅助对象的路径 程序否则,由中的askpass选项指定的值 使用sudoers5
如果你想从脚本发送密码,你需要一种能够在-s上做奇怪事情的脚本语言,比如说,它基于一种我非常不喜欢的脚本语言
但是一个配置良好的sudo,或者使用较少的命令,或者可能是一个在C中非常谨慎地编码的二进制可执行文件,它是setuid并调用一些其他脚本,应该足够了…你不能。如果你可以的话,那将是一件可怕的事情。假设我想从另一个程序中读取它。从某个应用程序中获取文本框并将其传递给系统如果需要root访问权限,则说明您做得不对。您是对的,LINUX会忽略任何已解释的语言,因此这在shell脚本上不起作用。我今天学到了一些东西!setuid不能在shell脚本上工作,因为如果它能工作,会带来可怕的安全隐患。