Estaba tratando de hacerlo por chowndentro /opty, por alguna razón, chownsalté a los padres y me di todo.
¿Alguien puede sugerir por qué / cómo podría suceder esto y cómo evitar hacerlo en el futuro? Es un poco preocupante que ejecutar un comando en un directorio dado pueda saltar y ejecutarlo en el directorio raíz.
ubuntu: /opt > sudo chown -R root:www-data .*
chown: changing ownership of '../var/lib/lxcfs/proc/cpuinfo': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/meminfo': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/stat': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/uptime': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/diskstats': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/swaps': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/devices': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/blkio': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/hugetlb': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/rdma': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/pids': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/freezer': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/cpuset': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/memory': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/perf_event': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/cpu,cpuacct': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/net_cls,net_prio': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/name=systemd': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/unified': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs': No such file or directory
^C
:ubuntu: /opt >
                    
                        permissions
                                chown
                                
                    
                    
                        Duque dugal
fuente
                
                fuente

sudo chown -R root:wwwdata /optsegún el diálogo --help ... ¿quizás el uso de esa tubería causó algún problema?.*coincide..(el directorio padre, que es/) - consulte ¿Los directorios padres chmod “.. chmod 777. * -R” (..)?cdir al directorio raíz y omitir leaing /, o iniciar el comando con(, lo que significa que el comando no se ejecutará hasta que)se escriba la coincidencia , dando la oportunidad de presionar Ctrl-C y rescatar de un error grave (comorm -rf /tmp/foo-installpresionar Enter en lugar de T).Respuestas:
Esto sucedió porque usaste:
cuando deberías haber usado esto en su lugar:
Primero,
-Res recursivo para todos los directorios bajo el directorio de destino.Además,
*coincidirá con todos los archivos y directorios del directorio actual. A continuación,.*coincidirá con todos los archivos y directorios un nivel por encima del directorio actual.Para evitar esto en el futuro, puede usar el
lscomando para verificar la ruta antes de ejecutar elchowncomando como en estos ejemplos:Otra forma de evitar esto es utilizar siempre la ruta completa al directorio en el que desea ejecutar un comando.
Aquí hay un ejemplo:
Editar:
Puede usar el siguiente comando para
chmodtodos los archivos o directorios ocultos directamente debajo/opt(suponiendo que el primer carácter después del.que los oculta es una letra, un número, un guión o un guión bajo que debería ser verdadero para la mayoría de los archivos).Puede verificar qué archivos esto
chmodejecutará ejecutando el siguiente comando:La primera parte del comando :
for i in /opt/.[A-Za-z0-9-_]*dice que, para todos los resultados del globo,/opt/.[A-Za-z0-9-_]*asigne cada resultado a la variable "i".El glob aquí dice que el primer carácter debe ser
.y que el siguiente carácter[A-Za-z0-9-_]debe ser cualquier carácter que sea AZ o az o cualquier número 0-9 o a-o a_.Esto excluirá los resultados
.y..que representan el directorio actual y el directorio sobre el directorio actual y solo incluirá archivos y directorios ocultos.La segunda parte del comando :
do sudo chmod root:www-data "/opt/$i"dice ejecutar el comando para todas las variables que coinciden con el valor actual de$i.La tercera parte del comando :
donedice que he terminado.Además, usó la
-Ropción conchmody la-Ropción es recursiva y se aplicará a todos los directorios y archivos.Cuando solo usa el
chmodcomando sin opciones, el comando solo se aplicará al archivo o directorio específico que le proporcionó y no se aplicará recursivamente a los directorios.fuente
lssalida y es muy lenta mientras se usa la respuestafind.**, e incluso eso tiene que habilitarse explícitamente. En mi humilde opinión, debe ser más claro sobre el papel de-R. (2) Se recomienda a las personas que eviten el uso de plain*porque puede coincidir con nombres de archivos que comienzan con-, que luego se interpretarán como opciones. debería proteger contra eso, pero no estoy seguro de que todos los comandos honren esa convención. ... (Continúa)command-- **,./*e incluso/opt/*no pueden encontrar "archivos de puntos" (.*) a menos que ladotglobopción esté configurada. Como dicen Joshua Besneatte e ilkkachu ,chown -R /optychown -R .están mejor. ... (Continúa)El shell glob
.*coincide..(el directorio padre) en este caso, lamentablemente, eso es/:Para una discusión adicional ver:
fuente
Sus problemas llegaron porque
.*coincide con todo lo que comienza con un punto. El contexto es el directorio actual, ya que esta expresión no incluye una ruta. Entonces, si hay archivos o carpetas ocultos como.giten el directorio actual, los emparejará. Pero (como verá al ejecutarls -aen esa carpeta), también coincidirá.y..Y
.., por supuesto, es el directorio principal, por lo que sechmod -Rdirigió recursivamente a todo el directorio principal.fuente
/opt/.*no ayudaría,/opt/..es la misma que..con CWD =/opt..tenía la intención de usarse como contexto, pero no funcionó de esa manera debido a la barra oblicua perdida ...