sme*_*eeb 3 linux shell sudo vagrant
我正在尝试构建一个由 shell 脚本配置的 Vagrant box (CentOS) install.sh。该脚本将执行几件事,其中第一件事涉及在其下创建正确的目录结构,/opt以便我的服务可以安装在那里并执行其他操作,例如在那里写入日志。
所以我的 Vagrant 项目(到目前为止)包括:
my-app-vagrant/
Vagrantfile
install.sh
Run Code Online (Sandbox Code Playgroud)
看起来像install.sh:
mkdir /opt/myapp
mkdir /opt/myapp/bin # Where we will install binary to (later in this script)
mkdir /opt/myapp/logs # Where the binary will write logs to
Run Code Online (Sandbox Code Playgroud)
现在,二进制文件不需要提升权限即可运行(它是通过命令行参数配置的,以写入日志)。不过,我只是希望它位于/opt上述目录结构下,至少对于这台特定的机器来说是这样。
问题是它的/opt所有者是root. 这意味着我需要使用 运行它们mkdirs,为sudo脚本提供密码sudo,然后调整目录权限,以便当应用程序运行时,它有权运行并将日志写入我的预期目的地(同样是/opt/myapp/logs)。所以我调整了一下install.sh,看起来像这样:
mkdir /opt/myapp
mkdir /opt/myapp/bin
mkdir /opt/myapp/logs
chmod -R 777 /opt/myapp # Now when the app runs as a normal non-privileged user, we can run + write logs
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过echo <rootPswd> | sudo -S sh install.sh(<rootPswd>正确的根密码在哪里)向脚本提供密码。
现在我试图弄清楚如何在 Vagrant 配置 VM 时使其正常运行/工作。
我的 Vagrant 文件如下所示:
Vagrant.configure(2) do |config|
config.vm.provision "shell", path: "install.sh"
config.vm.box = "centos7"
config.vm.box_url = "https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box"
config.vm.network "private_network", ip: "10.0.1.2"
config.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
end
end
Run Code Online (Sandbox Code Playgroud)
但我坚持的是:如何将整个“ echo <rootPswd> | sudo -S sh install.sh”概念扩展到 Vagrant?根据他们的文档,有一个privileged我可以使用的选项,但true无论如何它都是默认设置的。
但他们的文档中没有任何地方解释如何/在哪里提供sudo应该使用的密码(至少从我到目前为止所能找到的来看)。
所以我问:
sudo为 Vagrant VM 的 shell 配置程序的安装脚本提供密码?和sudo即使我尝试使用基本 Vagrant 盒子,我在哪里可以找到密码?事实证明(对于几乎所有Vagrant 盒子)vagrant用户都被列在/etc/sudoers具有ALL=(ALL) NOPASSWD:ALL权限的列表中,这指示 Linux永远不要要求该用户提供“sudo 密码”。
因此,您不需要向privileged用户提供 sudo 密码。
| 归档时间: |
|
| 查看次数: |
2003 次 |
| 最近记录: |