/usr/bin/su
выполняемая команда. - что-то - параметр, передаваемый той команде.
Должно быть соответствие regex в/etc/sudoers, позволяющем ту команду и тот параметр.
Если проверить manpage с помощью «man mkpasswd», вы увидите, что эта команда также принимает дополнительный параметр
-S, --salt = STRING
Если его опустить, будет использоваться случайное значение соли, и поэтому зашифрованное значение пароля также будет другим.
Если вы предоставляете соль,
mkpasswd -m sha-512 password -s "11223344"
$6$11223344$YzaRt.fnidpXmKw.Dl20htfOrJ8X2Yx3V.h5zUlhlN2SdczempQmQcDcMYd6mHiXlaMqyGt200zDwuZiC8ZZw1
вы всегда получаете один и тот же результат.
Кстати, значение соли можно увидеть в самом начале выходной строки: это значение от $
до 8-16 символов длиной.
Если требуется 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 --gen-key
на сервере (или каким бы он ни был). Большинство деталей не имеет значения, но одна из них - это парольная фраза. С помощью этого можно:
chmod 400
) Для этого примера я покажу ключ с паролем Создайте ключ и настройте парольную фразу следующим образом:
~ » 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
:
Что такое
/etc/bash.bashrc
? Похоже, это не задокументировано.Версия bash для Debian компилируется со специальной опцией (
-DSYS _ BASHRC
), что делаетbash
читать/etc/bash.bashrc
перед~/.bashrc
для интерактивных оболочек без входа в систему. Итак, в системах Debian/etc/bash.bashrc
имеет значение~/.bashrc
, поскольку/etc/profile
имеет значение~/.bash _ профиль
.
из Bash
:
, когда запущена интерактивная оболочка, которая не является системой Shell, Bash Читает и выполняет команды из /etc/bash.bashrc и ~ / .bashrc, если Эти файлы существуют. Это может быть ингибировано с помощью опции --NORC. Опция файла --rcfile заставляет Bash читать и выполнять команды из файла вместо /etc/bash.bashrc и ~ / .bashrc.
Документация, которую вы цитате, не кажется актуальной.
Технически, /etc/bash.bashrc
вызывается для интерактивных оболочек bash без входа -для всех пользователей.
Однако обычно /etc/profile
(, который вызывается для всех оболочек входа в систему, )также вызывает /etc/bash.bashrc
. Это означает, что /etc/bash.bashrc
также вызывается для всех оболочек входа в систему.
Однако в первой строке обычно проверяется выход, если -не интерактивный.
Итак, в конце концов, эффективно /etc/bash.bashrc
выполняется для всех интерактивных оболочек bash (логин и не -логин ). Думайте об этом как о системе -широкой~/.bashrc