Есть ли в Linux способ отключить целые диски?

Есть хак, и есть способ сделать это правильно .

Хакерский способ состоит в том, чтобы поднять UID_MINи GID_MINв /etc/login.defs, чтобы ваши зарезервированные UID находились между SYS_UID_MAXи UID_MIN, а GID (, если они есть, )между SYS_GID_MAXи GID_MIN. Таким образом, обычные инструменты (useradd, adduser, usermodи т. д. )не используют их для новых учетных записей пользователей, если только вы не заставите их (, явно указав новый UID и/или GID ). ]. Возможно, вам потребуется переназначить любые существующие UID в этом новом диапазоне промежутков на диапазон UID_MIN... UID_MAX, а GID — на диапазон GID_MIN... GID_MAX, чтобы инструменты обрабатывали их как обычные учетные записи пользователей.

Правильный способ — дополнительно настроить NSS(и PAM, обычно )для просмотра этих зарезервированных пользователей, чтобы инструменты не путались.

Самый простой способ сделать это — использовать libnss-extrausersмодуль NSS и pam_extrausersмодуль PAM, чтобы вы могли поместить этих специальных пользователей в/var/lib/extrausers/passwd(и не -ввод пароля в /var/lib/extrausers/shadow), плюс необязательно сгруппировать информацию в /var/lib/extrausers/groups. Эти модули должны быть доступны во всех распространенных дистрибутивах Linux.

Обратите внимание: если вы добавите этих пользователей в NSS/PAM, вы можете расширить SYS_UID_MAXи SYS_GID_MAX, чтобы охватить этих зарезервированных пользователей,просто в качестве меры предосторожности :Видите ли, я не проверял, перечисляют ли/какие инструменты только пользователей UID_MIN... UID_MAXили просто исключают пользователей SYS_UID_MIN... SYS_UID_MAX. Я подозреваю, что есть много программистов, которые ошибочно полагают, что два набора дополняют друг друга, поэтому обработка этих зарезервированных UID/GID как системных учетных записей, вероятно, является самым безопасным вариантом.

3
29.07.2019, 22:53
1 ответ

Вы можете удалить устройство хранения, используя echo 1 > /sys/block/device-name/device/delete, где device-nameможет быть sda.

Ссылка:RedHat Doc

Ensuring a Clean Device Removal

  1. Close all users of the device and backup device data as needed.
  2. Use umount to unmount any file systems that mounted the device.
  3. Remove the device from any md and LVM volume using it. If the device is a member of an LVM Volume group, then it may be necessary to move data off the device using the pvmove command, then use the vgreduce command to remove the physical volume, and (optionally) pvremove to remove the LVM metadata from the disk.
  4. If the device uses multipathing, run multipath -l and note all the paths to the device. Afterwards, remove the multipathed device using multipath -f device.
  5. Run blockdev –flushbufs device to flush any outstanding I/O to all paths to the device. This is particularly important for raw devices, where there is no umount or vgreduce operation to cause an I/O flush.
  6. Remove any reference to the device's path-based name, like /dev/sd, /dev/disk/by-path or the major:minor number, in applications, scripts, or utilities on the system. This is important in ensuring that different devices added in the future will not be mistaken for the current device.
  7. Finally, remove each path to the device from the SCSI subsystem. To do so, use the command echo 1 > /sys/block/device-name/device/delete where device-name may be sde, for example.
  8. Another variation of this operation is echo 1 > /sys/class/scsi_device/h:c:t:l/device/delete, where h is the HBA number, c is the channel on the HBA, t is the SCSI target ID, and l is the LUN.
0
27.01.2020, 21:17

Теги

Похожие вопросы