ИМЯ setuid - устанавливает идентификатор пользователя
ОБЗОР #include <sys/types.h> #include <unistd.h>
int setuid(uid_t uid);
ОПИСАНИЕ Вызов setuid() устанавливает эффективный идентификатор пользователя вызвавшего процесса. Если вызывающий процесс имеет права (мандат CAP_SETUID в своём пространстве имён пользователя), то также устанавливаются действительный и сохраненный идентификаторы пользователя.
В Linux setuid() реализован как и в стандарте POSIX с возможностью _POSIX_SAVED_IDS. Это позволяет setuid-программам (не setuid-root) сбрасывать все привилегии, делать непривилегированную работу, а затем безопасным путём возвращать себе исходный эффективный идентификатор пользователя.
Если пользователь root или программа установлена как setuid root, при работе требуется осо
...
Читать дальше »
|
ИМЯ gettimeofday, settimeofday - получает/устанавливает время
ОБЗОР #include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv, const struct timezone *tz);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
settimeofday(): начиная с glibc 2.19: _DEFAULT_SOURCE в glibc 2.19 и старее: _BSD_SOURCE
ОПИСАНИЕ Функция gettimeofday() и settimeofday() позволяют получить и задать время, а также часовой пояс. Аргумент tv имеет тип struct timeval (определён в <sys/time.h>):
struct timeval { time_t tv_sec; /* секунды */ suseconds_t tv_usec; /* микросекунды */ };
и задаёт количество секунд и микросекунд, прошедших с начала эпохи (см. time(2)). Аргумент
...
Читать дальше »
|
ИМЯ set_tid_address - устанавливает указатель идентификатора нити
ОБЗОР #include <linux/unistd.h>
long set_tid_address(int *tidptr);
Замечание: В glibc нет обёрточной функции для данного системного вызова; смотрите ЗАМЕЧАНИЯ.
ОПИСАНИЕ В ядре для каждой нити хранится два атрибута (адреса): set_child_tid и clear_child_tid. Их значение по умолчанию равно NULL.
set_child_tid Если нить запущена с помощью clone(2) с флагом CLONE_CHILD_SETTID, то значение set_child_tid устанавливается равным аргументу системного вызова ctid.
Если set_child_tid присвоено значение, то самое первое действие, которое выполняется для новой нити, это запись ID нити по этому адресу.
clear_child_tid Если нить запущена с помощью clone(2) с флагом CLONE_CHILD_CLEARTID, то значение clear
...
Читать дальше »
|
ИМЯ get_thread_area, set_thread_area - назначение элемента GDT для области локального хранилища нити
ОБЗОР #include <linux/unistd.h> #include <asm/ldt.h>
int get_thread_area(struct user_desc *u_info); int set_thread_area(struct user_desc *u_info);
Замечание: В glibc нет обёрточных функций для этих системных вызовов; смотрите ЗАМЕЧАНИЯ.
ОПИСАНИЕ В Linux под локальное хранилище нити отдано три элемента глобальной таблицы дескрипторов (GDT). Подробней о GDT читайте в Intel Software Developer's Manual или AMD Architecture Programming Manual.
Этим системным вызовам передаётся указатель на структуру вида:
struct user_desc { unsigned int entry_number; unsigned long base_addr; unsigned int limit; unsigned int seg_32bit:1; unsigned int contents:2; unsigned i
...
Читать дальше »
|
ИМЯ getsockopt, setsockopt - получить или установить флаги сокета
ОБЗОР #include <sys/types.h> /* смотрите ЗАМЕЧАНИЯ */ #include <sys/socket.h>
int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
ОПИСАНИЕ getsockopt() и setsockopt() управляют параметрами сокета, на который указывает файловый дескриптор sockfd. Параметры могут быть из различных уровней протоколов; они всегда присутствуют на самом верхнем уровне сокета.
При работе с параметрами сокета должен быть указан уровень, на котором находится этот параметр и его имя. Для работы с параметрами на уровне API сокета в level указывается значение SOL_SOCKET. Для работы с параметрами на любом другом уровне,
...
Читать дальше »
|
ИМЯ setsid - создает сеанс и устанавливает идентификатор группы процесса
ОБЗОР #include <unistd.h>
pid_t setsid(void);
ОПИСАНИЕ Вызов setsid() создаёт новый сеанс, если вызывающий процесс не является лидером группы процессов. Вызывающий процесс становится лидером нового сеанса (то есть, его ID сеанса становится равным ID самого процесса). Вызывающий процесс также становится лидером группы процессов новой группы процессов в сеансе (то есть, его ID группы процессов становится равным ID самого процесса).
Вызывающий процесс будет единственным в новой группе процессов и новом сеансе.
Изначально, новый сеанс не имеет управляющего терминала. О том, как сеанс получает управляющий терминал, смотрите в credentials(7).
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ При успешном вы
...
Читать дальше »
|
ИМЯ get_robust_list, set_robust_list - возвращает/назначает список надёжных фьютексов (futexes)
ОБЗОР #include <linux/futex.h> #include <sys/types.h> #include <syscall.h>
long get_robust_list(int pid, struct robust_list_head **head_ptr, size_t *len_ptr); long set_robust_list(struct robust_list_head *head, size_t len);
Замечание: В glibc нет обёрточных функций для этих системных вызовов; смотрите ЗАМЕЧАНИЯ.
ОПИСАНИЕ Данные системные вызовы служат для ведения понетевых списков надёжных фьютексов. Данные списки управляются из пользовательского пространства: ядро знает только расположение начала списка. Нить может информировать ядро о расположении своего списка надёжных фьютексов с помощью set_robust_list(). Адрес списка надёжных фьютексов нити можно получить с помощью get_r
...
Читать дальше »
| « 1 2 ... 5 6 7 8 9 ... 59 60 » |