The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"скрипт для изменения пароля"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"скрипт для изменения пароля"  
Сообщение от harik email on 09-Май-07, 20:49 
нужно дать некоторым юзерам в системе добавлять и задавать пароли пользователям(стоит postfix, необходимо дать доступ создавать новые почтовые ящики)

чтобы случайно не изменили пароли на рута, администраторов и системных пользователей, (их логины поместил в файлик danger)нужно сделать скрипт, который бы потом запускался из под sudo(sudo script имя_пользователя вместо passwd имя_пользователя),но проверял на запрещенные логины в файле danger, сделал такой скрипт
#!/bin/sh
flag=true
echo $flag
cut -f1 danger | while read NAME
do
if [ $flag = "false" ]; then
break
elif [ "$1" = "$NAME" ]; then
flag=false
echo $flag
fi
echo $flag
done
# vivodim i zapuskaem proverku
echo $flag
if [ "$flag" = "true"]; then
passwd $1
echo parol $1 izmenen
else
echo net dostupa
exit
(echo поставил для проверки состояния $flag, в рабочем скрипте уберу)

но проблема в том, что при выходе из цикла в любом случае переменная сбрасывается на true, подскажите что не так делаю или альтернативные варианты решения проблемы в bash


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "скрипт для изменения пароля"  
Сообщение от Xela (ok) on 11-Май-07, 14:07 
Ммм... Если все равно выполняете скрипт под 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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "скрипт для изменения пароля"  
Сообщение от harik email on 12-Май-07, 22:02 
>Ммм... Если все равно выполняете скрипт под 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 в кавычки и тд не помогают

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "скрипт для изменения пароля"  
Сообщение от harik email on 13-Май-07, 09:38 
>if [ $1 = ]; then
>echo `date` ne zadano imya
>exit 0
>fi
>При выполнении скрипта без ввода данных, все проходит нормально, когда вводится новое
>имя пользователя после скрипта, все работает нормально, однако выдает такое сообщение:
>
>./passwd.sh: line 3: [: test(вводимое имя): unary operator expected
>
>подскажите, как устранить, ввод $1 в кавычки и тд не помогают

решил проблему, заменив на if [ -z "$1" ]


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "скрипт для изменения пароля"  
Сообщение от L0n3R4ng3r (ok) on 30-Май-07, 18:57 
>>if [ $1 = ]; then
>>echo `date` ne zadano imya
>>exit 0
>>fi
>>При выполнении скрипта без ввода данных, все проходит нормально, когда вводится новое
>>имя пользователя после скрипта, все работает нормально, однако выдает такое сообщение:
>>
>>./passwd.sh: line 3: [: test(вводимое имя): unary operator expected
>>
>>подскажите, как устранить, ввод $1 в кавычки и тд не помогают
>
>решил проблему, заменив на if [ -z "$1" ]


как вариант
if [ $# -ne 1 ];then
echo `date` ne zadano imya
exit 0
fi

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру