Permiso denegado para un comando apropiado

1

Estoy tratando de enumerar el contenido de toda la base de datos apropos( makewhatis) con el siguiente comando, pero sigo obteniendo Permission denied.

sudo -s apropos . > touch thedatabase

-bash: touch: Permission denied


sudo -s apropos . > thedirectory

thedatabase: Permission denied


apropos . > touch thedatabase


Todos estos resultados en alguna forma de Permission Denied. ¿Cómo puedo evitar esto o cuál es la forma más elegante de hacerlo?

inthenameofmusik
fuente
No estoy seguro de lo que está tratando de hacer, pero tengo un par de observaciones que pueden ayudar: 1) La redirección se interpreta en el shell actual, no en el shell sudo, por lo que si está en un directorio puede ' t escribir como usuario normal, eso podría causar un permiso denegado; 2) la primera palabra después de la redirección es el archivo al que se redirige, por lo que el primer ejemplo es equivalente y sudo -s apropos . thedatabase > touch, de manera similar, el último ejemplo. Tal vez solo intente apropos . >/tmp/ap.out, debería poder escribir en / tmp.
blm
@blm Primero de ustedes tenía razón, mi problema era que estaba en un directorio no autorizado. Para ser claros, ¿la redirección es >correcta? ¿Y cómo tiene sentido tu ejemplo de poner thedatabase antes > touch ? No creo tener una comprensión sólida del orden en el que pueden estar estas cosas. ¡Gracias!
inthenameofmusik
Mi ejemplo con thedatabase before> no es realmente un ejemplo, es lo que está haciendo su primer ejemplo. Mientras que las redirecciones normalmente se ponen al final de un comando, que no tienen que ser, por ejemplo, echo hello >echo.outes la forma en la que normalmente se escribe un comando hacerse eco de una línea que contiene "hola" a la echo.out archivo, pero echo >echo.out helloy >echo.out echo hellohacer lo la misma cosa. Entonces, en su primer ejemplo, el shell ve > touchy trata eso como una redirección al toque del archivo, luego, cuando ve thedatabase, se trata como un argumento de comando más.
blm
impresionante, eso tiene mucho sentido. muchas gracias.
inthenameofmusik

Respuestas:

1

No estoy seguro de cómo hacer lo que pides. Estoy investigando eso ahora, pero sé cómo solucionar los problemas de permisos que tienes con sudo.

Su sintaxis es incorrecta para sudo, la redirección de shell ">" está ocurriendo sin privilegios elevados. Intenta envolviendo citas como esta:

sudo -s 'apropos . > touch thedatabase'
zevlag
fuente