>Ммм... Если все равно выполняете скрипт под sudo, то почему бы так
>и не указывать в sudoers:
>
>informix ALL=(ALL)
> NOPASSWD: /usr/sbin/useradd, /usr/sbin/usermod, /bin/passwd, !/bin/passwd root, !/bin/passwd sinitsa,
>/bin/chmod, /bin/chown
>
>в этом примере пользователю informix дозволяется вызывать passwd под sudo кроме тех
>случаев, когда passwd запускается с параметром root или sinitsa
>
>в вашем бы случае я написал бы скрипт так:
>#!/bin/bash
>
>grep -qEe "^$1\W*" danger
>[ $? -eq 0 ] && exit
>passwd $1
>
>То есть, grep-ом проверяем наличие в файле danger логина пользователя и если
>его там нет, выполняем passwd спасибо за совет по поводу grep, послеучтения всех пожеланий, решил сделать таким образом:
ravno=`grep $1 danger`
if [ "$1" != "$ravno" ]; then
/usr/bin/passwd $1
echo $1 izmenen
echo `date` $1 izmenen
else
echo `date` net dostupa
fi
однако учитывая, что скрипт выполняется под sudo возникла необходимость исключить такую ошибку, когда после скрипта ничего не вводится, и возникает опасность изменить пароль на рута(sudo passwd), поэтому добавил в начало скрипта такое условие:
if [ $1 = ]; then
echo `date` ne zadano imya
exit 0
fi
При выполнении скрипта без ввода данных, все проходит нормально, когда вводится новое имя пользователя после скрипта, все работает нормально, однако выдает такое сообщение:
./passwd.sh: line 3: [: test(вводимое имя): unary operator expected
подскажите, как устранить, ввод $1 в кавычки и тд не помогают