# Linux SUID Sandbox Development For context see [LinuxSUIDSandbox](linux_suid_sandbox.md) We need a SUID helper binary to turn on the sandbox on Linux. In most cases, you can run `build/update-linux-sandbox.sh` and it'll install the proper sandbox for you in `/usr/local/sbin` and tell you to update your `.bashrc` if needed. ## Installation instructions for developers * If you have no setuid sandbox at all, you will see a message such as: ``` Running without the SUID sandbox! ``` * If your setuid binary is out of date, you will get messages such as: ``` The setuid sandbox provides API version X, but you need Y You are using a wrong version of the setuid binary! ``` Run the script mentioned above, or do something such as: * Build `chrome_sandbox` whenever you build chrome (`ninja -C xxx chrome chrome_sandbox` instead of `ninja -C xxx chrome`) * After building, run something similar to (or use the provided `update-linux-sandbox.sh`): ```shell # needed if you build on NFS! sudo cp out/Debug/chrome_sandbox /usr/local/sbin/chrome-devel-sandbox sudo chown root:root /usr/local/sbin/chrome-devel-sandbox sudo chmod 4755 /usr/local/sbin/chrome-devel-sandbox ``` * Put this line in your `~/.bashrc` (or `.zshenv` etc): ``` export CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox ``` ## Try bots and waterfall If you're installing a new bot, always install the setuid sandbox (the instructions are different than for developers, contact the Chrome troopers). If something does need to run without the setuid sandbox, use the `--disable-setuid-sandbox` command line flag. The `SUID` sandbox must be enabled on the try bots and the waterfall. If you don't use it locally, things might appear to work for you, but break on the bots. (Note: as a temporary, stop gap measure, setting `CHROME_DEVEL_SANDBOX` to an empty string is equivalent to `--disable-setuid-sandbox`) ## Disabling the sandbox If you are certain that you don't want the setuid sandbox, use `--disable-setuid-sandbox`. There should be very few cases like this. So if you're not absolutely sure, run with the setuid sandbox. ## Installation instructions for "[Raw builds of Chromium](https://commondatastorage.googleapis.com/chromium-browser-continuous/index.html)" If you're using a "raw" build of Chromium, do the following: sudo chown root:root chrome_sandbox && sudo chmod 4755 chrome_sandbox && \ export CHROME_DEVEL_SANDBOX="$PWD/chrome_sandbox" ./chrome You can also make such an installation more permanent by following the [steps above](#Installation-Instructions-for-developers) and installing `chrome_sandbox` to a more permanent location. ## System-wide installations of Chromium The `CHROME_DEVEL_SANDBOX` variable is intended for developers and won't work for a system-wide installation of Chromium. Package maintainers should make sure the `setuid` binary is installed and defined in GYP as `linux_sandbox_path`.