在 NixOs 上运行非 nixos 可执行文件有哪些不同的方法?我也想看看手动方法。
如何编写一个简单的推导来打包 nix 程序以及如何创建 PR 将其包含在 nixpkgs 中?
(我写这篇文章是因为我找不到简单的解释)
在令人惊叹的nixos 中,可以启动一个轻量级容器,该容器将运行一个configuration.nix
文件与主机配置不同的系统,首先使用以下命令进行编译:
$ nixos-rebuild build-vm -I nixos-config=./configuration.nix
Run Code Online (Sandbox Code Playgroud)
并通过以下方式运行:
$ ./result/bin/run-*-vm
Run Code Online (Sandbox Code Playgroud)
但是,第一个命令无法在未安装 nixos 的操作系统上运行,例如 debian + nixpkgs,因为nixos-rebuild
不存在。
我如何仍然build-vm
在非 nixos 系统中使用?
此答案提供了在 NetworkManager 建立连接时运行脚本的解决方案。但是,我想以非 root 用户身份运行我的脚本(自动连接到某些特殊类型的热点),因为它很脏,而且我敢打赌不可能在内部进行代码注入。你知道一种~/.config/NetworkManager/dispatcher.d/
存在吗?
谢谢!
我不知道为什么,但我无法在我的 debian 稳定版上按照这些说明进行操作。安装 dropbear 和 busybox 后,我尝试运行initramfs -u
. 我在这里收到一个奇怪的警告:
# update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.9.0-4-amd64
dropbear: WARNING: Invalid authorized_keys file, remote unlocking of cryptroot via SSH won't work!
Run Code Online (Sandbox Code Playgroud)
然后,我尝试查看文件/etc/initramfs-tools/root/.ssh/id_rsa
,但root
initramfs 文件夹中没有文件夹。我也试着跑
dropbearkey -t dss -f /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
Run Code Online (Sandbox Code Playgroud)
但是没有文件夹/etc/initramfs-tools/etc/
,所以这个命令也失败了。当然,我可以创建这些文件夹,但恐怕这种奇怪的行为并非来自更深层次的错误。如果有帮助,这里是 initramfs 文件夹的内容:
me@server:/etc/initramfs-tools# ls
conf.d hooks initramfs.conf modules scripts update-initramfs.conf
Run Code Online (Sandbox Code Playgroud)
谢谢!
我在玩wget
,我基本上做了一个脚本来下载一个页面,在这个页面上grep一些信息,然后wget
根据这些信息另一个页面。所以基本上,我的代码看起来像
defautltCommand="wget -v"
formValue=$(cat myfileA.html | get_field_value )
command="${defaultCommand} --post-data=\"myfield=${formValue}\""
echo "Command 3: ${command}"
echo "${command}" | bash
Run Code Online (Sandbox Code Playgroud)
但是,这个解决方案有几个问题,主要是如果html文件有一些邪恶的值(比如" google.com; <evil command>; ls "
),那么它可能会进行代码注入。而且因为我的脚本应该作为 NetworkManager 脚本以 root 身份运行......我想确保注入代码是不可能的。但是,我喜欢编写将要使用的命令的想法,在发生错误时进行调试非常有用。
你有什么好的方法可以确保我无法获得任何代码注入?或者也许你有更好的方法来进行?我的第一个想法是像这样替换所有引用:... | sed 's/"/\\/g"'
,但我不确定我是否捕获了所有可能的注入代码的方法。
谢谢!
是否有可能(在经典的 ext4 和/或任何其他文件系统中)创建两个指向相同内容的文件,这样如果一个文件被修改,内容就会被复制并且两个文件变得不同?节省硬盘空间非常实用。
上下文:我在自己的云服务器上分享了一些沉重的视频,这些视频可以被很多人修改,因此有些人可能会修改/删除这些文件......我真的想确保我有一个备份这些文件,因此我现在需要维护两个目录,一个普通的 nextcloud 一个,一个“备份”目录,它(至少)是存储它所需的大小的两倍。
我正在考虑在 nextcloud 目录之上创建一个 git repo,当添加新视频时,它使备份过程变得更加容易(只是git add .
),但git
仍然是 blob 和工作目录之间的两倍空间。
理想情况下,可以与 git 结合使用的解决方案会很棒(即,它允许我创建视频更改的历史记录、提交、签出......而不会增加磁盘空间。
此外,我很想为各种文件系统提供解决方案(特别是如果您对不实现快照的文件系统有技巧的话)。请注意,LVM 快照并不是真正的解决方案,因为我不想备份我的完整卷,只想备份一些特定的文件/文件夹。
谢谢!