mode string required Strict three- or four-digit octal mode from 000 through 7777; output is padded to four digits.
Parse octal Unix modes, apply POSIX symbolic chmod expressions and calculate umask results, including special bits, X and class copying.
Authoritative reference data or standards computation
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
mode
required
| string | allowed: 3 – 4 example: 4755 | Strict three- or four-digit octal mode from 000 through 7777; output is padded to four digits. |
mode string required Strict three- or four-digit octal mode from 000 through 7777; output is padded to four digits.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: octal,symbolic | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: sticky | Return all fields except these (comma-separated). |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
octal | string | Canonical four-digit octal mode. | 4755 |
symbolic | string | Nine permission characters with POSIX special-bit notation. | rwsr-xr-x |
user | string | User rwx bits without special-bit substitution. | rwx |
group | string | Group rwx bits without special-bit substitution. | r-x |
other | string | Other rwx bits without special-bit substitution. | r-x |
setuid | boolean | Whether the set-user-ID bit is set. | true |
setgid | boolean | Whether the set-group-ID bit is set. | false |
sticky | boolean | Whether the sticky bit is set. | false |
octal string Canonical four-digit octal mode.
example: 4755
symbolic string Nine permission characters with POSIX special-bit notation.
example: rwsr-xr-x
user string User rwx bits without special-bit substitution.
example: rwx
group string Group rwx bits without special-bit substitution.
example: r-x
other string Other rwx bits without special-bit substitution.
example: r-x
setuid boolean Whether the set-user-ID bit is set.
example: true
setgid boolean Whether the set-group-ID bit is set.
example: false
sticky boolean Whether the sticky bit is set.
example: false
/api/unix-permissions/parse?mode=4755 {
"data": {
"octal": "4755",
"symbolic": "rwsr-xr-x",
"user": "rwx",
"group": "r-x",
"other": "r-x",
"setuid": true,
"setgid": false,
"sticky": false
},
"meta": {
"endpoint": "unix-permissions",
"route": "/parse",
"params": {
"mode": "4755"
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/unix-permissions/parse?mode=1766 {
"data": {
"octal": "1766",
"symbolic": "rwxrw-rwT",
"user": "rwx",
"group": "rw-",
"other": "rw-",
"setuid": false,
"setgid": false,
"sticky": true
},
"meta": {
"endpoint": "unix-permissions",
"route": "/parse",
"params": {
"mode": "1766"
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/unix-permissions/parse?mode=600 {
"data": {
"octal": "0600",
"symbolic": "rw-------",
"user": "rw-",
"group": "---",
"other": "---",
"setuid": false,
"setgid": false,
"sticky": false
},
"meta": {
"endpoint": "unix-permissions",
"route": "/parse",
"params": {
"mode": "0600"
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} | Parameter | Type | Default & allowed | Description |
|---|---|---|---|
current
required
| string | allowed: 3 – 4 example: 0644 | Existing three- or four-digit octal mode to modify. |
symbolic
required
| string | allowed: 1 – 128 example: u+x,g=u,o-rwx | Whitespace-free POSIX symbolic mode with at most 32 comma-separated clauses and 64 operations. |
umask | string | default: 0022 allowed: 3 – 4 example: 0022 | Creation mask used when a clause omits ugoa; three octal digits with an optional leading zero. |
isDirectory | boolean | default: false example: true | Makes X grant execute/search when needed and is required for portable sticky-bit operations using t. |
current string required Existing three- or four-digit octal mode to modify.
symbolic string required Whitespace-free POSIX symbolic mode with at most 32 comma-separated clauses and 64 operations.
umask string Creation mask used when a clause omits ugoa; three octal digits with an optional leading zero.
isDirectory boolean Makes X grant execute/search when needed and is required for portable sticky-bit operations using t.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: before,expression | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: changed | Return all fields except these (comma-separated). |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
before | string | Canonical mode before the expression. | 0644 |
expression | string | Symbolic expression that was evaluated. | u+x,g=u,o-rwx |
umask | string | Canonical mask used for omitted target classes. | 0022 |
isDirectory | boolean | Directory condition used by X and portable sticky-bit validation. | false |
after | string | Canonical mode after all clauses. | 0770 |
symbolic | string | Nine-character representation of the result. | rwxrwx--- |
changed | boolean | Whether the resulting mode differs from the input mode. | true |
before string Canonical mode before the expression.
example: 0644
expression string Symbolic expression that was evaluated.
example: u+x,g=u,o-rwx
umask string Canonical mask used for omitted target classes.
example: 0022
isDirectory boolean Directory condition used by X and portable sticky-bit validation.
example: false
after string Canonical mode after all clauses.
example: 0770
symbolic string Nine-character representation of the result.
example: rwxrwx---
changed boolean Whether the resulting mode differs from the input mode.
example: true
/api/unix-permissions/apply?current=0644&symbolic=u%2Bx%2Cg%3Du%2Co-rwx {
"data": {
"before": "0644",
"expression": "u+x,g=u,o-rwx",
"umask": "0022",
"isDirectory": false,
"after": "0770",
"symbolic": "rwxrwx---",
"changed": true
},
"meta": {
"endpoint": "unix-permissions",
"route": "/apply",
"params": {
"current": "0644",
"symbolic": "u+x,g=u,o-rwx",
"umask": "0022",
"isDirectory": false
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/unix-permissions/apply?current=0644&symbolic=a%2BX&isDirectory=true {
"data": {
"before": "0644",
"expression": "a+X",
"umask": "0022",
"isDirectory": true,
"after": "0755",
"symbolic": "rwxr-xr-x",
"changed": true
},
"meta": {
"endpoint": "unix-permissions",
"route": "/apply",
"params": {
"current": "0644",
"symbolic": "a+X",
"umask": "0022",
"isDirectory": true
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/unix-permissions/apply?current=0755&symbolic=u%2Bs%2Cg%2Bs%2Ca%2Bt&isDirectory=true {
"data": {
"before": "0755",
"expression": "u+s,g+s,a+t",
"umask": "0022",
"isDirectory": true,
"after": "7755",
"symbolic": "rwsr-sr-t",
"changed": true
},
"meta": {
"endpoint": "unix-permissions",
"route": "/apply",
"params": {
"current": "0755",
"symbolic": "u+s,g+s,a+t",
"umask": "0022",
"isDirectory": true
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} | Parameter | Type | Default & allowed | Description |
|---|---|---|---|
requested
required
| string | allowed: 3 – 4 example: 0666 | Requested three-digit permission template, optionally prefixed by 0; special bits are not accepted. |
umask
required
| string | allowed: 3 – 4 example: 0022 | Three octal mask digits, optionally prefixed by 0. |
requested string required Requested three-digit permission template, optionally prefixed by 0; special bits are not accepted.
umask string required Three octal mask digits, optionally prefixed by 0.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: requested,umask | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: symbolic | Return all fields except these (comma-separated). |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
requested | string | Canonical requested permission template. | 0666 |
umask | string | Canonical creation mask. | 0022 |
result | string | Requested permissions with masked bits removed. | 0644 |
symbolic | string | Nine-character representation of the result. | rw-r--r-- |
requested string Canonical requested permission template.
example: 0666
umask string Canonical creation mask.
example: 0022
result string Requested permissions with masked bits removed.
example: 0644
symbolic string Nine-character representation of the result.
example: rw-r--r--
/api/unix-permissions/umask?requested=0666&umask=0022 {
"data": {
"requested": "0666",
"umask": "0022",
"result": "0644",
"symbolic": "rw-r--r--"
},
"meta": {
"endpoint": "unix-permissions",
"route": "/umask",
"params": {
"requested": "0666",
"umask": "0022"
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/unix-permissions/umask?requested=0777&umask=0077 {
"data": {
"requested": "0777",
"umask": "0077",
"result": "0700",
"symbolic": "rwx------"
},
"meta": {
"endpoint": "unix-permissions",
"route": "/umask",
"params": {
"requested": "0777",
"umask": "0077"
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/unix-permissions/umask?requested=0666&umask=0002 {
"data": {
"requested": "0666",
"umask": "0002",
"result": "0664",
"symbolic": "rw-rw-r--"
},
"meta": {
"endpoint": "unix-permissions",
"route": "/umask",
"params": {
"requested": "0666",
"umask": "0002"
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} A deterministic POSIX file-mode calculator. Parse three- or four-digit octal modes, apply a symbolic chmod expression to an existing mode, or calculate the permissions left by a file creation mask.
The symbolic engine supports multiple comma-separated clauses and repeated operations, explicit or omitted ugoa targets, +, - and =, conditional X, class copying (g=u), and set-user-ID, set-group-ID and sticky bits. As specified by POSIX, X inspects the original mode (or isDirectory=true), while omitted target classes use umask when adding or removing ordinary permission bits. An equals operation clears the selected classes before adding unmasked bits. To avoid POSIX-unspecified sticky-bit behavior, every operation containing t requires isDirectory=true and either the exact target a or no target; explicit u, g, o and combined targets are rejected.
The nine-character symbolic output uses lowercase s or t when the corresponding execute bit is present and uppercase S or T when it is absent. This API calculates mode bits only; it does not change files and does not model filesystem-specific ACLs.
Yes. X adds execute/search only for a directory or when the original mode already has at least one execute bit, matching POSIX symbolic-mode semantics.
Yes. Expressions such as g=u copy the current user rwx bits into the group class; copy operations are evaluated in sequence.
They use s/S in user or group execute positions and t/T in the other execute position, depending on whether execute is also set. Portable sticky-bit changes require isDirectory=true with a+t/a-t/a=t, or the corresponding operation with no target.
Fake file metadata — kebab-case names, the correct MIME type for every extension, plausible per-kind sizes, unix paths and seeded SHA-256-style checksums.
Strict RFC 4648 base16, base32, base64 and base64url encoding/decoding with Unicode-safe UTF-8, padding control and malformed-input errors.
The complete IANA HTTP status code registry with practical descriptions, defining RFCs and a retryable flag — list by category or look up a single code.
Generate coherent fake audit records for authentication, CRUD and permission changes — safely seeded, filterable and bounded by time.
Test glob patterns and .gitignore rules against paths — which rule won, at which line, and whether a negation was cancelled by an excluded parent directory.