57776
3年ほど運用している Ubuntu 14.04 VPS にSSH接続し、Firefox を headless で起動すると、
ExceptionHandler が表示されて落ちてしまいます。

バージョンの表示はできるのと、後述の firejail で作ったサンドボックス環境だと動作しました。

サンドボックス環境の動作状況を考えると /dev/ 配下に不要なデバイスファイルがあるのが原因ではないかと考えています。 /dev/
配下のデバイスファイルの直接操作を実施していいものか、もしくは不要なデバイスファイルの特定方法など、ご教授もらえればと思います。

**環境**

  * Ubuntu 14.04.6 LTS (GNU/Linux 2.6.32-042stab120.6 x86_64)
  * Mozilla Firefox 66.0.3 ( apt でインストール )

**エラーメッセージ**

```

    $ firefox -v
    Mozilla Firefox 66.0.3
    
    $ firefox --headless
    *** You are running in headless mode.
    ExceptionHandler::GenerateDump cloned child 16646
    ExceptionHandler::SendContinueSignalToChild sent continue signal to child
    ExceptionHandler::WaitForContinueSignal waiting for continue signal...
    $ error: XDG_RUNTIME_DIR not set in the environment.
    
```

**サンドボックス**

[firejail](https://github.com/netblue30/firejail) を git clone & make&install
して利用。

```

    $ firejail --private firefox -headless
    Reading profile /usr/local/etc/firejail/firefox.profile
    Reading profile /usr/local/etc/firejail/firefox-common.profile
    Reading profile /usr/local/etc/firejail/disable-common.inc
    Reading profile /usr/local/etc/firejail/disable-devel.inc
    Reading profile /usr/local/etc/firejail/disable-exec.inc
    Reading profile /usr/local/etc/firejail/disable-interpreters.inc
    Reading profile /usr/local/etc/firejail/disable-programs.inc
    Reading profile /usr/local/etc/firejail/whitelist-common.inc
    Reading profile /usr/local/etc/firejail/whitelist-var-common.inc
    Warning: noroot option is not available
    Parent pid 17329, child pid 17330
    prctl(PR_SET_SECCOMP): Invalid argument
    Warning: An abstract unix socket for session D-BUS might still be available. Use --net or remove unix from --protocol set.
    Warning: read-only, read-write and noexec options are not applied recursively
    Post-exec seccomp protector enabled
    prctl(PR_SET_SECCOMP): Invalid argument
    Seccomp list in: @clock,@cpu-emulation,@debug,@module,@obsolete,@raw-io,@reboot,@resources,@swap,acct,add_key,bpf,fanotify_init,io_cancel,io_destroy,io_getevents,io_setup,io_submit,ioprio_set,kcmp,keyctl,mount,name_to_handle_at,nfsservctl,ni_syscall,open_by_handle_at,personality,pivot_root,process_vm_readv,ptrace,remap_file_pages,request_key,setdomainname,sethostname,syslog,umount,umount2,userfaultfd,vhangup,vmsplice, check list: @default-keep, prelist: adjtimex,clock_adjtime,clock_settime,settimeofday,modify_ldt,lookup_dcookie,perf_event_open,process_vm_writev,delete_module,finit_module,init_module,_sysctl,afs_syscall,create_module,get_kernel_syms,getpmsg,putpmsg,query_module,security,sysfs,tuxcall,uselib,ustat,vserver,ioperm,iopl,kexec_load,reboot,set_mempolicy,migrate_pages,move_pages,mbind,swapon,swapoff,acct,add_key,fanotify_init,io_cancel,io_destroy,io_getevents,io_setup,io_submit,ioprio_set,kcmp,keyctl,mount,name_to_handle_at,nfsservctl,open_by_handle_at,personality,pivot_root,process_vm_readv,ptrace,remap_file_pages,request_key,setdomainname,sethostname,syslog,umount2,vhangup,vmsplice,
    prctl(PR_SET_SECCOMP): Invalid argument
    Child process initialized in 744.25 ms
    Warning: seccomp disabled, it requires a Linux kernel version 3.5 or newer.
    *** You are running in headless mode.
    
```

**サンドボックス パラメーター追求**

サンドボックス環境を作るパラメーターを探ると、問題箇所がわかると考え、各種設定のOn/Offを試したところ、次のパラメーター指定を外すと、サンドボックス環境でもFirefoxがエラーを表示するようになりました。

  * private-dev ([firejail パラメータ](https://firejail.wordpress.com/features-3/man-firejail/))

これを使った場合の /dev/配下が次のようになりました。

```

    $ ls /dev
    full  log  null  ptmx  pts  random  shm  tty  urandom  zero
    
```

上記を使わない場合の /dev/ 配下。

```

    $ ls /dev
    agpgart   dsp   loop0  midi0   mixer1      ptyp0  ptyp9  ram1   ram3    rmidi1     smpte3   tty3   ttyp2  ttypb
    audio     dsp1  loop1  midi00  mixer2      ptyp1  ptypa  ram10  ram4    rmidi2     sndstat  tty4   ttyp3  ttypc
    audio1    dsp2  loop2  midi01  mixer3      ptyp2  ptypb  ram11  ram5    rmidi3     stderr   tty5   ttyp4  ttypd
    audio2    dsp3  loop3  midi02  mpu401data  ptyp3  ptypc  ram12  ram6    sequencer  stdin    tty6   ttyp5  ttype
    audio3    fd    loop4  midi03  mpu401stat  ptyp4  ptypd  ram13  ram7    shm        stdout   tty7   ttyp6  ttypf
    audioctl  full  loop5  midi1   null        ptyp5  ptype  ram14  ram8    simfs      tty      tty8   ttyp7  tun
    char      kmem  loop6  midi2   port        ptyp6  ptypf  ram15  ram9    smpte0     tty0     tty9   ttyp8  urandom
    console   kmsg  loop7  midi3   ptmx        ptyp7  ram    ram16  random  smpte1     tty1     ttyp0  ttyp9  xconsole
    core      log   mem    mixer   pts         ptyp8  ram0   ram2   rmidi0  smpte2     tty2     ttyp1  ttypa  zero
    
```

差分は山のようにあったのですが、この中を眺めて思ったのは、VPSで音を鳴らすことがないのに /dev/audioctl , mixer
などのように音声系に必要そうなデバイスファイルが多数あることが気になりました。

**パッケージ**

上記のデバイスファイルを扱いそうなパッケージを探してみました。しかし、新規でたてた 14.04 と、特に違いはありませんでした
（新規でたてたUbuntu14.04 では firefox
-headlessは動作します。/dev/配下のファイルは全く異なってましたが、audio関連と思われるものはなかったです）

```

    $ dpkg -l | grep -E "sound|pulse|[sS]ound|Audio"
    ii  libasound2:amd64                 1.0.27.2-3ubuntu7                    amd64        shared library for ALSA applications
    ii  libasound2-data                  1.0.27.2-3ubuntu7                    all          Configuration files and profiles for ALSA drivers
    ii  libcanberra0:amd64               0.30-0ubuntu3                        amd64        simple abstract interface for playing event sounds
    ii  libtext-soundex-perl             3.4-1build1                          amd64        implementation of the soundex algorithm
    ii  libvorbis0a:amd64                1.3.2-1.3ubuntu1.2                   amd64        The Vorbis General Audio Compression Codec (Decoder library)
    ii  libvorbisfile3:amd64             1.3.2-1.3ubuntu1.2                   amd64        The Vorbis General Audio Compression Codec (High Level API)
    ii  sound-theme-freedesktop          0.8-1                                all          freedesktop.org sound theme
    
```

よろしくおねがいします。
CC BY-SA 4.0
2019-08-29T13:50:03.427
57698
2019-09-02T15:06:01.127
15301
question
ubuntu firefox
Firefox -headless が Ubuntu 14.04 で動作しないので /dev/配下を整理したい
自己解決したので、ご報告です。

**VPS の方式が関連してたもよう**

問題だったOSは、OpenVZのVPSを利用していました。検証のために新規でたてたVPSは、KVMでした。
そこでOpenVZ関連の情報を調べたところ、後述のサイトが見つかりました。

コメントにあった `sudo chmod 1777 /dev/shm` を試してみたところ、動作するようになりました。

比較対象

```

    #firejailの環境
    
    /dev$ ls -al shm
    合計 0
    drwxrwxrwt 2 root root  40  9月  1 00:54 .
    drwxr-xr-x 4 root root 240  9月  1 00:54 ..
    
```

コマンドを実行

```

    $ ls -al /dev/shm/
    合計 8
    drwxr-xr-x 2 root root 4096  6月  9  2012 .
    drwxr-xr-x 6 root root 4096  9月  1 00:37 ..
    $ sudo chmod 1777 /dev/shm
    $ ls -al /dev/shm/
    合計 8
    drwxrwxrwt 2 root root 4096  6月  9  2012 .
    drwxr-xr-x 6 root root 4096  9月  1 00:37 ..
    
```

結果は不要なものがあるのが原因ではなく、必要なデバイスファイルの権限が不足していたようです。

そもそも詳しくない範囲の対応なので、なぜこうなっていたかは不明ですが。。。ご共有まで。

**参考**

  * <https://github.com/travis-ci/travis-ci/issues/938>
CC BY-SA 4.0
2019-09-02T15:06:01.127
57776
2019-09-02T15:06:01.127
15301
57698
answer