Когда/etc/bash.bashrc вызывается?

/usr/bin/su выполняемая команда. - что-то - параметр, передаваемый той команде.

Должно быть соответствие regex в/etc/sudoers, позволяющем ту команду и тот параметр.

6
28.02.2015, 15:00
3 ответа

Если проверить manpage с помощью «man mkpasswd», вы увидите, что эта команда также принимает дополнительный параметр -S, --salt = STRING Если его опустить, будет использоваться случайное значение соли, и поэтому зашифрованное значение пароля также будет другим.

Если вы предоставляете соль,

mkpasswd -m sha-512 password -s "11223344"
$6$11223344$YzaRt.fnidpXmKw.Dl20htfOrJ8X2Yx3V.h5zUlhlN2SdczempQmQcDcMYd6mHiXlaMqyGt200zDwuZiC8ZZw1

вы всегда получаете один и тот же результат.

Кстати, значение соли можно увидеть в самом начале выходной строки: это значение от $ до 8-16 символов длиной.

-121--37413-

Если требуется MD5 контрольную сумму, можно перенести содержимое в файл и контрольную сумму, а затем передать файл и контрольную сумму (с разделителем) по почте.

С помощью MD5

При необходимости использования суммы MD5 можно изменить сценарий на следующий, который будет записан во временный файл, сгенерировать контрольную сумму, добавить ее, а затем отправить сообщение.

#!/bin/sh

outfile=$(mktemp)
echo -e "\nUptime"                                    > $outfile 2>&1
uptime                                               >> $outfile  2>&1
last -x --since yesterday                            >> $outfile  2>&1

md5=$(md5sum $outfile | cut -f1 -d' ')
echo-e  "\n==============================\n${md5}\n" >> $outfile 2>&1
cat $outfile | mail -s "Info" user

rm $outfile  # don't forget this - clean up your /tmp!

При этом все сообщения STDERR и STDOUT будут записаны в файл журнала и отправлены вам по электронной почте с добавленной в нижнюю часть контрольной суммой MD5, чтобы вы могли поместить выходные данные обратно в файл и повторно ввести контрольную сумму, чтобы убедиться, что они совпадают.

С помощью GPG

можно также создать (или использовать существующий) ключ GPG, который можно использовать для подписи сообщений, поступающих с сервера. Учитывая, что это будет настроено для подписания сообщений в автоматическом режиме, я настоятельно рекомендую не использовать этот ключ для чего-либо, что вам нужно сохранить в безопасности или нужно иметь высокое доверие, как и если ваша машина будет нарушена, этот ключ будет скомпрометирован.

Самый простой способ сделать это - создать ключ GPG с gpg --gen-key на сервере (или каким бы он ни был). Большинство деталей не имеет значения, но одна из них - это парольная фраза. С помощью этого можно:

  • Набор пустую парольную фразу ( не рекомендуется - никогда не создавать ключи без паролей)
  • Наборов парольную фразу и сохранить в файле ограниченного доступа ( chmod 400 )
  • Наборов парольную фразу и передать ее в команде GPG

Для этого примера я покажу ключ с паролем Создайте ключ и настройте парольную фразу следующим образом:

~ » gpg --gen-key
# enter in details for key
    ...
    pub   2048R/B44FD582 2015-02-28 [expires: 2015-03-01]
          Key fingerprint = CFAD 2D53 BB7F CA22 147C  9300 E858 EE8A B44F D582
    uid                  mytestkey (This is my key) <root@myserver.net>
    sub   2048R/D3AEDE76 2015-02-28 [expires: 2015-03-01]

~ » echo -n 'mypassphrase' > ~/.ssh/gpgsignkey
~ » chmod 400 ~/.ssh/gpgsignkey
~ » gpg -a --export root@myserver.net > myserver.key.asc

К этому времени на сервере будет находиться ключ, который можно использовать для подписи, с парольной фразой в файле ограниченного доступа в безопасном месте (~/.ssh поддерживается довольно жестким), а также открытый ключ в myserver.key.asc , который можно импортировать на локальном компьютере для проверки полученного сообщения.

Затем можно изменить задание cron для запуска сценария, выполняющего команду, а затем передать выходные данные через gpg, чтобы подписать сообщение на почтовом сервере.

#!/bin/sh

outfile=$(mktemp)
echo -e "\nUptime"                                    > $outfile 2>&1
uptime                                               >> $outfile  2>&1
last -x --since yesterday                            >> $outfile  2>&1

cat $outfile | gpg --clearsign -u signkey@my-server.net --passphrase-file /root/.ssh/gpgsignkey | mail -s "Info" user

rm $outfile

Затем можно импортировать открытый ключ в клиент электронной почты (при условии, что он поддерживает его) или другой механизм проверки ключа и удостовериться, что полученное сообщение действительно является отправленным.

-121--111557-

Из bash README :

  1. Что такое /etc/bash.bashrc ? Похоже, это не задокументировано.

    Версия bash для Debian компилируется со специальной опцией ( -DSYS _ BASHRC ), что делает bash читать /etc/bash.bashrc перед ~/.bashrc для интерактивных оболочек без входа в систему. Итак, в системах Debian /etc/bash.bashrc имеет значение ~/.bashrc , поскольку /etc/profile имеет значение ~/.bash _ профиль .

8
27.01.2020, 20:24

из Bash :

, когда запущена интерактивная оболочка, которая не является системой Shell, Bash Читает и выполняет команды из /etc/bash.bashrc и ~ / .bashrc, если Эти файлы существуют. Это может быть ингибировано с помощью опции --NORC. Опция файла --rcfile заставляет Bash читать и выполнять команды из файла вместо /etc/bash.bashrc и ~ / .bashrc.

Документация, которую вы цитате, не кажется актуальной.

1
27.01.2020, 20:24

Технически, /etc/bash.bashrcвызывается для интерактивных оболочек bash без входа -для всех пользователей.

Однако обычно /etc/profile(, который вызывается для всех оболочек входа в систему, )также вызывает /etc/bash.bashrc. Это означает, что /etc/bash.bashrcтакже вызывается для всех оболочек входа в систему.

Однако в первой строке обычно проверяется выход, если -не интерактивный.

Итак, в конце концов, эффективно /etc/bash.bashrcвыполняется для всех интерактивных оболочек bash (логин и не -логин ). Думайте об этом как о системе -широкой~/.bashrc

4
27.01.2020, 20:24

Теги

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