необходимо использовать:
fn=/full/path/to/db.backup.$(date +%m-%d-%y).sql
или
cd /full/path/to/
перед экспортом базы данных
если Ваш cronjob не похож:
* * * * * cd /full/path/to && backup.sh
Запуск безвискивых контейнеров является самым безопасным способом управления контейнерами в производственной среде. Контейнеры получают плохую рекламу, когда речь идет о безопасности, и одна из причин, потому что некоторые пользователи обнаружили, что если пользователь получает root в контейнере, то есть возможность набираться и на хосте. В основном то, что невибализируемая контейнер делает маску пользователя с хоста. С безвискивыми контейнерами, не пользователи root могут создавать контейнеры и будут иметь и появляться в контейнере в качестве root, но появится как userId 10000, например, на хосте (что бы вы ни сопоставили пользователя). Недавно я написал сообщение в блоге по этому поводу на основе в блоге Стефане Грабер серии LXC (один из блестящих умов / ведущих разработчиков LXC и кого-то, чтобы определенно следовать). Я снова говорю, чрезвычайно блестяще.
Из моего блога:
из контейнера:
lxc-attach -n ubuntu-unprived
root@ubuntu-unprived:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 04:48 ? 00:00:00 /sbin/init
root 157 1 0 04:48 ? 00:00:00 upstart-udev-bridge --daemon
root 189 1 0 04:48 ? 00:00:00 /lib/systemd/systemd-udevd --daemon
root 244 1 0 04:48 ? 00:00:00 dhclient -1 -v -pf /run/dhclient.eth0.pid
syslog 290 1 0 04:48 ? 00:00:00 rsyslogd
root 343 1 0 04:48 tty4 00:00:00 /sbin/getty -8 38400 tty4
root 345 1 0 04:48 tty2 00:00:00 /sbin/getty -8 38400 tty2
root 346 1 0 04:48 tty3 00:00:00 /sbin/getty -8 38400 tty3
root 359 1 0 04:48 ? 00:00:00 cron
root 386 1 0 04:48 console 00:00:00 /sbin/getty -8 38400 console
root 389 1 0 04:48 tty1 00:00:00 /sbin/getty -8 38400 tty1
root 408 1 0 04:48 ? 00:00:00 upstart-socket-bridge --daemon
root 409 1 0 04:48 ? 00:00:00 upstart-file-bridge --daemon
root 431 0 0 05:06 ? 00:00:00 /bin/bash
root 434 431 0 05:06 ? 00:00:00 ps -ef
от хоста:
lxc-info -Ssip --name ubuntu-unprived
State: RUNNING
PID: 3104
IP: 10.1.0.107
CPU use: 2.27 seconds
BlkIO use: 680.00 KiB
Memory use: 7.24 MiB
Link: vethJ1Y7TG
TX bytes: 7.30 KiB
RX bytes: 46.21 KiB
Total bytes: 53.51 KiB
ps -ef | grep 3104
100000 3104 3067 0 Nov11 ? 00:00:00 /sbin/init
100000 3330 3104 0 Nov11 ? 00:00:00 upstart-udev-bridge --daemon
100000 3362 3104 0 Nov11 ? 00:00:00 /lib/systemd/systemd-udevd --daemon
100000 3417 3104 0 Nov11 ? 00:00:00 dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
100102 3463 3104 0 Nov11 ? 00:00:00 rsyslogd
100000 3516 3104 0 Nov11 pts/8 00:00:00 /sbin/getty -8 38400 tty4
100000 3518 3104 0 Nov11 pts/6 00:00:00 /sbin/getty -8 38400 tty2
100000 3519 3104 0 Nov11 pts/7 00:00:00 /sbin/getty -8 38400 tty3
100000 3532 3104 0 Nov11 ? 00:00:00 cron
100000 3559 3104 0 Nov11 pts/9 00:00:00 /sbin/getty -8 38400 console
100000 3562 3104 0 Nov11 pts/5 00:00:00 /sbin/getty -8 38400 tty1
100000 3581 3104 0 Nov11 ? 00:00:00 upstart-socket-bridge --daemon
100000 3582 3104 0 Nov11 ? 00:00:00 upstart-file-bridge --daemon
lxc 3780 1518 0 00:10 pts/4 00:00:00 grep --color=auto 3104
, так как вы можете видеть, работают внутри контейнера, как root, но не отображаются как root, а на 100000 от хоста.
Так что для суммирования: преимущества - добавленная безопасность и добавлена изоляция для безопасности. Недостатком - немного запутанно обернуть голову сначала и не для новичка пользователя.
Я подозреваю, что это регрессия относительно этой ошибки https://rhn.redhat.com/errata/rhba-2011-1096.html
из Errata:
Это обновление исправлению следующую ошибку:
- до этого обновления, возникла проблема при входе в пароль, используя утилита прокорки-проклятия; Вместо пароля отображалось сообщение об ошибке Диалог въезда, если проклятые проклятия были запущены по пользователю, отличному от пользователя, который владел текущим TTY. Эта ошибка была исправлена в этом обновлении, так что никакой ошибки Сообщение теперь отображается, а просьба проходит проклятия просьба, как ожидалось. (BZ # 677665)
Проблема, по-видимому, когда вы или sudo, TTY все еще принадлежит первоначальному владельцу TTY, который дует вверх.
Обратите внимание, что мы не сможем создать ключи GPG как любого пользователя, отличного от root на системе Cent 6 вчера. Чтобы генерировать ключи, нам пришлось войти в систему как root, создайте клавиши, скопируйте .gpg dir в домашний каталог пользователя и изменить право собственности.
-121--87862-Ну, с общей ядром, несмотря на его повышение требований противника, чтобы не освободиться в некотором смысле (или, скорее, это помогает ограничить поверхность атаки), невидимые контейнеры все еще не полностью изолированы От прямых взлома, которые получают корень хозяина, несмотря на это.
По этой причине это немного неправильного предположения / претензии. Сказав, что уровень способности к технике у многих пользователей через Интернет все равно будет запустить услуги INET, во множестве способов, которые они на самом деле не технически способны, поэтому эй. :)
Я боюсь, что нет переносимого решения, особенно если вы хотите рассмотреть переменные без части значения или повторяющихся переменных. В недавней системе GNU:
env -0 | grep -z '^T' | tr '\0' '\n'
-121--254576- Было бы лучше использовать аутентификацию с открытым/закрытым ключом, но если вы по-прежнему хотите использовать пароль в простом текстовом сценарии, я бы использовал lftp
. Это отличный клиент, который позволяет ftp, sftp, ftps соединения, вам нужно будет только использовать «здесь документ» для полной транзакции:
lftp sftp://your.destination.sftp -u yourUser,YourPassword << fin
get yourfile
bye
fin
-121--167780- Они очень ценные инструменты для тестирования, песочницы и инкапсуляции. Хотите, чтобы веб-сервер был надежно заблокирован в своей рабочей среде, не имея доступа к конфиденциальным личным файлам? Используйте контейнер. У вас есть приложение, которое требует старых версий библиотек и определенных файлов конфигурации, несовместимых с другими приложениями? Также контейнер. Это в основном chroot сделано правильно. Это позволяет поддерживать сервисы достаточно раздельно, поэтому поддерживать каждую из них гораздо проще, и их можно перемещать или копировать на другую машину без необходимости беспокоить существующую систему.
Недостатком является то, что необходимо запомнить пространство имен почти для всего локального для контейнера. Вы должны знать, где вы находитесь, и коммуникация между контейнерами не является тривиальным. Это хорошая идея, когда вы нуждаетесь в модульности, но не хотите накладных расходов на виртуальные машины, и вещи, которые вы храните в контейнерах, не очень связаны.
Для «обычного» пользователя можно использовать контейнеры, чтобы использовать одну машину для двух человек, сохраняя их, как будто они находятся на совершенно разных машинах. Например, соседи по комнате.