powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / скрипт запрашивающий пароль - как сберечь?
25 сообщений из 26, страница 1 из 2
скрипт запрашивающий пароль - как сберечь?
    #39108492
Фотография ХБ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сказали сделать bash-скрипт, который запрашивает пароль к базе данных а потом выполняет несколько функций, SQL Loader.
Нужно сделать так, чтобы после завершения скрипта, успешного или неуспешного, или после прерывания скрипта - пороль не оказался доступен через переменные.
Т.е. сначала я сделал
Код: powershell
1.
read -p "Enter Password" -s -v_password


и потом передавал $v_password в вызов
Код: powershell
1.
sqlldr userid=name@bd/$v_password


скрипт запускается через . (т.е. source)

Оказалось, что после окончания скрипта команда echo $v_password выводит на экран введенный пароль.

Сначала долго мыкался с использованием trap "unset v_password",
а потом сделал так:
внутри скрипта функция, в ней локальная переменная l_password и запрос пароля на ввод производится изнутри функции в эту переменную.
Скрипт только вызывает эту функцию и все.
Т.е. при любом завершении скрипта пароль в локальной переменной не сохраняется.
Так можно?
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39109614
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХБ,
не запускай через source или точку,
у тебя будет создаваться новый процесс shell а и после его окончания его переменные умрут. только export переменной не делай...
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39109974
Фотография ХБ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,
запускать-то буду не я, а юзеры и могут запустить как угодно.
Есть простой способ не допустить запуска через source?
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39110131
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
убрать x
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39110138
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы в начале скрипта поместили #!/bin/bash (или на чем другом вы хотите его исполнять..)?
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39110493
Фотография ХБ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разумеется поместил.
Что значит "убрать x"?
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39110599
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что мешает сразу после выполнения sqlplus в скрипте прописать
$v_password=""
?
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39111026
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Q.Tarantinoа что мешает сразу после выполнения sqlplus в скрипте прописать
$v_password=""
?
Вообще то: unset v_password
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39111038
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nik_xQ.Tarantinoа что мешает сразу после выполнения sqlplus в скрипте прописать
$v_password=""
?
Вообще то: unset v_password
ну я лишь подсказал куда копать.
не вижу разницы присвоить пустое значение или сделать переменной unset.
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39111079
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
убрать x - chmod -x file
так его нельзя будет запустить ./file
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39111085
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexy_blackубрать x - chmod -x file
так его нельзя будет запустить ./file
его именно так и надо запускать :)
речь шла о запуске ". file"
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39111230
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Q.Tarantinoalexy_blackубрать x - chmod -x file
так его нельзя будет запустить ./file
его именно так и надо запускать :)
речь шла о запуске ". file"

scipt ttt.sh
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#!/bin/bash
export MYSHLVL=${MYSHLVL:-$SHLVL}
if [ .${MYSHLVL}. = .${SHLVL}. ]
then   # force run bash script
echo run script by bash L$MYSHLVL L$SHLVL
echo "$BASH_SOURCE $@"
bash $BASH_SOURCE $@
else   # script body
echo "script body L$MYSHLVL L$SHLVL"
echo "cmd: $0"
for i in $@
do
  echo "arg: $i"
done
export PASS=secret
echo $1 $2 $PASS
exit
fi
check environment variable after execution
set | grep secret



ну и проверяем
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
$ bash $PWD/ttt.sh p1 p2 p3
script body L1 L2
cmd: /home/oracle/tmp/ttt.sh
arg: p1
arg: p2
arg: p3
p1 p2 secret
$ $PWD/ttt.sh p1 p2 p3
script body L1 L2
cmd: /home/oracle/tmp/ttt.sh
arg: p1
arg: p2
arg: p3
p1 p2 secret
$ source $PWD/ttt.sh p1 p2 p3
run script by bash L1 L1
/home/oracle/tmp/ttt.sh p1 p2 p3
script body L1 L2
cmd: /home/oracle/tmp/ttt.sh
arg: p1
arg: p2
arg: p3
p1 p2 secret
$ source ttt.sh
run script by bash L1 L1
ttt.sh
script body L1 L2
cmd: ttt.sh
secret
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39111556
Фотография ХБ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim LejninQ.Tarantinoпропущено...

