Гайд: удаление /etc/bashrc.d/00Lock.sh в Linux: диагностика блокировок, снятие флага immutable
Важное предупреждение
Удаление этого скрипта может снять ограничения на выполнение команд, историю, таймауты сессий или другие политики безопасности. Убедитесь, что вы делаете это осознанно (например, для отладки, миграции или замены на свой профиль).
Шаг 1: Диагностика причины блокировки
Выполняйте команды последовательно. Если одна из них устраняет проблему, переходите к удалению.
1.1. Проверка прав и запуск от root
ls -l /etc/bashrc.d/00Lock.sh
Если владелец не root или нет прав на запись:
sudo -i
(Дальнейшие команды выполняйте из сессии root)
1.2. Проверка immutable-флага (самая частая причина)
Файлы безопасности часто защищаются от удаления через атрибут i:
lsattr /etc/bashrc.d/00Lock.sh
Если в выводе есть буква i (например: ----i----------- /etc/bashrc.d/00Lock.sh):
chattr -i /etc/bashrc.d/00Lock.sh
Проверьте снова: lsattr /etc/bashrc.d/00Lock.sh → флага i быть не должно.
1.3. Проверка состояния файловой системы
Если /etc смонтирован в ro (read-only), удаление невозможно:
findmnt -T /etc
Ищите ro в опциях. Если есть:
mount -o remount,rw /
(Внимание: если система в режиме восстановления или контейнере, это может быть задумано администратором/оркестратором.)
1.4. Проверка занятости процессами
Редко, но скрипт может быть открыт демоном или оболочкой:
lsof +D /etc/bashrc.d/ 2>/dev/null | grep 00Lock
# или
fuser -v /etc/bashrc.d/00Lock.sh 2>/dev/null
Если процессы есть, аккуратно остановите их или перезагрузитесь в single-user mode.
Шаг 2: Удаление файла
После снятия блокировок:
rm -f /etc/bashrc.d/00Lock.sh
Если файл является символьной ссылкой:
file /etc/bashrc.d/00Lock.sh
# Если "symbolic link to ...", удалите ссылку, а не цель (если цель общая)
rm /etc/bashrc.d/00Lock.sh
Шаг 3: Проверка результата
ls -la /etc/bashrc.d/00Lock.sh
Ожидается:
ls: cannot access '/etc/bashrc.d/00Lock.sh': No such file or directory
Перезапустите текущую оболочку или залогиньтесь заново, чтобы убедиться, что скрипт не подгружается:
bash --login
echo "Профиль загружен без 00Lock.sh"
Почему он мог появиться и что делать дальше
| Источник | Как проверить | Рекомендация |
|---|---|---|
| Пакет системы (openSUSE/SLES security-hardening) | rpm -qf /etc/bashrc.d/00Lock.sh |
Если принадлежит пакету, rm сработает, но файл вернётся при zypper update. Лучше маскировать пакет или использовать /etc/bashrc.d/local.sh для переопределений. |
| PAM/Security модуль (fail2ban, pam_tally, custom hardening) | grep -r "00Lock" /etc/pam.d/ /etc/profile.d/ /etc/security/ |
Проверьте, не зависит ли от него блокировка сессий. |
| Ansible/Puppet/Salt | grep -r "00Lock" /etc/ansible /var/lib/puppet /etc/salt |
Файл будет пересоздан при следующем прогоне. Управляйте через код инфраструктуры. |
Альтернатива без удаления
Если вы хотите временно отключить скрипт, но сохранить его для аудита:
mv /etc/bashrc.d/00Lock.sh /etc/bashrc.d/00Lock.sh.disabled
Или добавьте в него в начало строку:
return 0 # Отключено администратором