Ошибка fs.ErrPermission
Ошибка fs.ErrPermission представляет собой значение ошибки,
которое возвращается функциями пакета io/fs при попытке
выполнить операцию с файлом, для которой у текущего процесса
недостаточно прав доступа. Эта ошибка указывает на то, что
операционная система запретила запрошенное действие из-за
недостаточных разрешений. Обычно fs.ErrPermission
используется в сочетании с функциями типа os.Open,
os.ReadFile или os.Stat для проверки,
была ли операция прервана из-за проблем с правами доступа.
Синтаксис
err == fs.ErrPermission
Пример
Давайте попробуем открыть файл, к которому у нас нет прав доступа,
и проверим, вернулась ли ошибка fs.ErrPermission:
package main
import (
"fmt"
"io/fs"
"os"
)
func main() {
file, err := os.Open("/root/secret.txt")
if err != nil {
if err == fs.ErrPermission {
fmt.Println("Permission denied to open the file")
} else {
fmt.Println("Other error:", err)
}
return
}
defer file.Close()
fmt.Println("File opened successfully")
}
Результат выполнения кода:
"Permission denied to open the file"
Пример
Давайте попробуем прочитать директорию, к которой у нас нет прав
на чтение, и проверим ошибку с помощью функции os.IsPermission:
package main
import (
"fmt"
"os"
)
func main() {
entries, err := os.ReadDir("/root")
if err != nil {
if os.IsPermission(err) {
fmt.Println("Permission denied to read directory")
} else {
fmt.Println("Other error:", err)
}
return
}
fmt.Println("Directory entries:", entries)
}
Результат выполнения кода:
"Permission denied to read directory"
Пример
Давайте попробуем записать данные в файл, для которого у нас нет прав на запись:
package main
import (
"fmt"
"io/fs"
"os"
)
func main() {
file, err := os.OpenFile("/etc/hosts", os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
if err == fs.ErrPermission {
fmt.Println("Permission denied to write to file")
} else {
fmt.Println("Other error:", err)
}
return
}
defer file.Close()
_, err = file.WriteString("new line")
if err != nil {
if err == fs.ErrPermission {
fmt.Println("Permission denied during write operation")
} else {
fmt.Println("Other error:", err)
}
return
}
fmt.Println("Data written successfully")
}
Результат выполнения кода:
"Permission denied to write to file"
Смотрите также
-
функцию
os.IsPermission,
которая является удобной оберткой для проверки ошибок доступа -
ошибку
os.ErrPermission,
которая является синонимомfs.ErrPermission -
ошибку
os.ErrNotExist,
которая указывает на отсутствие файла -
функцию
os.OpenFile,
которая открывает файл с указанными флагами и правами