его именно так и надо запускать :)
речь шла о запуске ". file"

scipt ttt.sh
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#!/bin/bash
export MYSHLVL=${MYSHLVL:-$SHLVL}
if [ .${MYSHLVL}. = .${SHLVL}. ]
then   # force run bash script
echo run script by bash L$MYSHLVL L$SHLVL
echo "$BASH_SOURCE $@"
bash $BASH_SOURCE $@
else   # script body
echo "script body L$MYSHLVL L$SHLVL"
echo "cmd: $0"
for i in $@
do
  echo "arg: $i"
done
export PASS=secret
echo $1 $2 $PASS
exit
fi
check environment variable after execution
set | grep secret



ну и проверяем
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
$ bash $PWD/ttt.sh p1 p2 p3
script body L1 L2
cmd: /home/oracle/tmp/ttt.sh
arg: p1
arg: p2
arg: p3
p1 p2 secret
$ $PWD/ttt.sh p1 p2 p3
script body L1 L2
cmd: /home/oracle/tmp/ttt.sh
arg: p1
arg: p2
arg: p3
p1 p2 secret
$ source $PWD/ttt.sh p1 p2 p3
run script by bash L1 L1
/home/oracle/tmp/ttt.sh p1 p2 p3
script body L1 L2
cmd: /home/oracle/tmp/ttt.sh
arg: p1
arg: p2
arg: p3
p1 p2 secret
$ source ttt.sh
run script by bash L1 L1
ttt.sh
script body L1 L2
cmd: ttt.sh
secret


..."и много других интересных слов"

можно, я напомню мой вопрос:
а чем плохо через функцию и local переменную?
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39123845
ХБ,

судя по http://docs.oracle.com/cd/B28359_01/server.111/b28319/ldr_params.htm вы лепите ненужные костыли, sqlldr сам может пароль спрашивать
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39123986
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я предпочитаю для загрузки создавать external пользователя
Тогда указывать пароль совсем не понадобится
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SQL> show parameters prefix

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix                    string      ops$
SQL> create user ops$oracle identified externally;

User created.

SQL> grant create session to ops$oracle;

Grant succeeded.

$ id
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)
$ echo show user | sqlplus -l -s / as sysdba
USER is "SYS"
$ echo show user | sqlplus -l -s /
USER is "OPS$ORACLE"
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39124424
Фотография ХБ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимопроходилтреднечиталХБ,

судя по http://docs.oracle.com/cd/B28359_01/server.111/b28319/ldr_params.htm вы лепите ненужные костыли, sqlldr сам может пароль спрашивать
у вас очень говорящий ник :)
то есть если мой скрипт вызывает SQL Loader 20 раз, то вы предлагаете пользователю вводить пароль 20 раз?
Мило.
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39124428
Фотография ХБ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim LejninЯ предпочитаю для загрузки создавать external пользователя
Тогда указывать пароль совсем не понадобится

Вы наверное работаете админом в маленькой конторке.
Я, на минуточку, developer.
В сильно большой конторе.
Это трудно объяснить тем кто не пробовал, но работа в таких environments сильно напоминает бег в мешках на Эверест со связаными руками.

Кстати, выяснился недостаток решения через функцию.
Наш супер-дупер крутой DBA не удосуживается читать deployment steps в которых сказано запускать через source и по-простому запускает скрипты через [ bash <script name>], в результате получается ошибка на оператор return.
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39126201
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Q.Tarantinoalexy_blackубрать x - chmod -x file
так его нельзя будет запустить ./file
его именно так и надо запускать :)
речь шла о запуске ". file"

