FAQs - CentOS 7 - CentOS Wiki
Поломалась база RPM
При обновлении выдает такие сообщения:
[root@centos ~]# yum update ошибка: rpmdb: BDB0113 Thread/process 13709/140468900747072 failed: BDB1507 Thread died in Berkeley DB library ошибка: ошибка(5) db-30973 из dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery ошибка: невозможно открыть индекс Packages используя db5 - (-30973) ошибка: не могу открыть базу данных Packages в /var/lib/rpm CRITICAL:yum.main: Error: rpmdb open failed
Решение
rm -f /var/lib/rpm/__db.* rpm -vv --rebuilddb
Проблемы при обновлении CentOS 7.6 -> 7.7
При выполнении yum update - вываливается ошибка
Error: Package: 1:grub2-tools-2.02-0.65.el7.centos.2.x86_64 (@CentOS-Updates)
Лечится
yum remove grub2 grub2-common grub2-pc grub2-pc-modules grub2-tools grub2-tools-efi grub2-tools-extra grub2-tools-minimal yum install grub2 grub2-common grub2-pc grub2-pc-modules grub2-tools grub2-tools-efi grub2-tools-extra grub2-tools-minimal
Как посмотреть установленные пакеты?
yum list installed
У меня сайт использует nginx в качестве веб-сервера. При включенном selinux не работает и в лог /var/log/audit/audit.log пишет:
type=AVC msg=audit(1493885790.745:101): avc: denied { name_connect } for pid=950 comm="php-fpm" dest=6379 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:redis_port_t:s0 tclass=tcp_socket type=SYSCALL msg=audit(1493885790.745:101): arch=c000003e syscall=42 success=no exit=-13 a0=6 a1=7f2ba3c67060 a2=10 a3=590ae35e items=0 ppid=684 pid=950 auid=4294967295 uid=995 gid=993 euid=995 suid=995 fsuid=995 egid=993 sgid=993 fsgid=993 tty=(none) ses=4294967295 comm="php-fpm" exe="usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)
Посмотреть политики можно командой
getsebool -a abrt_anon_write --> off abrt_handle_event --> off abrt_upload_watch_anon_write --> on antivirus_can_scan_system --> off antivirus_use_jit --> off auditadm_exec_content --> on authlogin_nsswitch_use_ldap --> off ...
Попробуйте для начала разрешить доступ к портам системы:
setsebool -P httpd_can_network_connect on
На CentOS 7 работает сервер баз данных postgresql. В pg_hba.conf доступ разрешен, но selinux не пускает.
[root@6c ~]# tail -f /var/log/audit/audit.log
Попробуйте выставить разрешения.
setsebool -P httpd_can_network_connect_db 1 setsebool -P httpd_can_network_db 1
В Centos 7 не могу найти команды semanage?
Semanage инструмент для управления политиками в selinux. Чтобы установить его, выполните:
yum install policycoreutils-python
Selinux, по умолчанию, разрешает файлы для веб сервера хранить в определенных местах, например /var/www/html. У меня размер диска под корень меньше чем раздел для домашних директорий, как selinux донести, что корень сайта в другом будет месте?
Создаем новую директорию, для примера:
mkdir /var/www mkdir /var/www/html
далее в конфигурационном файле вашего веб сервера (apache, nginx ...) прописываете путь до новой директории и:
setsebool -P httpd_enable_homedirs 1 chcon -R -t httpd_sys_content_t /home/www/html
Новая проблема, форма на сайте загружает файлы на сервер в папку - /home/www/html/upload/files, но включенный selinux запрещает это сыпя проклятиями в лог /var/log/audit/audit.log
Укажем selinux папку, в которую разрешено из вне закачивать файлы:
chcon -R -h -t httpd_sys_script_rw_t /home/www/html/upload/files
Как перезапустить GNOME 3
service gdm status service gdm stop service gdm start
Как перезапустить X-ы
Для начала перейдите в консоль (на F1 работают X) - например Ctrl+Alt+F2.
Залогинтесь под root.
init 3 && init 5
то есть - погасить иксы и, если успешно, запустить иксы.
Как в консоли centos 7 настроить сеть?
Можно использовать утилиту nmtui
Установить утилиту:
yum install NetworkManager-tui
Cписок сетевых адаптеров можно получить командой:
nmcli device status
Мониторинг диска в консоли centos 7
yum install smartmontools
Информация о диске:
smartctl -i /dev/sda
Включить S.M.A.R.T. диска
smartctl -i /dev/sda
Просмотр значений S.M.A.R.T. для устройства /dev/sda
smartctl -A /dev/sda
Проверка "по быстрому"
smartctl -H /dev/sda
CentOS 7 как локаль русскую сделать
Имеем:
# localectl System Locale: LANG=en_US.UTF-8 VC Keymap: us X11 Layout: n/a
даем команды:
localectl set-locale LANG=ru_RU.UTF-8 localectl set-keymap ru
получаем:
# localectl System Locale: LANG=ru_RU.UTF-8 VC Keymap: ru X11 Layout: ru,us X11 Model: pc105 X11 Options: terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
Включение и отключение запуска графической оболочки при старте системы в CentOS 7
Как поменять HOSTNAME в CentOS 7?
Просмотр:
hostnamectl
Изменить:
hostnamectl set-hostname ваш_новый_hostname
Хотел обновиться, выдает ошибку
yum update .. --> Проверка зависимостей окончена Ошибка: kernel conflicts with selinux-policy-targeted-3.13.1-192.el7_5.6.noarch Вы можете попробовать --skip-broken чтобы обойти проблему
Посмотрим что за версии пакетов установлены
rpm -qa kernel selinux-policy-targeted kernel-3.10.0-862.2.3.el7.x86_64 kernel-3.10.0-862.14.4.el7.x86_64 kernel-3.10.0-862.6.3.el7.x86_64 kernel-3.10.0-862.11.6.el7.x86_64 selinux-policy-targeted-3.13.1-192.el7_5.6.noarch kernel-3.10.0-862.3.3.el7.x86_64 selinux-policy-targeted-3.13.1-229.el7_6.6.noarch
Удалим старый пакет selinux-policy и перезагрузим систему
yum remove selinux-policy-targeted-3.13.1-192.el7_5.6.noarch shgutdown -r 0
Далее yum update -y отработало нормально!
Selinux, когда включен не позволяет nginx проксировать proxy_pass контент
Чтобы не отключать selinux - выполните команду в консоли под root:
setsebool httpd_can_network_connect 1 -P
Selinux не пускает NGINX к порту
Запустил простенький веб-сервер на питоне:
python3 -m http.server 8888
в браузере отображается, а NGINX как обратный прокси его не видит.
NGINX по умолчанию доступ разрешен 80 и 443 портам, поэтому надо выполнить:
setsebool -P httpd_can_network_connect 1
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { proxy_pass http://localhost:8888/; index index.html index.htm; } # end location } # end server } # end http