owner / group sendo definido como '82'

3

Aqui está um verdadeiro estranho para você. : D

O problema

Estou executando um ambiente de desenvolvimento Lando em um simples aplicativo LAMP fictício , como uma forma de testar meu plug-in Lando a> (trabalhando fora da ramificação console ). (Lando é uma ferramenta para executar ambientes dev locais, com objetivos semelhantes ao Vagrant, mas construídos sobre o Docker Compose.)

De vez em quando - ainda não percebi um padrão - executar um comando lando, como lando start , lando info ou lando stop no diretório do meu aplicativo, ~/workspace/lamp , definirá o proprietário e grupo desse diretório de trabalho para 82 . Quando isso acontece, também aplica a mesma propriedade / grupo a ~/.lando , o diretório de Lando para arquivos de dados e configurações de userland. Não existe tal usuário ou grupo na minha máquina.

~/workspace/lamp $ ls -la
total 64
drwxrwxr-x  5      82      82  4096 Dec 10 19:14 .
drwxr-xr-x 36 ctamayo ctamayo  4096 Dec 13 12:11 ..
-rw-r--r--  1      82      82   289 Nov  3 17:45 composer.json
-rw-r--r--  1      82      82  4064 Nov  3 17:45 composer.lock
-rw-rw-r--  1      82      82    45 Nov  3 17:58 .env
drwxrwxr-x  8      82      82  4096 Dec 10 19:14 .git
-rw-rw-r--  1      82      82    35 Nov  3 17:46 .gitignore
-rw-rw-r--  1      82      82   284 Dec  8 16:52 .lando.yml
-rw-rw-r--  1      82      82 22770 Dec 15 09:51 stderr.log
drwxr-xr-x  5      82      82  4096 Nov  3 17:45 vendor
drwxrwxr-x  2      82      82  4096 Nov  3 18:09 www
~/workspace/lamp $ cd ~/.lando
~/.lando $ ls -la
total 52
drwxrwxr-x 10 82      82 4096 Dec  8 16:57 .
drwx------ 79 82      82 4096 Dec 15 10:49 ..
-rw-rw-r--  1 82      82  670 Dec  8 16:05 appRegistry.json
drwxrwxr-x  2 82      82 4096 Nov 27 20:53 cache
-rw-rw-r--  1 82      82  171 Dec  8 16:57 config.yml
-rw-rw-r--  1 82      82   36 Oct 24 10:59 .instance.id
drwxr-xr-x  3 82      82 4096 Oct 24 13:15 keys
drwxrwxr-x  2 82      82 4096 Oct 24 11:55 logs
drwxrwxr-x  2 82      82 4096 Dec  1 09:57 plugins
drwxrwxr-x  2 82      82 4096 Oct 24 11:04 proxy
drwxrwxr-x  3 82      82 4096 Oct 24 10:59 services
drwxrwxr-x 17 82      82 4096 Nov 21 10:38 tmp
drwxrwxr-x  2 82      82 4096 Oct 24 12:55 util
~/.lando $ sudo grep 82 /etc/passwd
~/.lando $ groups
ctamayo adm cdrom sudo dip plugdev lpadmin sambashare docker
~/.lando $ sudo groups
root
~/.lando $

Resolução de problemas, v1.0

Usando strace , tentei identificar com precisão a chamada do sistema que faz essas alterações. Eu sou um strace n00b, então posso estar fazendo errado, mas aqui está minha técnica de depuração até agora ...

Eu coloquei este script auxiliar no meu caminho que apenas executa os comandos lando várias vezes até eles falharem (eu também ainda não percebi um padrão em quanto tempo leva para falhar, ou qual comando ele falha):

#!/bin/bash
set -e

while :
do
  echo starting lando
  lando start
  echo lando info
  lando info
  echo stopping lando
  lando stop
done

Eu corro isso e canso stderr no arquivo stderr.log ...

~/workspace/lamp $ strace 2>stderr.log testlando.bash

... enquanto segue esse arquivo procurando por 82 ou chown em outra janela:

~/workspace/lamp $ tail -f tail -f stderr.log | egrep '\b82\b|chown'

# .........wait forever........

Surpreendentemente, não há literalmente nenhuma saída do comando tail (^ 1), apesar do fato de meu script bash falhar e a propriedade e o grupo serem definidos nos dois diretórios conforme descrito acima.

(A única exceção que eu vi é essa saída, que eu acho é mera coincidência: --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=9941, si_uid=1000, si_status=0, si_utime=82, si_stime=6} --- )

