# What you should know about omnibus packagesMost users install GitLab using our omnibus packages. As a developer it can begood to know how the omnibus packages differ from what you have on your laptopwhen you are coding.## Files are owned by root by defaultAll the files in the Rails tree (`app/`, `config/` etc.) are owned by 'root' inomnibus installations. This makes the installation simpler and it providesextra security. The omnibus reconfigure script contains commands that givewrite access to the 'git' user only where needed.For example, the 'git' user is allowed to write in the `log/` directory, in`public/uploads`, and they are allowed to rewrite the `db/schema.rb` file.In other cases, the reconfigure script tricks GitLab into not trying to write afile. For instance, GitLab will generate a `.secret` file if it cannot find oneand write it to the Rails root. In the omnibus packages, reconfigure writes the`.secret` file first, so that GitLab never tries to write it.## Code, data and logs are in separate directoriesThe omnibus design separates code (read-only, under `/opt/gitlab`) from data(read/write, under `/var/opt/gitlab`) and logs (read/write, under`/var/log/gitlab`). To make this happen the reconfigure script sets custompaths where it can in GitLab config files, and where there are no pathsettings, it uses symlinks.For example, `config/gitlab.yml` is treated as data so that file is a symlink.The same goes for `public/uploads`. The `log/` directory is replaced by omnibuswith a symlink to `/var/log/gitlab/gitlab-rails`.