Фэндом


НАЗВАНИЕ

attach, auth - установить соединение, авторизоваться

РЕЗЮМЕ

size[4] Tauth tag[2] afid[4] uname[s] aname[s]

size[4] Rauth tag[2] aqid[13]

size[4] Tattach tag[2] fid[4] afid[4] uname[s] aname[s]

size[4] Rattach tag[2] qid[13]


ОПИСАНИЕ

Здесь size[n] - total byte count of the following data, tag[n] - поле-идентификатор сигнала, ответ на него будет содержать такой же tag. Для одного соединения не может быть двух одинаковых тагов, если только не указано значение `NOTAG`.

Аttach-сигнал служит приглашением к установлению соединения с файл-сервером. Сигнал фактически идентифицирует пользователя (uname) и позволяет выбрать точку доступа (aname). Значение afid фактически определяется в процессе авторизации с помощью auth-сигнала, как будет показано ниже.

В результате attach-транзакции, клиент получает доступ к файлу или каталогу, указанному в поле fid; этот каталог будет корневым для клиентского процесса; здесь fid - аналог файлового дескриптора, только имеющего ряд отличий (см. intro(5)). В случае, если указанный в fid каталог или файл уже используется, генерируется сообщение об ошибке. Кроме того, сервер назначает каждому запрашиваемому файлу уникальный идентификатор qid; соединение может иметь множество fid, указывающих на один файл, но только один qid.

Если клиент не желает авторизовываться или авторизация не обязательна, то в attach-сигнале в поле afid указывается значение `NOFID`, определеное как (u32int)~0 в файле<fcall.h>. Иначе клиент должен пройти авторизацию, тем самым косвенно задав значение поляafid.

Auth-сигнал содержит поле afid, new fid to be established for authentication, а также uname и aname, которые затем будут использованы в attach-сигнале. Если сервер не требует авторизации, то в ответ на Tauth он вернет Rerror.

Если сервер требует авторизации, то он возвращает aqid, указывающее на файл типа QTAUTH (см. intro(5)), который можно считывать и перезаписывать (используя read и write), чтобы запустить протокол авторизации, элементы которого сами по себе не являются частью протокола Styx.

Как только авторизация завершена, такой же afid используется в attach-сигнале пользователя, запросившего доступ. Один и тот же afid может быть использован для нескольких attach-сигналов, содержащих одинаковые uname и aname.

ENTRY POINTS

Attach-транзакция генерируется ядром системы (см. intro(3)) каждый раз, когда системная функция обрабатывает файловое имя, начинающееся со знака `#`. Так, например, системная функция Sys-pipe(2) запрашивает доступ к файлам и каталогам устройства pipe(3); вызов функции mount (см. sys-bind(2)) генерирует attach-сигнал к удаленному файл-серверу; когда стартует ядро системы, attach-сигнал посылается устройству ядраroot(3), а затем файл-серверу.

Auth-транзакция генерируется системной функцией fauth(2) или первым же вызовом функции mount для неинициализированного соединения.

Смотри также

sys-bind(2), sys-fauth(2), intro(3), root(3), version(5)

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на Фэндоме

Случайная вики