From de0ad58d97d559da2faa94a0058cffd5c7b6b57f Mon Sep 17 00:00:00 2001 From: AluminumTank Date: Sat, 30 Jan 2021 17:30:41 -0500 Subject: [PATCH] add script and update readme --- README.md | 3 ++- doasedit | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100755 doasedit diff --git a/README.md b/README.md index 2f51141..df5d864 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # doasedit -a Bash script replacement for sudoedit using doas +a Bash script replacement for sudoedit using doas. +[Inspired by this Reddit comment.](https://www.reddit.com/r/linux/comments/l6y7nv/is_doas_a_good_alternative_to_sudo/gl4hs42?utm_source=share&utm_medium=web2x&context=3) diff --git a/doasedit b/doasedit new file mode 100755 index 0000000..dbac0e5 --- /dev/null +++ b/doasedit @@ -0,0 +1,27 @@ +#!/bin/sh + +destfile_pfx="$(cat /dev/urandom | tr -cd 'a-f0-9' | head -c 32)" + +while [ -d "/tmp/doasedit/$destfile_pfx" ]; do + destfile_pfx="$(cat /dev/urandom | tr -cd 'a-f0-9' | head -c 32)" +done + +mkdir -p /tmp/doasedit/$destfile_pfx +srcfile="$(realpath $1)" + +doas cp $srcfile /tmp/doasedit/$destfile_pfx/edit +doas chown -R $USER:$USER /tmp/doasedit/$destfile_pfx/edit +doas cp $srcfile /tmp/doasedit/$destfile_pfx/file + +$EDITOR /tmp/doasedit/$destfile_pfx/edit + + +cat /tmp/doasedit/$destfile_pfx/edit | doas tee /tmp/doasedit/$destfile_pfx/file 1>/dev/null + +if cmp -s "/tmp/doasedit/$destfile_pfx/file" "$srcfile"; then + echo "Skipping write; no changes." +else + doas mv -f /tmp/doasedit/$destfile_pfx/file $srcfile +fi + +rm -rf /tmp/doasedit/$destfile_pfx