Рубрика: Linux
Наработки и статьи по работе с Linux
Ограничение пользователя SSH / SFTP домашним каталогом FreeBSD 10.4
Бывает ситуации, когда нужно дать доступ на сервер, но не желательно допустить, чтобы он видел «лишнее». Для этого можно ограничить пользователя домашним каталогом по ssh и sftp. Что нужно сделать для этого:
1) Создать пользователя:
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 |
root@w34rw34:~ # adduser test Username: test Full name: test test Uid (Leave empty for default): Login group [test]: Login group is test. Invite test into other groups? []: Login class [default]: Shell (sh csh tcsh nologin) [sh]: Home directory [/home/test]: Home directory permissions (Leave empty for default): Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: yes Lock out the account after creation? [no]: Username : test Password : <random> Full Name : test test Uid : 1005 Class : Groups : test Home : /home/test Home Mode : Shell : /bin/sh Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (test) to the user database. adduser: INFO: Password for (test) is: 34rfw34rfw34 Add another user? (yes/no): no Goodbye! |
2) В /etc/ssh/sshd_config добавляем следующие строчки:
1 2 |
Match user test ChrootDirectory /home/test |
Перестартуем sshd:
1 |
/etc/rc.d/sshd restart |
3) Ниже приведенным скриптом создадим «пользовательское окружение», т.е. фактически создадим набор команд шелла, доступных пользователю:
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
#!/bin/sh # В скрипт нужно передавать имя пользователя для которого создаем chroot окружение if [ "$1" = "" ] ; then echo " Usage: $0 [ username ]" exit fi USER=$1 GID=`cat /etc/master.passwd | grep "^$USER:" | cut -d ":" -f 4` HOME=/usr/home/$USER # Задаем список бинаников, нужных для работы в chroot BINS=" /usr/local/bin/mysql \ /bin/cat \ /bin/chmod \ /bin/cp \ /bin/csh \ /bin/date \ /bin/df \ /bin/echo \ /bin/expr \ /bin/ln \ /bin/ls \ /bin/mkdir \ /bin/mv \ /bin/ps \ /bin/pwd \ /bin/rm \ /bin/rmdir \ /bin/sh \ /usr/bin/awk \ /usr/bin/bzip2 \ /usr/bin/diff \ /usr/bin/du \ /usr/bin/ee \ /usr/bin/fetch \ /usr/bin/find \ /usr/bin/grep \ /usr/bin/gunzip \ /usr/bin/gzip \ /usr/bin/less \ /usr/bin/sed \ /usr/bin/sort \ /usr/bin/scp \ /usr/bin/ssh \ /usr/bin/tail \ /usr/bin/tar \ /usr/bin/touch \ /usr/bin/vi \ /usr/bin/uname \ /usr/bin/uptime \ /usr/local/bin/mc \ /usr/local/bin/mcedit \ /usr/local/bin/mcmfmt \ /usr/local/bin/unrar \ /usr/local/bin/unzip \ " # Создаем структуру каталогов chroot окружения mkdir $HOME/bin mkdir $HOME/etc mkdir $HOME/home mkdir $HOME/home/$USER mkdir $HOME/lib mkdir $HOME/libexec mkdir $HOME/tmp mkdir $HOME/usr mkdir $HOME/usr/bin mkdir $HOME/usr/local mkdir $HOME/usr/local/bin mkdir $HOME/usr/local/etc mkdir $HOME/usr/local/share mkdir $HOME/lib # Копируем бинарники в chroot окружение for item in $BINS; do cp $item $HOME$item done # Копируем всю папку /lib cp /lib/* $HOME/lib/ # Определяем какие библиотеки необходимо скопировать chroot for item in $BINS; do ldd $item |awk '{print $3}'|grep "." >> /tmp/libs done # Копируем библиотеки for item in `cat /tmp/libs|sort|uniq`; do cp $item $HOME/lib/ done # Копируем оставшиеся необходимые файлы и библиотеки cp /etc/termcap $HOME/etc/termcap cp /etc/resolv.conf $HOME/etc/resolv.conf cp /etc/nsswitch.conf $HOME/etc/nsswitch.conf cp -R /usr/local/share/mc $HOME/usr/local/share/mc cp /libexec/ld-elf.so.1 $HOME/libexec/ld-elf.so.1 # Создадим /etc/motd для пользователя echo "Welcome $USER" > $HOME/etc/motd # Теперь /etc/profile для него же echo 'export TERMCAP=/etc/termcap' > $HOME/etc/profile echo 'export PS1="$ "' >> $HOME/etc/profile # /etc/group тоже нужен свой cat /etc/group | grep $GID > $HOME/etc/group # Теперь внутри chroot создадим пользователя cat /etc/master.passwd|grep "^$USER:" > $HOME/etc/master.passwd pwd_mkdb -d $HOME/etc $HOME/etc/master.passwd # Выставляем права chown root:wheel $HOME chmod 755 $HOME chmod 755 $HOME chown -R $USER:$GID $HOME/bin chown -R $USER:$GID $HOME/etc chown -R $USER:$GID $HOME/home chown -R $USER:$GID $HOME/lib chown -R $USER:$GID $HOME/libexec chown -R $USER:$GID $HOME/tmp chown -R $USER:$GID $HOME/usr chmod 777 $HOME/tmp # Убираем за собой rm /tmp/libs |
5) Если необходимо сделать доступными пользователю еще какието папки (например из /usr/local/www/apache2, можно воспользоваться командой локального монтирования:
1 |
mount_nullfs /usr/local/www/apache24/sites/abc/ /home/test/home/test/site/ |
Unable to negotiate with X.X.X.X port 22: no matching cipher found.
Такая ошибка возникает если не согласованы протоколы безопасности на серверах. В моем случае было достаточно в /etc/ssh/ssh_config раскомментировать строчку Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
Ошибка во время установки пакетов FreeBSD 11.2
Ошибка:
1 2 |
pkg: warning: database version 34 is newer than libpkg(3) version 31, but still compatible pkg: sqlite error while executing INSERT OR ROLLBACK INTO pkg_search(id, name, origin) VALUES (?1, ?2 || '-' || ?3, ?4); in file pkgdb.c:1542: no such table: pkg_search |
Решение:
1 2 3 |
pkg shell CREATE VIRTUAL TABLE pkg_search USING fts4(id, name, origin); pragma user_version=33; |
Отзыв о сервисе бекапов backupland.com

Внимание! Статья «заказная», созданная ради плюшек от backupland.com
Не знаю правда дадут ли эти «плюшки», потому что буду не только описывать плюсы сервиса, но и минусы 😉 UPD: Дали 😉
Итак, озаботился созданием бекапов своего сервера. Услуга такая есть у хостера VDS, НО! услуга платная, и стоит 90руб за месяц плюс делается бекап образа всей виртуалки, а не пофайлово, как собственно мне нужно.
Полный образ сервера как таковой мне не нужен, в виду простоты поднятия обычного LAMP в любой момент. Нужны только копии БД и файлов сайтов. Задача простая. Посмотрим как справится с этой задачей сервис backupland.com » Читать далее