Читайте также:
|
|
1. Изучить системные вызовы, задающие права доступа.
2. Изучить системные вызовы, обрабатывающие содержимое каталогов.
Постановка задачи.
Реализовать команду access, имеющую следующие возможности:
access FILE OCTAL_MODE [ OWNER_ID ] [ GROUP_ID ]
FILE - имя файла
OCTAL_MODE - права доступа в форме 8-ричной константы
OWNER_ID - идентификатор владельца файла (необязательный параметр)
GROUP_ID - идентификатор группы владельца файла (необязательный параметр)
access FILE
FILE - имя файла
access -l DIRECTORY
DIRECTORY - имя каталога
Краткие теоретические сведения:
Если ввести команду ls –l, то мы получим информацию следующего вида:
- rwxr--r--1 ivan group1 dec 03 18:30 program.c,
где
«-» указывает что это файл (для директории - d, для ссылки - l)
«rwxr--r--» - права доступа к файлу
1. первые три символа права доступа владельца файла
2. вторые три – права доступа группы пользователей
3. последние три символа – права доступа для всех остальных
Значение символов:
· r – разрешено чтение (соответствующая цифра 4)
· w – разрешена запись (соответствующая цифра 2)
· x – разрешено выполнение (соответствующая цифра 1)
· - - данный символ запрещает чтение, запись или выполнение, в зависимости от позиции, в которой он находиться.
«1» - количество ссылок
«ivan» - имя владельца файла
«group1» - имя группы владельца файла
«dec 03 18:30» - дата последней модификации файла
«program.c» - имя файла
CHMOD
chmod, fchmod -функции, изменяющие права доступа к файлу
СИНТАКСИС
#include <sys/types.h>
#include <sys/stat.h>
int chmod(const char *path, mode_t mode);
int fchmod(int fildes, mode_t mode);
CHOWN
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);
STAT
stat, fstat, lstat - считывает статус файла
СИНТАКСИС
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *file_name, struct stat *buf);
int fstat(int filedes, struct stat *buf);
int lstat(const char *file_name, struct stat *buf);
Дата добавления: 2014-12-19; просмотров: 33 | Поможем написать вашу работу | Нарушение авторских прав |