소유자/그룹이 "82"로 설정됨

소유자/그룹이 "82"로 설정됨

나는랜도간단한 개발 환경가상 램프 애플리케이션, 내 습관을 테스트하는 방법으로랜도 플러그인(지점에서 근무 console). (Lando는 Vagrant와 비슷한 목표를 가지고 로컬 개발 환경을 실행하기 위한 도구이지만 Docker Compose를 기반으로 구축되었습니다.)

때때로 - 아직 패턴을 식별하지 못했습니다 - 내 응용 프로그램 디렉토리 내에서 lando start, lando info또는 실행과 같은 lando 명령을 실행하면 해당 작업 디렉토리의 소유자와 그룹이 로 설정됩니다 . 이런 일이 발생하면 동일한 소유권/그룹이 Lando의 사용자 영역 구성 및 데이터 파일 디렉터리에도 적용됩니다. 내 컴퓨터에는 그러한 사용자나 그룹이 없습니다.lando stop~/workspace/lamp82~/.lando

~/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 $

문제 해결, v1.0

. strace​저는 stracen00b이므로 잘못하고 있을 수도 있지만 지금까지의 디버깅 기술은 다음과 같습니다.

이 도우미 스크립트를 내 경로에 넣으면 lando명령이 실패할 때까지 계속해서 명령이 실행됩니다. (아직 패턴을 인식하지 못합니다.)얼마나 오래실패하는 데 필요한 시간 또는 실패한 명령):

#!/bin/bash
set -e

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

나는 이것을 실행하고 stderr를 파일로 파이프합니다 stderr.log...

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

...이 파일을 추적하는 동안 82이나 chown다른 창에서 찾으세요.

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

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

tail놀랍게도 내 bash 스크립트가 결국 실패하고 두 디렉터리 모두에 소유권과 그룹을 설정했지만(위에서 언급한 대로) 명령은 실제로 출력을 생성하지 않았습니다(^1).

(내가 본 유일한 예외는 이 출력입니다.생각하다순수한 우연의 일치 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=9941, si_uid=1000, si_status=0, si_utime=82, si_stime=6} ---:)

bash 스크립트의 출력( lando내 Lando 플러그인의 많은 디버그 출력 포함)은 항상 다음과 같습니다.

   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

여기에는 직접적인 오류 메시지가 없으며 단지 실패하고 중지됩니다. 다시 실행 하면 다음 lando start과 같은 결과를 얻습니다.

   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)
~/.lando/config.yml참고: 이 문제는 Lando에게 다음을 통해 플러그인을 실행하라고 지시한 경우에만 발생합니다(아래 참조). 플러그인이 참조되지 않으면 bash 스크립트는 몇 시간 동안 계속 실행됩니다.

문제가 많다

추가로 디버깅하려면 어떻게 해야 합니까?straceBash 스크립트에서 호출해야 합니까? 친구 외에 이 작업을 수행할 수 있는 다른 시스템 호출이 있습니까 chown?점은 무엇인가82?

네, 82입니다.

(모든 물고기에 대해) 미리 감사드립니다.

Lando 구성 내용

이것이 얼마나 관련성이 있는지는 확실하지 않지만 다음은 내 LAMP 애플리케이션에 대한 Lando 구성입니다.

# ~/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

그리고 lando에게 내 사용자 정의 플러그인을 로드하라고 지시하는 ~/.lando/config 파일 lando-beanstalkd(위치 ~/.lando/plugins/lando-beanstalkd:

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

업데이트: v2.0 문제 해결

그래서. 줄거리가 더욱 복잡해집니다.~/.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

뭐, WTF.

어쨌든, 이것을 버리기 위해 내 플러그인 코드에는 chown, chmod또는 에 대한 참조가 없습니다. chgrp가지다Lando 자체에는 일부가 있습니다.. 처음 몇 개의 GitHub 검색 결과는 관련성이 있어 보였으므로 관련 sh스크립트(load-keys.sh 및 user-perms.sh)에 이 코드를 추가했습니다.

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

bash 스크립트를 다시 실행하면 동일한 출력이 생성됩니다. $LANDO_WEBROOT_USER또는 에 대한 언급이 없습니다 $LANDO_WEBROOT_GROUP. 그러나 이러한 스크립트는 컨테이너 내에서 실행되는 것으로 나타나므로 출력이 표시되지 않을 수 있습니다... 자세한 내용은 계속 지켜봐 주시기 바랍니다...

관련 정보