Гайд: удаление /etc/bashrc.d/00Lock.sh в Linux: диагностика блокировок, снятие флага immutable

Пошаговый гайд по удалению системного скрипта 00Lock.sh в Linux. Диагностика блокировок, снятие immutable-флага, проверка прав и безопасное отключение.

2026.05.14                  


Гайд: удаление /etc/bashrc.d/00Lock.sh в Linux: диагностика блокировок, снятие флага immutableГайд: удаление /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  # Отключено администратором