Возможно, объедините правила udev и прием iptables?
Когда целевое USB-устройство будет добавлено, выполниться iptables -D OUTPUT -j DROP
; при удалении выполниться iptables -I OUTPUT DROP
Для детали о сценарии смотрите на руководство здесь
(Используйте lsusb
получать информацию о поставщике)
Править
Ну, это разработано для некорневых пользователей, так как иначе, невозможно заблокировать пользователя root от восстановления его, если флеш-карта не является медиа доступа в Интернет.
Ни эффективность, ни вместимость - не самая большая разница. Все они будут возвращать разные выходные данные для определенных входных данных.
head -n1
предоставит завершающую новую строку, только если она есть на входе.
sed 1q
всегда будет предоставлять завершающую новую строку, но в остальном сохранит ввод.
read
никогда не предоставит завершающую новую строку и будет интерпретировать последовательности обратной косой черты.
Кроме того, чтение
имеет дополнительные параметры, такие как разделение, таймауты и история ввода, некоторые из которых являются стандартными, а другие различаются в зависимости от оболочки.
Во-первых, вы можете разобрать текст на чтение, а не просто взять целую строку
echo "foo:bar:baz" | {
IFS=: read one two three
echo $two
}
Встроенные функции используются для ускорения системных вызовов. Итак, я считаю, что команда read
присутствует как встроенная, чтобы быть более эффективной.
Цитата из здесь ,
Эти встроенные команды являются частью оболочки и реализованы как часть исходного кода оболочки. Оболочка распознает, что команда то, что его попросили выполнить, было одной из его встроенных функций, и он выполняет это действие само по себе, без вызова отдельного исполняемого файла. Разные оболочки имеют разные встроенные функции, хотя будет целая много перекрытий в базовой комплектации.
Я бы хотел, чтобы вы поэкспериментировали с этим, чтобы вы могли понять, почему read
присутствует как встроенная оболочка.
Обычно вы не могли выполнить strace
для встроенных команд оболочки. Однако и для этого есть обходной путь. Это довольно четко объясняется в этом ответе .
stty -echo
. cat | strace bash>
/ dev / null
. strace
, поскольку он довольно большой. Если файловой системой является ext2, ext3 или ext4, можно использовать команду tune2fs
для получения сведений о данной файловой системе на устройстве.
$ sudo tune2fs -l <dev>
$ sudo tune2fs -l /dev/sda2
tune2fs 1.42.8 (20-Jun-2013)
Filesystem volume name: <none>
Last mounted on: /boot
Filesystem UUID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 128016
Block count: 512000
Reserved block count: 25600
Free blocks: 355130
Free inodes: 127934
First block: 1
Block size: 1024
Fragment size: 1024
Reserved GDT blocks: 256
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 2032
Inode blocks per group: 254
Flex block group size: 16
Filesystem created: Tue Jul 15 21:26:21 2014
Last mount time: Fri Sep 5 08:17:04 2014
Last write time: Fri Sep 5 08:17:04 2014
Mount count: 38
Maximum mount count: -1
Last checked: Tue Jul 15 21:26:21 2014
Check interval: 0 (<none>)
Lifetime writes: 172 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Journal backup: inode blocks
Параметр «Функции файловой системы» перечислять то, что требуется.
Для вывода их списка можно использовать команду lsblk
.
85 .9G 0 lvm
$ lsblk | head -8 | column -t
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 500M 0 part /boot
└─sda3 8:3 0 237.8G 0 part
├─fedora-root 253:0 0 50G 0 lvm /
├─fedora-swap 253:1 0 2G 0 lvm [SWAP]
└─fedora-home 253:2 0 185.9G 0 lvm
-121--86145- Поскольку вы не можете добавить репозиторий, их всегда можно добавить с терминала с помощью командной строки. Перейдите к списку репозиториев на веб-сайте WebUpd8 . Скопируйте адрес главного репозитория - Главный репозиторий . Вы хотите добавить его, потому что он содержит все остальные.
sudo cp/etc/apt/sources.list/etc/apt/sources.list.backup
sudo gedit/etc/apt/sources.list
Технические сведения об этом PPA
sudo apt-get update
. Теперь эта команда обновления должна получить закрытые ключи нового репозитория. При получении ошибки, указанной в комментарии, этот репозиторий не имеет закрытого ключа. В этот пункт вы можете связаться с сопровождающим PPA, который либо выдаст вам ключ, либо попросит проигнорировать предупреждение. Читать varname
можно только внутри сценария оболочки, а два других можно использовать без записи сценария оболочки.
Например,
можно использовать varname = $ (head -1)
и varname = $ (sed 1q)
просто в качестве команды в терминале, но вы должны предоставить свой аргумент, а именно, какие файлы вы ссылаетесь на самую верхнюю строку, т.е. varnam = $ (head -1 file1)
.