dotsecrets是一个工具,可以方便地将您的dot文件存储在git中,包括那些带有私人信息的文件。在提交到存储库之前,将筛选私有信息。DotSecrets可以将您的点文件符号链接到主目录中。
dotsecrets的Python项目详细描述
点秘密
dotsecrets是olaf conradi为方便存储而编写的工具。 您在Git中的点文件,包括带有私人信息的文件。
通过将配置文件存储在公共git存储库中,您可以 在多个设备之间同步设置或与共享设置 其他。任何私人信息都保存在外部的单个文件存储中 储存库。由用户在设备之间传输此文件。
此工具在功能上与公文包类似,但不同 明显地。DotSecrets使用Git筛选来管理私有信息 并使用不同的文件层次结构和命名约定。
有关Git过滤功能的更多信息,请参见 git attributes manual在filter attribute下的effects部分中 [3] 。
通过在中组织点文件,支持符号链接和取消链接 主题(特定的主题名称作为存储库中的顶级目录)。 stow和unstow命令自动链接和取消链接它们。你决定 如何命名主题。按应用程序或设备名称,或 两者的结合。这一做法在博客文章中解释。 布兰登·因弗戈回到2012年。
安装
<>运行:$ pip3 install dotsecrets
然后,您应该在新的shell中有一个 dotsecrets 脚本可用。
直接从git存储库安装时,请使用:
$ pip3 install .
您可能需要将其符号链接到您的 ~/bin 文件夹:
$ ln -s ~/.local/bin/dotsecrets ~/bin
用法
DotSecrets将与Git一起用于管理您的点文件。
git过滤器用于清除和涂抹秘密。每个过滤器都已配置 使用按筛选器名称分组的正则表达式。过滤器被命名为 在相对于git根目录的文件路径之后。
过滤器
过滤器规则在名为 .dotfilters.yaml 的文件中定义,该文件位于 点文件存储库。
其语法如下:
version:2filters:"mutt/.mutt/muttrc":rules:passwd:description:Mutt passwordsnumbered:trueregex:password(\s*)=(\s*)(?#WSUpToHash)substitute:password\1=\2(?#Key)"irssi/.irssi/config":encoding:latin1rules:nickname:description:IRC nicknameregex:nick(\s*)=(\s*)(?#QuotedString);substitute:nick\1=\2"(?#Key)";realname:regex:real_name(\s*)=(\s*)(?#QuotedString);substitute:real_name\1=\2"(?#Key)";
此文件包含包含机密的每个文件的筛选规则。这个 第一个例子定义了一个过滤器,用于替换mutt配置中的密码 文件夹。每行匹配的正则表达式都检测到一个秘密 包含单词 密码 后跟等号和每个字符 (除空白外)最多可有一个可选的散列注释。
匹配将替换为以下内容: password=$dotsecrets:password_1$ 。 因为定义了 编号,所以键后面会附加匹配数 如 真 。这允许多个匹配和替换,只要 保留文件中的顺序。
第二个例子显示了一个过滤器,用于在irssi中隐藏您的昵称。 配置文件。编码字段将确保文件已打开 在指定的编码中(默认编码为utf-8)。正则表达式 匹配任何包含单词nick后跟空白和一个或 更多字母数字字符。火柴被 尼克="$dotsecrets: 昵称$";
类似于过滤器在同一个文件中隐藏您的真实姓名。规则的 表达式匹配任何包含 实名 后跟等号的行 签署,引用文本和最后一个分号。火柴被 实名="$dotsecrets: 实名$";
请注意,描述、编号和编码雅思是可选的。
正则表达式和替换遵循python正则表达式 语法 [7] 。替换可以使用 \number 语法。为了便于定义复杂的正则表达式, 以下快捷方式可用。它们被定义为regex注释 (?#…) :
<表> < COLGROUP > < COL/> < COL/> <广告> 快捷方式 说明 < /广告> <正文> (?)#报价字符串) 匹配平衡的单引号或双引号字符串和 能够处理 字符串 (?)#引用单字) 与引号字符串或未引号的单个单词相同 非空白字符 (?)#wsuptohash) 将空格与哈希符号匹配 (?)#wsupto分号) 将空格与分号匹配 (?)<键】 用于替换密钥 <表>秘密
机密信息,如密码、安全问题的答案和其他 敏感信息存储在名为 dotsecrets.yaml 的文件中 xdg配置目录(通常 ~/.config/dotsecrets/dotsecrets.yaml )。
其语法如下:
version:2filters:"mutt/.mutt/muttrc":secrets:password_1:description:Password for GMailsecret:s3cr3tpassword_2:description:Password for Hotmailsecret:f00bar"irssi/.irssi/config":secrets:nick:secret:mynickrealname:secret:My Real Name
此配置文件包含mutt和irssi的两个筛选器。各 筛选器包含一个或多个机密。这些秘密是用来过滤 Git存储库中敏感数据的文件。每个秘密都有一个可选的 描述字段。
链接筛选器和机密
git属性用于将文件模式链接到git过滤器。过滤器是 在git配置文件中定义。
.gittattributes的内容
* filter=dotsecrets
使用git签入文件时,将对那些 匹配 .gittattributes 中给出的模式。当签出文件时 定义一个过滤器,smudge命令将再次替换机密。
要添加这些筛选器,请运行以下命令:
$ git config filter.dotsecrets.clean "dotsecrets clean %f" $ git config filter.dotsecrets.smudge "dotsecrets smudge %f" $ git config filter.dotsecrets.required true
它们会导致您的 .git/config 文件中添加以下内容:
[filter "dotsecrets"]clean=dotsecrets clean %f smudge = dotsecrets smudge %f required = true
过滤(通常在git签入、签出或diff上)后, %f 参数替换为相对于git根目录的文件路径。 这就是为什么必须相应地命名过滤器。
初始化存储库
在重新签出dotfiles存储库时,git过滤器和git 属性配置尚未到位。 init 命令是 可用于初始化配置(需要时)并执行初始化 在定义为具有机密的文件上涂抹。
示例:
$ git clone git@github.com:username/dotfiles.git $ cd dotfiles $ dotsecrets init
收起和松开
使用stow命令,每个主题都链接到主目录中。这个 unstow命令将取消它们的链接。指定了要采取行动的主题 在命令行上。要对所有可用主题采取行动,请通过 --all 争论。添加 --干运行 以模拟将要采取的操作 不用做。
若要收起和取消收起,必须在 点筛选存储库。
示例:
$ pip3 install dotsecrets0
这将包含两个主题。
使用以下命令模拟链接mutt的操作。输出 是否需要操作列表:
$ pip3 install dotsecrets1
要从主目录中删除符号链接,请运行:
$ pip3 install dotsecrets2
添加新的点文件
为新过滤器定义正则表达式可能需要一些实践。 要测试过滤器定义,可以使用一个 test 命令:
$ pip3 install dotsecrets3
两个中间FI创建LE: config.dotclean 和 配置.dotsmudge 。显示原始源之间的差异 (包含机密)和清理后的文件(将包含 标记)。接下来,清洁后的光源被弄脏,用 秘密商店里的秘密。结果文件应与 原始源文件。如果不是这样,则显示差异。
假设机密存储中有一个输入错误:
$ pip3 install dotsecrets4
在上面的例子中,key nick被设置为myname而不是mynick 商店。执行完成后,将删除中间文件。如果 如果要保留这些文件以进行更仔细的检查,请指定 命令行上的标志。
当您对输出满意时,可以在 版本控制。提交之前将应用干净的筛选器。