A saída do script bash (originado dos comandos lando dentro - incluindo toneladas de saída de depuração do meu plugin Lando) é sempre algo como:

   starting lando

   BOOMSHAKALAKA!!!

   Your app has started up correctly.
   Here are some vitals:

    NAME            lamp                                       
    LOCATION        /home/ctamayo/workspace/lamp               
    SERVICES        appserver, database, cache, queue, console 

    APPSERVER URLS  https://localhost:32788                    
                    http://localhost:32789                     
                    http://lamp.lndo.site:8000                 
                    https://lamp.lndo.site                     

    CONSOLE URLS    http://beanstalk.lamp.lndo.site:8000       
                    https://beanstalk.lamp.lndo.site           

   lando info
   beanstalkd info
   { image: 'schickling/beanstalkd:latest',
     ports: [ '11333:11300' ],
     command: 'beanstalkd -p 11300',
     entrypoint: '/lando-entrypoint.sh',
     volumes: 
      [ '$LANDO_ENGINE_SCRIPTS_DIR/lando-entrypoint.sh:/lando-entrypoint.sh',
        '$LANDO_APP_ROOT_BIND:/app',
        '$LANDO_ENGINE_HOME:/user',
        '$LANDO_ENGINE_SCRIPTS_DIR/user-perms.sh:/user-perms.sh',
        '/home/ctamayo/.lando/services/config/scripts/load-keys.sh:/scripts/load-keys.sh',
        '/home/ctamayo/.lando/services/config/helpers/mysql-import.sh:/helpers/mysql-import.sh',
        '/home/ctamayo/.lando/services/config/helpers/mysql-export.sh:/helpers/mysql-export.sh' ],
     environment: 
      { LANDO_SERVICE_NAME: 'queue',
        LANDO_SERVICE_TYPE: 'beanstalkd',
        LANDO_MOUNT: '/app',
        LANDO: 'ON',
        LANDO_HOST_OS: 'linux',
        LANDO_HOST_UID: '1000',
        LANDO_HOST_GID: '1000',
        LANDO_HOST_IP: '10.0.10.20',
        LANDO_APP_ROOT: '/home/ctamayo/workspace/lamp',
        LANDO_APP_NAME: 'lamp',
        LANDO_WEBROOT_USER: 'www-data',            '$LANDO_ENGINE_SCRIPTS_DIR/user-perms.sh:/user-perms.sh',
        '/home/ctamayo/.lando/services/config/scripts/load-keys.sh:/scripts/load-keys.sh',
        '/home/ctamayo/.lando/services/config/helpers/mysql-import.sh:/helpers/mysql-import.sh',
        '/home/ctamayo/.lando/services/config/helpers/mysql-export.sh:/helpers/mysql-export.sh' ],
     environment: 
      { LANDO_SERVICE_NAME: 'console',
        LANDO_SERVICE_TYPE: 'beanstalkd_console',
        LANDO_MOUNT: '/app',
        LANDO: 'ON',
        LANDO_HOST_OS: 'linux',
        LANDO_HOST_UID: '1000',
        LANDO_HOST_GID: '1000',
        LANDO_HOST_IP: '10.0.10.20',
        LANDO_APP_ROOT: '/home/ctamayo/workspace/lamp',
        LANDO_APP_NAME: 'lamp',
        LANDO_WEBROOT_USER: 'www-data',
        LANDO_WEBROOT_GROUP: 'www-data',
        LANDO_WEBROOT_UID: '33',
        LANDO_WEBROOT_GID: '33',
        LANDO_LOAD_PP_KEYS: 'false',
        COLUMNS: 256,
        FOO: 'barrrrr',
        REDIS_HOST: 'cache',
        REDIS_PORT: '6379' },
     labels: { 'io.lando.container': 'TRUE' },
        LANDO_WEBROOT_GROUP: 'www-data',
        LANDO_WEBROOT_UID: '33',
        LANDO_WEBROOT_GID: '33',
        LANDO_LOAD_PP_KEYS: 'false',
        COLUMNS: 256,
        FOO: 'barrrrr',
        REDIS_HOST: 'cache',
        REDIS_PORT: '6379' },
     labels: { 'io.lando.container': 'TRUE' },
     type: 'beanstalkd',
     portforward: 11333,
     _app: 'lamp',
     _root: '/home/ctamayo/workspace/lamp',
     _mount: '/app',
     version: 'latest' }
   console info
   { image: 'schickling/beanstalkd-console:latest',
     ports: [ 2080 ],
     command: 'php -S 0.0.0.0:2080 -t /source/public',
     entrypoint: '/lando-entrypoint.sh',
     volumes: 
      [ '$LANDO_ENGINE_SCRIPTS_DIR/lando-entrypoint.sh:/lando-entrypoint.sh',
        '$LANDO_APP_ROOT_BIND:/app',
        '$LANDO_ENGINE_HOME:/user',
        '$LANDO_ENGINE_SCRIPTS_DIR/user-perms.sh:/user-perms.sh',
        '/home/ctamayo/.lando/services/config/scripts/load-keys.sh:/scripts/load-keys.sh',
        '/home/ctamayo/.lando/services/config/helpers/mysql-import.sh:/helpers/mysql-import.sh',
        '/home/ctamayo/.lando/services/config/helpers/mysql-export.sh:/helpers/mysql-export.sh' ],
     environment: 
      { LANDO_SERVICE_NAME: 'console',
        LANDO_SERVICE_TYPE: 'beanstalkd_console',
        LANDO_MOUNT: '/app',
        LANDO: 'ON',
        LANDO_HOST_OS: 'linux',
        LANDO_HOST_UID: '1000',
        LANDO_HOST_GID: '1000',
        LANDO_HOST_IP: '10.0.10.20',
        LANDO_APP_ROOT: '/home/ctamayo/workspace/lamp',
        LANDO_APP_NAME: 'lamp',
        LANDO_WEBROOT_USER: 'www-data',
        LANDO_WEBROOT_GROUP: 'www-data',
        LANDO_WEBROOT_UID: '33',
        LANDO_WEBROOT_GID: '33',
        LANDO_LOAD_PP_KEYS: 'false',
        COLUMNS: 256,
        FOO: 'barrrrr',
        REDIS_HOST: 'cache',
        REDIS_PORT: '6379' },
     labels: { 'io.lando.container': 'TRUE' },
     type: 'beanstalkd_console',
     _app: 'lamp',
     _root: '/home/ctamayo/workspace/lamp',
     _mount: '/app',
     version: 'latest' }
   undefined
   {
     "appserver": {
       "type": "php",
       "version": "7.1",
       "via": "apache",
       "webroot": "www",
       "urls": [
         "https://localhost:32788",
         "http://localhost:32789",
         "http://lamp.lndo.site:8000",
         "https://lamp.lndo.site"
       ]
     },
     "database": {
       "type": "mysql",
       "version": "latest",
       "creds": {
         "user": "lamp",
         "password": "lamp",
         "database": "lamp"
       },
       "internal_connection": {
         "host": "database",
         "port": 3306
       },
       "external_connection": {
         "host": "localhost",
         "port": "32773"
       }
     },
     "cache": {
       "type": "redis",
       "version": "latest",
       "internal_connection": {
         "host": "cache",
         "port": 6379
       },
       "external_connection": {
         "host": "localhost",
         "port": "not forwarded"
       }
     },
     "queue": {
       "type": "beanstalkd",
       "version": "latest",
       "internal_connection": {
         "host": "queue",
         "port": 11300
       },
       "external_connection": {
         "host": "localhost",
         "port": "11333"
       }
     },
     "console": {
       "type": "beanstalkd_console",
       "version": "latest",
       "internal_connection": {
         "host": "console",
         "port": 2080
       },
       "external_connection": {
         "host": "localhost",
         "port": 2080
       },
       "urls": [
         "http://beanstalk.lamp.lndo.site:8000",
         "https://beanstalk.lamp.lndo.site"
       ]
     }
   }
   stopping lando
   App stopped!
   starting lando

   BOOMSHAKALAKA!!!

   Your app has started up correctly.
   Here are some vitals:

    NAME            lamp                                       
    LOCATION        /home/ctamayo/workspace/lamp               
    SERVICES        appserver, database, cache, queue, console 

    APPSERVER URLS  https://localhost:32797                    
                    http://localhost:32798                     
                    http://lamp.lndo.site:8000                 
                    https://lamp.lndo.site                     

    CONSOLE URLS    http://beanstalk.lamp.lndo.site:8000       
                    https://beanstalk.lamp.lndo.site           

   lando info

Nenhuma mensagem de erro diretamente aqui, apenas falha e pára. Quando eu executo lando start de novo, recebo:

   error:  Error: EACCES: permission denied, open '/home/ctamayo/.lando/services/config/scripts/add-cert.sh'
       at Error (native)
       at Object.fs.openSync (fs.js:642:18)
       at copyFileSync (/usr/lib/lando/node_modules/fs-extra/lib/copy.js:16:16)
       at copySync (/usr/lib/lando/node_modules/fs-extra/lib/copy.js:85:7)
       at /usr/lib/lando/node_modules/fs-extra/lib/copy.js:91:7
       at Array.forEach (native)
       at Object.copySync (/usr/lib/lando/node_modules/fs-extra/lib/copy.js:90:14)
       at moveConfig (/usr/lib/lando/plugins/lando-services/lib/services.js:65:10)
       at module.exports (/usr/lib/lando/plugins/lando-services/lib/services.js:134:16)
       at AsyncEvents.<anonymous> (/usr/lib/lando/plugins/lando-services/lib/bootstrap.js:21:43)
       at AsyncEvents.handle (/usr/lib/lando/lib/events.js:109:19)
       at /usr/lib/lando/lib/events.js:170:19
       at tryCatcher (/usr/lib/lando/node_modules/bluebird/js/release/util.js:16:23)
       at Object.gotValue (/usr/lib/lando/node_modules/bluebird/js/release/reduce.js:155:18)
       at Object.gotAccum (/usr/lib/lando/node_modules/bluebird/js/release/reduce.js:144:25)
       at Object.tryCatcher (/usr/lib/lando/node_modules/bluebird/js/release/util.js:16:23)
       at Promise._settlePromiseFromHandler (/usr/lib/lando/node_modules/bluebird/js/release/promise.js:512:31)
       at Promise._settlePromise (/usr/lib/lando/node_modules/bluebird/js/release/promise.js:569:18)
       at Promise._settlePromise0 (/usr/lib/lando/node_modules/bluebird/js/release/promise.js:614:10)
       at Promise._settlePromises (/usr/lib/lando/node_modules/bluebird/js/release/promise.js:693:18)
       at Async._drainQueue (/usr/lib/lando/node_modules/bluebird/js/release/async.js:133:16)
       at Async._drainQueues (/usr/lib/lando/node_modules/bluebird/js/release/async.js:143:10)
