Rechercher une page de manuel
chown
Langue: ru
Version: 1997-05-18 (fedora - 25/11/07)
Section: 2 (Appels système)
Sommaire
ИМЯ
chown, fchown, lchown - изменить владельца файлаОБЗОР
#include <sys/types.h>#include <unistd.h>
int chown(const char *path, uid_t owner, gid_t group);
int fchown(int fd, uid_t owner, gid_t group);
int lchown(const char *path, uid_t owner, gid_t group);
ОПИСАНИЕ
Изменяет владельца для файла, задаваемого параметрами path или fd. Только суперпользователь может изменять владельца файла. Владелец файла может изменять группу файла на любую группу, к которой он принадлежит. Суперпользователь может произвольно изменять группу.Если параметр owner или group заданы как -1, то соответствующий идентификатор не изменяется.
Когда владелец или группа исполняемого файла изменяются не-суперпользователем, то очищаются биты S_ISUID и S_ISGID. POSIX не требует, чтобы это происходило, когда суперпользователь выполняет chown; в этом случае поведение зависит от версии ядра Linux. Если в правах доступа к файлу не установлен бит исполнения группой (S_IXGRP), то бит S_ISGID означает принудительную блокировку на этом файле и не очищается функцией chown.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае успеха возвращается ноль. При ошибке возвращается -1, а errno устанавливается должным образом.ОШИБКИ
В зависимости от файловой системы могут также возвращаться другие ошибки. Общий набор ошибок chown перечислен ниже:
- EPERM
- Фактический UID не совпадает с владельцем файла и не равен нулю; параметры owner или group заданы неверно.
- EROFS
- Файл находится на файловой системе, смонтированной только для чтения.
- EFAULT
- path указывает за пределы доступного адресного пространства.
- ENAMETOOLONG
- path слишком длинно.
- ENOENT
- Файл не существует.
- ENOMEM
- Ядру не хватило памяти.
- ENOTDIR
- Компонент пути, использованный как каталог в path, в действительности таковым не является.
- EACCES
- Запрещен поиск в одном из каталогов, находящихся на пути к файлу.
- ELOOP
- При обработке path встречено слишком много символьных ссылок (возможно зацикливание по символьным ссылкам -- прим. пер.).
Общие ошибки fchown таковы:
- EBADF
- Неверный файловый дескриптор.
- ENOENT
- См. выше.
- EPERM
- См. выше.
- EROFS
- См. выше.
- EIO
- При модификации inode произошла низкоуровневая ошибка ввода-вывода.
ЗАМЕЧАНИЯ
В версиях Linux до 2.1.81 (кроме 2.1.46), chown не следовал по символьным ссылкам. Начиная с версии Linux 2.1.81 chown следует по символьным ссылкам, и существует новый системный вызов lchown, который не следует по символьным ссылкам. Начиная с Linux 2.1.86 этот новый вызов (имеющий ту же смысл, что и старый chown), имеет тот же самый номер системного вызова, а chown получил новый номер.Прототип fchown доступен только если определен символ _BSD_SOURCE (или явно или неявно, но задан символ _POSIX_SOURCE или компиляция осуществляется с флагом -ansi).
СООТВЕТСТВИЕ СТАНДАРТАМ
Системный вызов chown соответствует SVr4, SVID, POSIX, X/OPEN. В версии 4.4BSD его может использовать только суперпользователь (то есть обычные пользователи не могут отдавать файлы). SVr4 документирует EINVAL, EINTR, ENOLINK и EMULTIHOP, но не документирует ENOMEM. POSIX.1 не документирует ENOMEM и ELOOP.Системный вызов fchown соответствует 4.4BSD и SVr4. SVr4 документирует дополнительные коды ошибки EINVAL, EIO, EINTR и ENOLINK.
ОГРАНИЧЕНИЯ
Логика работы chown специально нарушается на файловых системах NFS с разрешенным преобразованием UID. Вдобавок логика работы нарушается у всех системных вызовов, которые обращаются к содержимому файла, потому что chown может привести к немедленному запрету доступа к уже открытым файлам. Кэширование на клиенте может привести к задержке между сменой владельца и истинным моментом, когда этот пользователь сможет обратиться к файлу с других клиентов.СМОТРИ ТАКЖЕ
chmod(2), flock(2)ПЕРЕВОД
Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 1999-2000, Виктор Вислобоков <corochoone@perm.ru> 2003Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre