<!--
{
  "availability" : [
    "iOS: 14.0.0 -",
    "iPadOS: 14.0.0 -",
    "macCatalyst: 14.0.0 -",
    "macOS: 11.0.0 -",
    "tvOS: 14.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 7.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "System",
  "identifier" : "/documentation/System/FilePermissions",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "System"
    ],
    "preciseIdentifier" : "s:6System15FilePermissionsV"
  },
  "title" : "FilePermissions"
}
-->

# FilePermissions

The access permissions for a file.

```
@frozen struct FilePermissions
```

## Overview

The following example
creates an instance of the `FilePermissions` structure
from a raw octal literal and compares it
to a file permission created using named options:

```
let perms = FilePermissions(rawValue: 0o644)
perms == [.ownerReadWrite, .groupRead, .otherRead] // true
```

## Topics

### Owner Permissions

[`static var ownerRead: FilePermissions`](/documentation/System/FilePermissions/ownerRead)

Indicates that the owner has read-only permission.

[`static var ownerWrite: FilePermissions`](/documentation/System/FilePermissions/ownerWrite)

Indicates that the owner has write-only permission.

[`static var ownerExecute: FilePermissions`](/documentation/System/FilePermissions/ownerExecute)

Indicates that the owner has execute-only permission.

[`static var ownerReadWrite: FilePermissions`](/documentation/System/FilePermissions/ownerReadWrite)

Indicates that the owner has read-write permission.

[`static var ownerReadExecute: FilePermissions`](/documentation/System/FilePermissions/ownerReadExecute)

Indicates that the owner has read-execute permission.

[`static var ownerWriteExecute: FilePermissions`](/documentation/System/FilePermissions/ownerWriteExecute)

Indicates that the owner has write-execute permission.

[`static var ownerReadWriteExecute: FilePermissions`](/documentation/System/FilePermissions/ownerReadWriteExecute)

Indicates that the owner has read, write, and execute permission.

### Group Permissions

[`static var groupRead: FilePermissions`](/documentation/System/FilePermissions/groupRead)

Indicates that the group has read-only permission.

[`static var groupWrite: FilePermissions`](/documentation/System/FilePermissions/groupWrite)

Indicates that the group has write-only permission.

[`static var groupExecute: FilePermissions`](/documentation/System/FilePermissions/groupExecute)

Indicates that the group has execute-only permission.

[`static var groupReadWrite: FilePermissions`](/documentation/System/FilePermissions/groupReadWrite)

Indicates that the group has read-write permission.

[`static var groupReadExecute: FilePermissions`](/documentation/System/FilePermissions/groupReadExecute)

Indicates that the group has read-execute permission.

[`static var groupWriteExecute: FilePermissions`](/documentation/System/FilePermissions/groupWriteExecute)

Indicates that the group has write-execute permission.

[`static var groupReadWriteExecute: FilePermissions`](/documentation/System/FilePermissions/groupReadWriteExecute)

Indicates that the group has read, write, and execute permission.

### Other Permissions

[`static var otherRead: FilePermissions`](/documentation/System/FilePermissions/otherRead)

Indicates that other users have read-only permission.

[`static var otherWrite: FilePermissions`](/documentation/System/FilePermissions/otherWrite)

Indicates that other users have write-only permission.

[`static var otherExecute: FilePermissions`](/documentation/System/FilePermissions/otherExecute)

Indicates that other users have execute-only permission.

[`static var otherReadWrite: FilePermissions`](/documentation/System/FilePermissions/otherReadWrite)

Indicates that other users have read-write permission.

[`static var otherReadExecute: FilePermissions`](/documentation/System/FilePermissions/otherReadExecute)

Indicates that other users have read-execute permission.

[`static var otherWriteExecute: FilePermissions`](/documentation/System/FilePermissions/otherWriteExecute)

Indicates that other users have write-execute permission.

[`static var otherReadWriteExecute: FilePermissions`](/documentation/System/FilePermissions/otherReadWriteExecute)

Indicates that other users have read, write, and execute permission.

### Special Permissions

[`static var setUserID: FilePermissions`](/documentation/System/FilePermissions/setUserID)

Indicates that the file is executed as the owner.

[`static var setGroupID: FilePermissions`](/documentation/System/FilePermissions/setGroupID)

Indicates that the file is executed as the group.

[`static var saveText: FilePermissions`](/documentation/System/FilePermissions/saveText)

Indicates that executable’s text segment
should be kept in swap space even after it exits.

### Interacting with C APIs

[`init(rawValue: CModeT)`](/documentation/System/FilePermissions/init(rawValue:))

Create a strongly-typed file permission from a raw C value.

[`let rawValue: CModeT`](/documentation/System/FilePermissions/rawValue)

The raw C file permissions.

[`typealias CModeT`](/documentation/System/CModeT)

The C `mode_t` type.

### Debugging

[`var description: String`](/documentation/System/FilePermissions/description)

A textual representation of the file permissions.

[`var debugDescription: String`](/documentation/System/FilePermissions/debugDescription)

A textual representation of the file permissions, suitable for debugging.

### Comparing File Permissions

### Encoding File Permissions

### Performing Set Operations

### Default Implementations

[CustomDebugStringConvertible Implementations](/documentation/System/FilePermissions/CustomDebugStringConvertible-Implementations)

[CustomStringConvertible Implementations](/documentation/System/FilePermissions/CustomStringConvertible-Implementations)

## Relationships

### Conforms To

[`OptionSet`](/documentation/Swift/OptionSet)

[`Encodable`](/documentation/Swift/Encodable)

[`Decodable`](/documentation/Swift/Decodable)

[`Equatable`](/documentation/Swift/Equatable)

[`Escapable`](/documentation/Swift/Escapable)

[`BitwiseCopyable`](/documentation/Swift/BitwiseCopyable)

[`ExpressibleByArrayLiteral`](/documentation/Swift/ExpressibleByArrayLiteral)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`Copyable`](/documentation/Swift/Copyable)

[`Hashable`](/documentation/Swift/Hashable)

[`SetAlgebra`](/documentation/Swift/SetAlgebra)

[`RawRepresentable`](/documentation/Swift/RawRepresentable)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`Sendable`](/documentation/Swift/Sendable)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)