所有者/グループが「82」に設定されている

所有者/グループが「82」に設定されている

ランド簡単な開発環境仮想ランプアプリケーション、私の習慣をテストする方法としてランドプラグイン(支店で働くconsole)。 (LandoはVagrantと同様の目標を持ってローカル開発環境を実行するためのツールですが、Docker Composeに基づいて構築されました。)

時々 - まだパターンを識別できませんでした - 私のアプリケーションディレクトリ内でlando startlando 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アプリケーションのランド構成です。

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

とにかく、これを捨てるために私のプラグインコードにはchownchmodまたはへの参照がありません。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。ただし、これらのスクリプトはコンテナ内で実行されているように見えるため、出力が表示されない可能性があります...詳細については、ご覧ください。

関連情報