нет, это должно решить проблему. запускать нужно будет так.
Код: sql
1.
bash my_super_script.sh

и этот пароль не будет доступен из вне.

я вот тут скриптик написал tt.sh
Код: sql
1.
2.
export ss="hel"
echo $ss



Код: bash
1.
2.
3.
→ bash tt.sh;
hel
→ echo $ss
→
ничего не выводит
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39126284
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexy_blackничего не выводит
логично, не должен выводить. только не ясно что ты хотел сказать своим примером?
ты, видимо, забыл прочесть сообщение ТС
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39126285
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХБMasterZiv,
запускать-то буду не я, а юзеры и могут запустить как угодно.
Есть простой способ не допустить запуска через source?
резонный вопрос - если юзеры могут запускать скрипт, то и пароль в нем могут спокойно увидеть.
в чем проблема то? не пускай юзеров на хост :)
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39126286
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Q.TarantinoХБMasterZiv,
запускать-то буду не я, а юзеры и могут запустить как угодно.
Есть простой способ не допустить запуска через source?
резонный вопрос - если юзеры могут запускать скрипт, то и пароль в нем могут спокойно увидеть.
в чем проблема то? не пускай юзеров на хост :)
не то хотел сказать. юзер запускает скрипт в своей сессии... он же его и набирает, правильно?
и почему он не имеет права его же и увидеть?
или я что-то не понимаю, или нет логики в постановки задачи
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39126288
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХБи потом передавал $v_password в вызов
Код: powershell
1.
sqlldr userid=name@bd/$v_password


Самое смешное, что при таком подходе его увидит любой подключенный юзер через ps
Это намного менее секурно, чем оставшееся значение переменной в этой же сессии (где, как справедливо напомнили, см же юзер его и вводит)
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39126362
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Q.Tarantinoalexy_blackничего не выводит
логично, не должен выводить. только не ясно что ты хотел сказать своим примером?
ты, видимо, забыл прочесть сообщение ТС

ну, я так понял, что у него, при таком же раскладе, и выводиться :)

то есть потом, если написать $echo $v_password то он напечаетается. вот я предложил просто запутстить его в отдельной оболочке. ничего не должно вывестесь :)
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39126576
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровХБи потом передавал $v_password в вызов
Код: powershell
1.
sqlldr userid=name@bd/$v_password



Самое смешное, что при таком подходе его увидит любой подключенный юзер через ps
Это намного менее секурно, чем оставшееся значение переменной в этой же сессии (где, как справедливо напомнили, см же юзер его и вводит)
кстати, да :)
потому лучше забить. или не пускать обычных пользователей на хост, что им там делать то?
...
Рейтинг: 0 / 0
скрипт запрашивающий пароль - как сберечь?
    #39126734
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХБVadim LejninЯ предпочитаю для загрузки создавать external пользователя
Тогда указывать пароль совсем не понадобится

Вы наверное работаете админом в маленькой конторке.
Я, на минуточку, developer.
В сильно большой конторе.
Это трудно объяснить тем кто не пробовал, но работа в таких environments сильно напоминает бег в мешках на Эверест со связаными руками.

Кстати, выяснился недостаток решения через функцию.
Наш супер-дупер крутой DBA не удосуживается читать deployment steps в которых сказано запускать через source и по-простому запускает скрипты через [ bash <script name>], в результате получается ошибка на оператор return.
Именно поэтому мой скрипт проверят уровень запуска
По хорошему требуется еще и проверка на повторный запуск, но это уже совсем другая история

Из опыта работы: Проект 50 физических серверов, 80 систем OeBS и 5 поддерживаемых ОС
(на то время VM не были еще так популярны)

Скажите, запуск sqlldr на стороне сервера является зоной отвественности разработчика или администратора? Или этот скрипт запускается на сервере приложений?

У Вас разработчики имеет свои учётные записи на стороне сервера БД?
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / скрипт запрашивающий пароль - как сберечь?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]