pam_mount - выполнить shell-скрипт из xml-комментария

При входе любого юзера pam_mount может выполнять команды от root. Иногда при входе пользователей нужно выполнить не только монтирование, но и сложный скрипт.
Хотелось бы вписать и выполнять bash-скрипт прямо из xml-комментария, так удобнее редактировать и файл будет один - pam_mount.conf.xml.
но внешние команды для cifsmount и т.п. при входе пользователя выдают ошибку синтаксиса XML, если в строке есть служебные символы /<|;->\

Можно ли адаптировать команду, приведённую ниже, чтобы она заработала из pam_mount.conf.xml ?
<nfsmount>eval "$(awk '/^<!-- sh/{i=1;next}/^sh -->/{exit}i' /etc/security/pam_mount.conf.xml)" </nfsmount>
Я пробовал разные варианты, но все они выдают ошибки, если в строке есть служебные символы /<|;->\ … например:
<cifsmount>echo 'echo выполнить скрипт из pam_mount' > /tmp/pam_mount-OK; sh /tmp/pam_mount-OK </cifsmount>

pam_mount.conf.xml
<!DOCTYPE pam_mount SYSTEM 'pam_mount.conf.xml.dtd'>
        <pam_mount>
            <volume fstype="nfs" server="nfs" path="/home/%(USER)" mountpoint="/mnt/temp" />
<!-- Замена команды монтирования "nfs". Преимущества: автозапуск скрипта от root при авторизации любого пользователя
            <nfsmount>sudo /etc/security/users-init.sh %(USER) </nfsmount>
более сложные команды (с перенаправленим ввода-вывода) не работают: -->
            <nfsmount>eval "$(awk '/^<!-- sh/{i=1;next}/^sh -->/{exit}i' /etc/security/pam_mount.conf.xml)" </nfsmount>
            <mntoptions options ='sec=krb5,cruid=%(USERUID),nounix,iocharset=utf8' />
            <mntoptions allow='nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,uid,gid,dir_mode' />
            <mntoptions require='nosuid,nodev,uid,gid,dir_mode' />
            <logout wait='0' hup='no' term='no' kill='no' />
            <mkmountpoint enable='1' remove='true' />
        </pam_mount>
<!-- sh
echo выполнить скрипт из pam_mount > /tmp/pam_mount-OK
sh -->
Dobrov
Хотелось бы вписать и выполнять bash-скрипт прямо из xml-комментария, так удобнее редактировать
Правильно понимаю, что основное использование команд - это редактирование/изменение XML файла???
Ошибки не исчезают с опытом - они просто умнеют
Звучит как описание отверстия в безопасности.
Вот зачем вам это?

p.s. если я правильно понял что вы хотите то вам нужен pam_exec, но я что-то сомневаюсь в рациональности таких ограничений на домашнем компьютере.
Ошибки в тексте-неповторимый стиль автора©
indeviral
Звучит как описание отверстия в безопасности. Вот зачем вам это?
Множество команд может быть использовано небезопасно, но их же не отменяют! Из-за того, что штатными средствами pam_mount не монтирует нужную шару, сейчас в <nfsmount> на компах одной из рабочих групп в Астра-Линукс у меня такой скрипт:
#!/bin/bash
# echo скрипт выполнить от admin > /root.txt параметры: любой ключ разрешает перемонтирование
cifs() {
	((!${#5})) && mountpoint -q $2 && return # не перемонтировать
	………
}
[ $UID -eq 0 -o -w /etc ] || { echo -e "\033[41m запустите скрипт монтирования от администратора \033[0m"; exit;}
# добавить имя хоста в случае ошибки: sudo: unable to resolve host ... В соединении отказано
grep -q $(hostname) /etc/hosts || echo 127.0.1.1 $(hostname) | tee -a /etc/hosts
pass="\x52………"
cifs 2.xx.xxx.xxx/klshare/Updates ${mnt}/updates user $(echo -e $pass) $1
………

vasek
Правильно понимаю, что основное использование команд - это редактирование/изменение XML файла???
Нет, цель чисто эстетическая - отказаться от отдельного скрипта и брать выпоняемый код из XML-комментария pam_mount.conf.xml.
подобное я уже описывал в .desktop-ярлык - способы портабельного запуска скрипта
Dobrov
цель чисто эстетическая - отказаться от отдельного скрипта и брать выпоняемый код из XML
Спрашивал просто для понимания сути вопроса, увидев в тексте команды awk, grep … в связи с чем спрошу более конкретно
Не пробовал для этих целей использовать инструмент, заточенный специально для XML, xmlstarlet? - есть в наших репах
xmlstarlet (XMLStarlet) - это набор утилит (инструментов) командной строки, которые можно использовать для преобразования, запроса, проверки и редактирования XML-документов и файлов с помощью простого набора команд оболочки аналогично тому, как это делается для простых текстовых файлов с использованием UNIX grep, sed, awk, diff, patch, join и других команд. Этот набор утилит командной строки может использоваться теми, кто имеет дело со многими XML-документами в командной строке оболочки UNIX, а также для автоматической обработки XML с помощью сценариев оболочки.
Подойдет ли этот инструмент в твоем случае, не знаю …

Что касается служебных символов - не пробовал применить экранирование, используемое для XML?
Ошибки не исчезают с опытом - они просто умнеют
vasek
Не пробовал для этих целей использовать инструмент, заточенный специально для XML, xmlstarlet? - есть в наших репах
Не пойдёт на Астра Линукс, у нас в ведомственной конторе дикие требования, например Антивирус на Линуксе - cifs 2.xx.xxx.xxx/klshare/Updates

Я уже решил проблему, но в два этапа - 1) сначала из pam_mount.conf.xml выполняется одна bash-строка, 2) которая затем выполняет код, полученный из XML-комментария.
1) <nfsmount>awk '/^sed -n/{system ($0)}' /etc/security/pam_mount.conf.xml </nfsmount>
2) комментарий в pam_mount.conf.xml …… <!--
sudo eval "$(sed -n '$d;/^#!/,$p' /etc/security/pam_mount.conf.xml)" #выполнить следующие строки:
#!/bin/bash
………
А хотелось бы на форуме получить способ выполнить скрипт в одной строке, сразу в команде <nfsmount>
Dobrov
получить способ
вы какой-то ерундой занимаетесь чтобы обрабатывать такие ситуации из нужного модуля pam вызывается pam_exec.
Ошибки в тексте-неповторимый стиль автора©
 
Зарегистрироваться или войдите чтобы оставить сообщение.