Como sabemos, Arch Linux es una mierda que apesta a shistemd y sudoshit. Podemos cambiar el sudo a doas, pero doas no tiene un wrapp. ah esperen.. si tiene.. pero no sirve.. da error porque no soporta opciones que solo tiene arch linux.. una vez mas mas mierda.. Y AQUI LA SOLUCION TEMPORAL doas-sudo-shim-0.1.1-3-any.pkg.tar.zst
Como reparar DOAS para que use SUDO?
PASO 1 instalar sudo porque no tenemos de otra.. incluyo base devel porque no voy listar sino que metale lo que haga falta
pacman -S opendoas sudo git base-devel
PASO 2 clonamos el repo o usamos el fork desde este .. https://github.com/jirutka/doas-sudo-shim/pull/16 yo usare el de mckaygerhard
mkdir -p /home/general/Devel && cd /home/general/Devel
git clone https://github.com/mckaygerhard/doas-sudo-shim
cd /home/general/Devel/doas-sudo-shim
git checkout fclivaz42-master
en otro caso clonar desde el pull o integrar las diferencias
PASO 3 instalar asquerosamente fuera del gestor de paquetes, no hay problema.. es un simple script pero cada vez la dependencia de sudo se actualize.. sobreescribira el script asi que resolveremos depsues..
cd /home/general/Devel/doas-sudo-shim
doas make install DESTDIR=/ PREFIX=/usr
Como hacerlo un paquete! y soporte updates?
PASO 1 instalar los requerimientos porque no tenemos de otra.. incluyo base devel porque no voy listar sino que metale lo que haga falta
pacman -S opendoas sudo git base-devel
PASO 2 clonamos el repo o usamos el fork desde este .. https://github.com/jirutka/doas-sudo-shim/pull/16 yo usare el de mckaygerhard
mkdir -p /home/general/Devel && cd /home/general/Devel
git clone https://aur.archlinux.org/doas-sudo-shim.git
cd /home/general/Devel/doas-sudo-shim
PASO 3 aqui debe editar el archivo en otro caso clonar desde el pull o integrar las diferencias
index 73b837c..6a0c9ce 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -11,9 +11,14 @@ provides=(sudo)
conflicts=(sudo)
depends=(awk doas sh)
makedepends=(asciidoctor)
-source=("$pkgname-$pkgver.tar.gz::https://github.com/jirutka/doas-sudo-shim/archive/v$pkgver.tar.gz")
+source=("$pkgname-$pkgver.tar.gz::https://github.com/jirutka/doas-sudo-shim/archive/v$pkgver.tar.gz" "doasnew.patch")
sha256sums=('795762a05ecf016d5dc5f1392b447d324380320bc913826b9ccc10ed0cefe43d')
+prepare() {
+ cd $pkgname-$pkgver
+ patch -Np1 -i ../doasnew.patch
+}
+
build() {
cd $pkgname-$pkgver
make man
Basicamente agregar antes de buil en el PKGBUILD esta funcion editando el archivo:
prepare() {
cd $pkgname-$pkgver
patch -Np1 -i ../doasnew.patch
}
PASO 4 agregar el archivo parcheado, o crearlo desde esta diferencia que agrega el soporte de "k" al sudo shim del aur:. SI NO QUIERES ESCRIBIR VISITA https://codeberg.org/venenux/archresources/issues/2 y listo
salva este contenido doasnew.patch
para que lo liste
diff -ura doas-sudo-shim-0.1.1/sudo doas-sudo-shim-0.1.2/sudo
--- doas-sudo-shim-0.1.1/sudo 2021-12-27 15:59:26.000000000 -0400
+++ doas-sudo-shim-0.1.2/sudo 2025-04-03 09:02:33.572978462 -0400
@@ -24,7 +24,7 @@
fi
# Note: "+" disables optional option parameters
-opts=$(getopt -n sudo -o +insu:h -l login,non-interactive,shell,user:,help -- "$@") || {
+opts=$(getopt -n sudo -o +insu:kh -l login,non-interactive,shell,user:,reset-timestamp,help -- "$@") || {
help >&2
exit 1
}
@@ -33,6 +33,7 @@
flag_i=
flag_n=
flag_s=
+flag_k=
user=
while [ $# -gt 0 ]; do
case "$1" in
@@ -40,6 +41,7 @@
-n | --non-interactive) flag_n='-n';;
-s | --shell) flag_s='-s';;
-u | --user) user=${2#\#}; shift;;
+ -k | --reset-timestamp) flag_k='-L';;
-h | --help) help; exit 0;;
--) shift; break;;
esac
@@ -56,8 +58,11 @@
}
user_shell() {
- shell=$(getent passwd "${user:-root}" | awk -F: '{print $NF}')
- printf '%s' "${shell:-sh}"
+ if command -v getent >/dev/null 2>&1; then
+ getent passwd "${user:-root}" | awk -F: 'END {print $NF ? $NF : "sh"}'
+ else
+ awk -F: '$1 == "'${user:-root}'" {print $NF; m=1} END {if (!m) print "sh"}' /etc/passwd
+ fi
}
export SUDO_GID=$(id -g)
@@ -67,13 +72,22 @@
if [ $# -eq 0 ]; then
if [ "$flag_i" ]; then
_doas -- "$(user_shell)" -c 'cd "$HOME"; exec "$0" -l'
+ elif [ "$flag_k" ]; then
+ exec doas $flag_k ${user:+-u "$user"}
else
_doas $flag_s
fi
+elif [ "$flag_i" ] && [ "$flag_k" ]; then
+ _doas -- "$(user_shell)" -L -l -c 'cd "$HOME"; "$0" "$@"' "$@"
+elif [ "$flag_s" ] && [ "$flag_k" ]; then
+ _doas -- "${SHELL:-$(user_shell)}" -L -c '"$0" "$@"' "$@"
elif [ "$flag_i" ]; then
_doas -- "$(user_shell)" -l -c 'cd "$HOME"; "$0" "$@"' "$@"
elif [ "$flag_s" ]; then
_doas -- "${SHELL:-$(user_shell)}" -c '"$0" "$@"' "$@"
+elif [ "$flag_k" ]; then
+ doas $flag_k ${user:+-u "$user"}
+ doas $flag_n ${user:+-u "$user"} "$@"
else
_doas -- "$@"
fi
PASO 5 despues hacer el paquete para que asi nunca el sudo sobreescriba en cada actualizacion
cd /home/general/Devel/doas-sudo-shim
makepkg -is --skipchecksums