Удаление vg и lv после физического отключения диска

Случилось так, что я глянул в mount и не увидел примонтированных LV со внешнего диска и спокойно выдернул usb коннектор того самого диска. И только через пару дней обнаружил, что команды lvs и vgs проходят с ошибками. Это были активные vg о которых я забыл перед физическим отключением диска. Так как тома́ с данными были предварительно размонтированы то сами данные на отключённом диске были в порядке. Меня раздражало несколько этих сообщений об ошибке. Нужно было их убрать. И конечно без перезагрузки сервера.

[root@csa01 etc]# vgs
  /dev/VG_RAID_COPY/lv_1: read failed after 0 of 4096 at 2000393535488: Input/output error
  /dev/VG_RAID_COPY/lv_1: read failed after 0 of 4096 at 2000393592832: Input/output error
  /dev/VG_RAID_COPY/lv_1: read failed after 0 of 4096 at 0: Input/output error
  /dev/VG_RAID_COPY/lv_1: read failed after 0 of 4096 at 4096: Input/output error
  VG          #PV #LV #SN Attr   VSize   VFree  
  VG_CSA01_DATA   1   3   0 wz--n-   7.28t   4.79t
  VG_CSA01x       1   5   0 wz--n- 465.54g 421.68g

Continue reading Удаление vg и lv после физического отключения диска

Проверка прав доступа к файлам Linux

Суть проверки проста: от имени пользователя чьи права проверяются нужно запустить команды

Проверка прав на чтение

su -l login-for-user
find / -type d \( -wholename '/dev/*' -o -wholename '/sys/*' -o -wholename '/proc/*' \) -prune -o -exec test -r {} \; -exec echo {} is readable \; 2>/dev/null

Проверка прав на запись

su -l login-for-user
find / -type d \( -wholename '/dev/*' -o -wholename '/sys/*' -o -wholename '/proc/*' \) -prune -o -exec test -w {} \; -exec echo {} is writable \; 2>/dev/null

Чтобы разбрать результат по полям нужно через конвеер отправить вывод команде:

cut -d'/' -f1,2,3 | sort -u

Разновидность команды (на современных версиях find):

su -l login-for-user
find / ! -writable
find / -writable

Увеличение размера файловой системы ext4

Один мой знакомый купил виртуалку у хостера с предустановленной системой. И почему-то постеснялся побеспокоить хостера с вопросом, а где же его заявленные 100G. Хостер очевидно движимый самыми добрыми намерениями предустановил виртуалку на маленький диск оставив остальное пространство свободным. Я так понимаю чтобы пользователь смог создать нужные разделы. Ничего сложного здесь нет. Хотя самым муторным для меня оказалось попасть в нужный размер чтобы занять всё доступное пространство.

[root@maxbel ~]# vgdisplay --units S vg_maxbel
  Free  PE / Size       23072 / 189005824 Se
[root@maxbel ~]# lvextend -L +189005824s /dev/vg_maxbel/lv_root 

Проверяем что место полностью распределено

[root@maxbel ~]# vgs --units s vg_maxbel
  VG        #PV #LV #SN Attr   VSize      VFree
  vg_maxbel   1   3   0 wz--n- 208683008S    0S

Изменяем размер на лету (online)

[root@maxbel ~]# resize2fs -p /dev/vg_maxbel/lv_root 

наслаждаемся результатом:

[root@maxbel var]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_maxbel-lv_root
                       94G  971M   88G   2% /
tmpfs                 504M     0  504M   0% /dev/shm
/dev/vda1             485M   30M  431M   7% /boot
/dev/mapper/VolGroup00-LogVol00
                       30G  3.7G   25G  13% /mnt/vdb1

changepassword-0.9 ошибка компилирования

Симптомы:

[root@fluni-fs changepassword-0.9]# make
gcc -c -o smbencrypt/SMBPasswdGen.o  smbencrypt/SMBPasswdGen.c
gcc -c -o smbencrypt/encrypt.o       smbencrypt/encrypt.c
gcc -c -o smbencrypt/md4.o           smbencrypt/md4.c
gcc -c -o smbencrypt/smbencrypt.o    smbencrypt/smbencrypt.c
gcc changepassword.c -o changepassword.cgi smbencrypt/SMBPasswdGen.o smbencrypt/md4.o smbencrypt/smbencrypt.o smbencrypt/encrypt.o -lcrypt -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DHAVE_LIBCRYPT=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_STDIO_H=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_PWD_H=1 -DHAVE_ERRNO_H=1 -DHAVE_SIGNAL_H=1 -DHAVE_SHADOW_H=1 -DHAVE_TIME_H=1  -DEnglish -DSMBPASSWD="/etc/smbpasswd" -DSQUIDPASSWD="/etc/squid/passwd" -DLOGO="none" -L./smbencrypt -ldes
/usr/bin/ld: skipping incompatible ./smbencrypt/libdes.a when searching for -ldes
/usr/bin/ld: cannot find -ldes
collect2: ld returned 1 exit status
make: *** [changepassword.cgi] Error 1

Continue reading changepassword-0.9 ошибка компилирования

Установка fail2ban в Centos 6

fail2banНа свеже установленном минималистическом Centos yum не находит пакета fail2ban. Его можно поставить из исходников, но проще и удобнее поставить из репозитория. Необходимо только подключить его.

Заходите по ссылке http://pkgs.repoforge.org/rpmforge-release/ и выбирайте последнюю версию, я выбирал 32-х битную версии 0.5.2-2.

# yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

И потом ставим fail2ban:

# yum install fail2ban

Конфиг по умолчанию настроен. Но проверим некоторые важные опции:

vi /etc/fail2ban/jail.conf
 ignoreip = 127.0.0.1/8  Здесь могут быть IP адреса и CIDR маска или DNS хост. Fail2ban не будет банить перечисленные адреса. Несколько адресов нужно разделить пробелами

 bantime = 600  время бана в секундах (600 сек = 10 минут)

 findtime = 600  хост будет забанен если исчерпает отведёные ему попытки за последние findtime секунд.

 maxretry = 3  максимальное количество неверных попыток до бана.

Включаем автозапуск:

# chkconfig fail2ban on

Запускаем:

# service fail2ban restart

Если до этого он не был запущен при остановке будет ошибка, это не важно. Главное чтобы запустился.

Всё.


Для Centos 6 можно также подключить этот репозиторий:
для 32 бит

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

для 64 бит

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Проверка зарегистрирован ли пользователь

Как проверить наличие регистрации пользователя в системе?

/etc/passwd – банально и не всегда работает
getent passwd – может ложно сработать или выдать несколько результатов.

/bin/id

А вот это самое то!
Код возврата команды id равен 0 если пользователь (или группа) присутствует, иначе всегда 1.

#!/bin/bash
USERID="$1"
/bin/id $USERID >/dev/null
[ $? -eq 0 ] && echo "User found" || echo "User not found"</code>

/bin/id -g $USERID >/dev/null
[ $? -eq 0 ] && echo "Group found" || echo "Group not found"