Ir al contenido principal

doas - sudo - and doas-sudo-shim support for makepkg in arch


 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


El paquete esta aqui directo: A SOLUCION TEMPORAL doas-sudo-shim-0.1.1-3-any.pkg.tar.zst pero PORQUE? facil puedes seguir leyendo y ver como se soluciona de otra forma...

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

NOTA IMPORTANTE este metodo es facil pero en cada actualizacion el sudo script sera sobreescrito debido a que el pauqete sudo estara siendo actualizado.. el siguiente metodo ayuda a que esto no suceda.. 

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


Articulos mas leidos aqui:

informandose de arch vs lo que se de debian

  Lo primero es informarme, si vale la pena, ya que yo analize que a mayor lineas de codigo y features mayor necesidad de computo.. asi que como arch es siempre lo ultimo de la moda debo ver si vale la pena ya que el equipo adquirido es un DELL Optiplex 5050 de 7ma ..

Arch linux instalado, apreciaciones y analisis inicial

  Después de sufrir con el instalador mas miserable de el planeta (incluso el de Alpine linux que esta atrasado en una era moderna de interfaces graficas es mucho mas moderno que este) .. el sistema instalo correctamente (habia fallado solo porque el json generado esta mal formateado, ver dos artículos atras) Hoy veremos que trae de bueno.. (que solo fue una sola cosa) después de tener el escritorio trabando decente (ver articulo anterior)

Instalando ARCH linux parte 2 - preparando el disco duro

  En este post vamos a preparar todo antes de instalar , porque hay operaciones que solo se pueden hacer antes de tener datos importantes en el pc!  Ejemplo, las particiones, o el tamaño de sector, o el tipo de sistemas de ficheros!  OJO leer la entrada anterior sobe los discos NVME! aquí yo asumo un disco NVME M.2 2280 PCIe x4 es decir el mas rápido, no discos mixtos SATA+NVME

instalando Archlinux parte 4 - el error de efi y el siglo pasado

  La cagada esta hecha para disociados sociales que solo ven el monitor y no tienen vida sexual fallo por un misero detalle, no se especifico la particion porque solo se le indica es ESP (EFI).. 

Instalando Debian o Arch - parte 1 - preparando la PC en el BIOS - UEFI

 Esto es un tema extenso.. y depende de el computador.. ...yo como mencione usare un DELL Optiplex 5050 así que diré como debe estar el BIOS/UEFI para que pueda instalarse ARCHlinux . (en realidad cualquier Linux desde el 2018 donde Grub soporta ESTABLE (y no solo solo por poder hacerlo) la especificación UEFI .