to reduce the risk of a vulnerability or misconfiguration allowing privilege escalation, many programs have been written or adapted to make use of privilege separation, privilege revocation and chrooting. privilege separation is a technique, pioneered on openbsd and inspired by the principle of least privilege, where a program is split into two or more parts, one of which performs privileged operations and the other—almost always the bulk of the code—runs without privilege. privilege revocation is similar and involves a program performing any necessary operations with the privileges it starts with then dropping them. chrooting involves restricting an application to one section of the file system, prohibiting it from accessing areas that contain private or system files. developers have applied these enhancements to openbsd versions of many common applications, such as tcpdump, file, tmux, smtpd, and syslogd.