Linux? Если да посмотрите мишень (2) или старое разветвление на выходе.
Но я пошел бы для старого классика
for (dev in devs)
send (dev, command)
Эти команды обычно сводятся к одному системному вызову ioctl ()
, который очищает (1-я команда) или устанавливает (2-я команда) флаг IF_UP в сетевом драйвере.
Что происходит после этого, зависит от водителя. Он может включать или не включать сетевую интерфейсную плату. Он, вероятно, не будет «останавливаться» (выгружаться?) и «запускаться» (загружаться?) сам (но что-то еще в системе может быть, в ответ на то, что драйвер делает, например, код hotplug).
Драйвер, вероятно, удалит маршрут к интерфейсу, который он установил, когда интерфейс был первоначально запущен, и, вероятно, будет создано какое-то событие в зависимости от ядра (например, hotplug или udev и т.д.).
В Debian, вероятно, лучше использовать ifdown wlan0
и ifup wlan0
.
Amazon Linux, клон RHEL, использует RPM для определения разрешений на установленные файлы. Для определения владельца можно использовать команду rpm -qf/etc/shadow
. Это показывает, что /etc/shadow
является частью пакета setup
. Затем можно использовать базу данных RPM для запроса разрешений на этот файл. Существует программа rpmls
в пакете rpmdevtools, которая делает это, но вы можете сделать это с помощью простых RPM, если вы знаете правильный синтаксис:
$ rpm -q --qf='[%-11{filemodes:perms} %-8{fileusername} %-8{filegroupname} %{filenames}\n]' setup | grep /etc/shadow
---------- root root /etc/shadow
Это показывает, что ожидается, что/etc/shadow метод 0000. Ты не должен пытаться изменить его на что-то другое. Стек PAM прекрасно умеет считывать теневой файл. У тебя, наверное, есть другая проблема.
-121--150238-На мой взгляд, вы все еще должны использовать initramfs. Почти все будут делать, но вам понадобится модуль ядра файловой системы squashfs (если он еще не скомпилирован в ядро) в вашем образе initramfs.
Большинство систем initramfs уважают fstab - и определенно Дракут это делает. Таким образом, можно настроить два файла /etc/fstab
- один в образе .sfs
и один в образе initramfs.
{ cd /tmp; cat >fstab
mkdir -p sfs/sfs sfs/usb
dracut -i fstab /etc/fstab \
-i sfs sfs \
--add-drivers overlay \
--add-drivers squashfs \
initramfs.img
} <<"" #FSTAB
UUID={USB-UUID} /sfs/usb $usbfs defaults 0 0
/sfs/usb/img.sfs /sfs/sfs squashfs defaults 0 0
Честно говоря, я не совсем знаком с dracut
initramfs build system, и поэтому для успешного выполнения этой команды может потребоваться нечто большее. Я работаю с общим знанием того, как настраивается большинство монтировок initramfs, и информации, которую я нахожу на странице man
для dracut
здесь . Возможно, потребуется дополнительная сборка, но это должно привести вас к довольно хорошим результатам.
После установки соответствующего /etc/fstab
в initramfs вы сможете использовать следующие параметры, связанные с корневыми устройствами, для получения корней overlayfs:
root=overlay \
rootfstype=overlay \
rootflags=\
lowerdir=/sfs/sfs,\
upperdir=/sfs/usb/persist,\
workdir=/sfs/usb/tmp
Это предполагает, что у вас есть каталог на USB-накопителе с именем /persist
и еще один пустой с именем /tmp
, и что ваше изображение squashfs можно найти в корне вашей файловой системы USB как /img.sfs
.