Как менеджеры по оформлению регистрируют пользователя в?

Необходимо считать себя удачливыми тот AIX sed добавленный тот недостающие символы новой строки.

Непустой файл, который не заканчивается в символе новой строки, не является текстовым файлом (по крайней мере, согласно определению POSIX текстового файла), поскольку текстовый файл предназначен для содержания строк, и строки являются (не слишком долго) последовательностью символов, завершенных символом новой строки, таким образом, поведение текстовых утилит как sed на нем является неуказанным и на практике варьируется от реализации до реализации.

Некоторые sed реализация уволила бы их побочный символ после последней строки.

AFAIK, xml файлы предназначены, чтобы быть текстовыми файлами, так, чтобы средства sed просто зафиксированный это для Вас.

Если Вам нужен тот файл для не окончания в символе новой строки, то Вы могли использовать perl или другие инструменты, которые могут справиться с нетекстовыми данными.

perl -pe 's|<LIST_G_STATEMENT>|$&\n|g'
3
30.04.2014, 01:09
1 ответ
[114806]Думаю, я добился некоторого прогресса в понимании этого вопроса, так что я напишу то, что знаю здесь. Этот ответ в настоящее время для тех систем, которые используют [115307]PAM[115308]. Я добавлю больше о других методах входа в систему по мере того, как я с ними сталкиваюсь.[12211]После того, как вы вводите имя пользователя и пароль в поля диспетчера дисплея, диспетчер дисплея принимает эти два поля и запускает процесс аутентификации PAM.[12212]Сначала он вызывает [115309]pam_start()[115310]. Он сообщает PAM, какую функцию взаимодействия (мы доберёмся до того, что это такое) вы используете и какую структуру [115311]pam_handle_t[115312] инициализировать. Вы передаёте эту [115313]pam_handle_t[115314] структуру во все следующие вызовы.[12213]Затем с помощью [115315]pam_set_item()[115316] вы можете установить любые свойства, подобные имени пользователя. Здесь не нужно устанавливать имя пользователя. Когда вы вызываете [115317]pam_authenticate()[115318], он запросит любую информацию, которой у него еще нет.[12214]Далее вы вызываете [115319]pam_authenticate()[115320], чтобы проверить, действительны ли имя пользователя и пароль. В этот момент [115321]pam_authenticate()[115322] получает любую информацию, которой она не обладала, используя функцию [115323] разговора [115324]. Подробности можно посмотреть по этой ссылке, но короче говоря, PAM вызовет функцию conversation, которую вы указали в структуре, переданной в [115325]pam_start()[115326], после вызова [115327]pam_authenticate()[115328]. Затем она передаст массив сообщений в эту функцию взаимодействия. Если [115329]msg_style[115330] - это [115331]PAM_PROMPT_ECHO_ON[115332], то запрашивается имя пользователя, а если [115333]msg_style[115334] - это [115335]PAM_PROMPT_ECHO_OFF[115336], то запрашивается пароль. Остальные две опции описаны в спецификации и используются для сообщений об ошибках и информационных сообщений. В зависимости от типа сообщения заполните массив [115337]или [115338] ответами и верните правильный код ошибки.[12215] Теперь, если [115339]pam_authenticate()[115340] возвращает [115341]PAM_SUCCESS[115342], это означает, что пользователь существует. Затем мы должны вызвать [115343]pam_acct_mgmt()[115344], чтобы убедиться, что пользователь имеет разрешение на вход в систему в это время (я не знаю, где и как это разрешение установлено).[12216] В этот момент мы получаем токен, используя [115345]pam_setcred()[115346], а затем открываем сессию с помощью [115347]pam_open_session()[115348]. Я не знаю, для чего это нужно и как на самом деле используется токен, но это необходимо. Дайте мне знать, если узнаете больше.[12217]Теперь мы можем установить все нужные нам bash-переменные с помощью [115349]pam_putenv()[115350]. Когда в нашем окружении будет всё, что нам нужно, мы сможем вскрыть новый процесс, а затем [115351]выполнить [115352] команду [115353]startx[115354].[12218]Когда этот процесс завершится, пользователь выйдет из системы. В этот момент мы вызываем [115355]pam_close_session()[115356], [115357]pam_setcred[115358] (с возможностью удаления учетных данных) и [115359]pam_end()[115360] в этом порядке.[12219]Если что-то из этого неправильно или у вас есть дополнительная информация для добавления, пожалуйста, сообщите мне об этом. Для примера можно посмотреть [115361]мой менеджер дисплеев[115362] (все еще находится в разработке). [114825]
3
27.01.2020, 21:23

Теги

Похожие вопросы