Dar permisos de usuario a los archivos

Dar permisos de usuario a los archivos

Me está costando resolver este problema.

escriba un script de shell para verificar los derechos ejecutables de todos los archivos en el directorio actual. Si el archivo no tiene el derecho de ejecutable del usuario, conviértalo en ejecutable del usuario.

Estaba pensando en hacer un bucle en todos los archivos en el directorio actual y escribir el resultado en un archivo de texto. luego lea el cuarto carácter de cada línea y verifique si es 'x' o '-'

Respuesta1

La idea que tienes parece legítima pero innecesariamente grande y compleja; mejor puedes usar esto:

#!/bin/bash
for file in *; do
    [[ -x $file ]] || chmod u+x "$file"
done
  • Esto leerá todos los archivos ( *) en el directorio actual.

  • Luego comprobará si el archivo es ejecutable por el usuario que ejecuta el script ( [[ -x $file ]])

  • Si no ( ||), el archivo será ejecutable para el usuario ( chmod u+x "$file").

De forma predeterminada, *no coincidirá con archivos ocultos; para coincidir con archivos ocultos, agregue también la línea

shopt -s dotglob

después de la línea shebang.

Si desea buscar y operar únicamente con archivos normales:

#!/bin/bash
for file in *; do
    if [[ -f $file ]]; then
        [[ -x $file ]] || chmod u+x "$file"
    fi
done

Respuesta2

Es un findcomando simple con chmod:

find . -type f ! -perm -u+x -exec chmod u+x {} \;

o sólo para la carpeta actual:

find . -maxdepth 1 -type f ! -perm -u+x -exec chmod u+x {} \;

Explicación

  • .

    Iniciar la búsqueda en la carpeta actual

  • -maxdepth

    No recursivo

  • -type f

    Sólo archivos, no carpetas

  • ! -perm -u+x

    Sólo archivos sin el indicador ejecutable para el propietario del archivo

  • -exec chmod u+x {}

    Establecer el indicador ejecutable para el propietario del archivo

Respuesta3

Ojalá hubieras mencionado si es parte de un proyecto de automatización más grande o simplemente algo que quieres hacer.

Simplemente puede hacer lo siguiente en un directorio:

chmod u+x *

Esto agrega estado ejecutable a todos los archivos dentro de una carpeta para "tu usuario". Puedes intentar agregarlo para "todos" por

chmod a+x *

Tenga en cuenta que su usuario debe tener permiso para cambiar archivos dentro de esa carpeta específica. Significa que deberías tener 'escribir' permiso. De lo contrario, no podrás cambiar nada. Si tu usuario es administrador, puedes invocarlo con el sudocomando:

sudo chmod a+x *

Si un archivo ya tiene el estado ejecutable, no hay nada de malo en darle el estado nuevamente. Por supuesto, como dije, a menos que desee utilizar el nombre de todos los archivos cuyo estado se cambia para otro propósito, por ejemplo, informes. El guión de heemayl es bueno para tales propósitos.


Añadido de los comentarios de Mostafa Najafiyazdi.

[..] si no quiere tocar el permiso de carpetas que no tienen permiso ejecutable, no debería usar chmod u+x *[..]

información relacionada