【发布时间】:2021-04-09 15:43:55
【问题描述】:
我使用标准 POSIX 实用程序 cp、install、sed、sh 安装文件。
可以使用chmod / chown / chgrp 修复任何权限,但暂时暴露敏感数据并稍后修复是很危险的。
“标准”处理问题的方式是使用install -m MODE -u USER -g GRP。
如果我需要使用“哑”实用程序(如 grep / sed / awk / sh )处理文件怎么办?如何防止此类工具泄露数据?通过使用umask 777?
我认为以下危险:
base64 -d secret.txt >/etc/app.key
sed -e '/^#.*/d' </etc/default/app.cfg >/etc/app.cfg
因为如果umask 太开放,其他用户可能可以访问文件内容。我还必须在重定向后“修复”用户/组...
PS似乎install不在POSIX中...https://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html
另外 GNU install 不从管道读取,所以下面的技巧是不可能的:
sed ... < $SRC | install -m MODE -u USER -g GRP - $DEST
某些 shell 允许进程替换(<(cmd) 语法)或者创建命名管道作为解决方法...
【问题讨论】:
-
这可能是姐妹网站unix.stackexchange.com
-
这里只是一个家庭用户,但我会使用超级用户权限在目的地安装一个空文件,在文件中没有敏感数据的情况下执行必要的 chown/chgrp/chmod 命令,然后根据需要编写文件。只有具有写入权限的用户/组才能更新文件,只有具有读取权限的用户/组才能看到内容。如果你有一组,比如说,20 个文件都需要相同的权限(例如,所有 0700 权限,即使所有者/组不同),这就是 umask 命令特别有用的地方,允许你使用 1 个 umask 调用来代替20 次 chmod 调用
标签: installation sh posix file-permissions umask