NOTA: Isso só acontece quando digo ao Lando para executar o plugin via ~/.lando/config.yml (veja abaixo). Sem esse plugin referenciado, o script bash é executado por horas sem parar.

Perguntas são abundantes

Como faço para depurar mais coisas? Preciso chamar strace do meu script bash? Existe alguma outra chamada de sistema além de chown e amigos que possam estar fazendo isso? E qual é o significado de 82 ?

Obrigado antecipadamente (por todos os peixes).

Lando config stuff

Não tenho certeza de quão relevante isso vai acabar sendo, mas aqui está a configuração de Lando do meu aplicativo LAMP:

# ~/workspace/lamp/.lando.yml
name: lamp
recipe: lamp
config:
  webroot: www
services:
  cache:
    type: redis
    persist: true
  queue:
    type: beanstalkd
    portforward: 11333
  console:
    type: beanstalkd_console
proxy:
  console:
    - beanstalk.lamp.lndo.site
tooling:
  redis-cli:
    service: cache

E meu arquivo ~ / .lando / config, que diz ao lando para carregar o meu plugin personalizado lando-beanstalkd (que vive em ~/.lando/plugins/lando-beanstalkd ):

plugins:
  - lando-core
  - lando-events
  - lando-proxy
  - lando-recipes
  - lando-services
  - lando-tooling
  - lando-beanstalkd
logLevelConsole: warn
logLevel: debug

UPDATE: resolução de problemas v2.0

O enredo engrossa. Ele também está mudando a propriedade do meu diretório ~/.ssh .

total 44
drwxr-xr-x  2      82      82  4096 Nov 28 14:40 .
drwx------ 79 ctamayo ctamayo  4096 Dec 15 15:06 ..
-rw-------  1      82      82   472 Nov 28 14:40 config
-rw-------  1      82      82  1766 Jun 19 13:20 id_rsa
-rw-r--r--  1      82      82   410 Jun 19 13:20 id_rsa.pub
-rw-r--r--  1      82      82 14600 Nov 28 14:40 known_hosts
-rwx------  1      82      82  3239 Oct 24 12:31 lando_rsa
-rw-r--r--  1      82      82   750 Oct 24 12:31 lando_rsa.pub

Como, WTF.

De qualquer forma, apenas para divulgar isso, não há referências a chown , chmod ou chgrp no código do meu plug-in. Existem alguns alguns no próprio Lando . Aqueles primeiros resultados de pesquisa do GitHub pareceram relevantes, então eu adicionei este código ao sh scripts (load-keys.sh e user-perms.sh) em questão:

if [ $LANDO_WEBROOT_USER = 82 ]; then
  echo '$LANDO_WEBROOT_USER is 82! Bailing...'
  exit 1
fi

if [ $LANDO_WEBROOT_GROUP = 82 ]; then
  echo '$LANDO_WEBROOT_GROUP is 82! Bailing...'
  exit 1
fi

Executar meu script bash novamente produz a mesma saída. Nenhuma menção de $LANDO_WEBROOT_USER ou $LANDO_WEBROOT_GROUP . Esses scripts parecem rodar dentro de um contêiner, portanto, sua saída pode ser suprimida ... fique ligado para mais ...

    
por acobster 15.12.2017 / 23:10

0 respostas