Contact
This is a small, single-purpose site run by one person. There is no support queue and no ticket system — but corrections are genuinely wanted, because the whole value proposition here is that the numbers and the quoted strings are right.
Reporting a factual error
The most useful reports are the specific ones. If you can include these four things, a fix takes minutes instead of an afternoon:
- The page and the exact sentence or table cell.
- What you believe the correct value is.
- Where you got it — ideally a link to the same kind of source this site uses: a line in a project's source tree, or a section of a published standard.
- If it is behavioural, the command you ran and what it printed, including the OS and the version of the program.
Reports of the form "your table is wrong about SSH" without a mask or a file reference are hard to act on, because the SSH rules genuinely differ between the client and the server and between the key and the directory — that difference is the point of the SSH page, and most disagreements about it turn out to be two people quoting two different correct rules.
Things that are not errors
- A mode that works on your system but that a table says a program rejects.
Several checks are conditional: cron's mode test is skipped under
PermitAnyCrontab, and sshd's checks are skipped whenStrictModes nois set. Each row names its condition. - A distribution default that differs from a value here. This site deliberately makes no claims about what any distribution ships, because those change and were not verified.
- An ACL or SELinux behaviour. Out of scope, and stated as such on the about page.
What gets fixed fastest
Not all reports are equal, and it is worth saying which ones move first, because the ranking follows directly from how the site is built, with convenience playing no part in it.
A misquoted string is the highest priority. The error index claims that every message is copied character for character out of the source file it names. If one is not — a word changed, a format specifier wrong, a function attributed to the wrong file — then the central promise of the site is false for that row, and it gets corrected the same day. These are also the easiest reports to act on, because the fix is a diff against a file that is one click away.
A wrong mask is next. Each rule in the index carries the guard from its source — quoted verbatim where one expression guards the message, described where it is a branch instead — together with a JavaScript predicate for the mode rule it encodes, and the test suite checks the two agree on all 4096 modes. That catches a mistranslation but it cannot catch a mask that was read wrongly in the first place, because both halves would then be wrong in the same way. If you know a check uses a different mask than the one printed here, that is a defect the build cannot detect on its own and the report is genuinely valuable.
A stale rule is third. Upstream projects change. A condition that was accurate on the date in the source table may not be accurate in the release you are running, and the table records the date precisely so that the gap stays visible. If a newer version behaves differently, say which version — the fix is usually to note both behaviours side by side, and not to replace one with the other.
Wording reports are welcome too; they queue behind anything that could leave a machine less secure than its owner believes it is.
How to reach me
Send corrections and questions to chmodcalc [at] proton [dot] me. The address is written that way to keep it out of the obvious scrapers; replace the words with the symbols. Please put the page name in the subject line.
I do not accept guest posts, link exchanges, or "content partnerships". Every source on this site was read directly on 2026-08-15 and links out to a primary source, and that is not something a paid placement can be added to without breaking it.
Reusing the tables
The generated tables are derived from the permission arithmetic itself, which nobody owns — you are welcome to regenerate them. If you want to link back, the snippet on the front page is a plain anchor with no script attached. The quoted error strings belong to their respective projects and are reproduced here under the same terms as any other quotation of source code for the purpose of documenting behaviour; each one names its origin.