Технически вы не можете предполагать , что что-то будет присутствовать, потому что ядро Linux используется во множестве встроенных или частично встроенных контекстов, где будет использоваться полный набор утилит оболочки. бессмысленная трата места. Не исключено, например, создание устройства IoT, файловая система которого содержит загрузчик, монолитное ядро, пользовательский / sbin / init
, который делает все, что устройству когда-либо понадобится, несколько записей / dev
и ничего больше .
POSIX.Спецификация 1-2008 «Оболочка и утилиты» , также связанная в ответе Муру, предназначена для стандартизации оболочки как языка программирования . Поэтому он не включает большинство инструментов системного администрирования, которые ожидаются от «традиционной» установки Unix. К сожалению, это также видимый оставшийся шрам от древнего раскола между System V и BSD - инструменты, которые вы найдете в Linux, отличаются от инструментов FreeBSD, OSX или чего-то еще. Итак, опять же, нет надежной базы.
Чтобы указать, чего не хватает в ответе Мару, это набор пакетов , которые Debian (нестабильная версия) считает «обязательными» (официальное определение : «Системы с только необходимыми пакетами, вероятно, непригодны, но они обладают достаточной функциональностью, чтобы позволить системному администратору загружаться и устанавливать дополнительное программное обеспечение. ") и которые вносят файлы в / bin
, / sbin
, / usr / bin
или / usr / sbin
. Те, которые отмечены звездочкой, являются не просто «обязательными», но «необходимыми», что означает, что другому пакетному программному обеспечению разрешено предполагать свое присутствие вне зависимости от него.
base-passwd* gzip* perl-base*
bash* hostname* sed*
bsdutils* initscripts sensible-utils
coreutils* libc-bin* sysv-rc
dash* libpam-modules-bin sysvinit-utils*
debianutils* libpam-runtime tar*
diffutils* login* tzdata
dpkg* mawk¹ util-linux*
e2fsprogs* mount* xz-utils
findutils* ncurses-bin*
grep* passwd
¹ awk-the-language «необходим», но системный администратор может выбрать, нужна ли им реализация «mawk» или «gawk».
И эти пакеты считаются "важными", то же самое; Официальное определение «важного» звучит так: «опытный специалист по Unix, обнаруживший его пропажу, сказал бы:« Что, черт возьми, происходит, где находится foo? »»:
adduser cpio ifupdown man-db vim-common
apt cron iproute2 procps vim-tiny
apt-utils debconf iputils-ping rsyslog wget
aptitude dmidecode isc-dhcp-client systemd whiptail
aptitude-common gnupg kmod systemd-sysv
at gpgv less traceroute
bsdmainutils groff-base logrotate udev
Обратите внимание, что этот второй набор включает такие важные инструменты системного администрирования, как ps
и iproute2
, а также вещи, которые могут быть совершенно ненужными в некоторых установках, например в
и dmidecode
. Оба набора также содержат специфичные для Debian вещи, такие как dpkg
и apt
.
Обратите внимание, что оба набора вместе не являются расширенным набором функций, требуемых LSB (или POSIX + XSI, если на то пошло): эти утилиты отсутствуют:
ar gencat lpr msgfmt strings
bc gettext lsb_release patch strip
ed install_initd m4 pax time
file killall mailx remove_initd
fuser lp make sendmail
Список утилит, которые есть в вышеупомянутые пакеты, но не в LSB, длинны и утомительны, но я все равно включаю их, чтобы подчеркнуть, сколько «критических инструментов системного администрирования» они включают.
accessdb mkhomedir_helper
add-shell mklost+found
addgroup mkswap
addpart modinfo
adduser modprobe
agetty mountpoint
apropos mt-gnu
apt namei
apt-cache ncal
apt-cdrom ncurses5-config
apt-config ncursesw5-config
apt-extracttemplates neqn
apt-ftparchive networkctl
apt-get newusers
apt-key nisdomainname
apt-mark nologin
apt-sortpkgs nproc
aptitude-create-state-bundle nroff
aptitude-curses nsenter
aptitude-run-state-bundle nstat
arch numfmt
arpd oldfind
badblocks ownership
base64 pam-auth-update
bash pam_getenv
bashbug pam_tally
biosdecode pam_tally2
blkdiscard pam_timestamp_check
blkid partx
blockdev perl
bootctl perl5.20.2
bridge pg
bsd-from pgrep
bsd-write pic
busctl ping
cal ping6
calendar pinky
captoinfo pivot_root
catchsegv pkill
catman pldd
cfdisk pmap
chage poweroff
chattr preconv
chcon printenv
chcpu printerbanner
chgpasswd prlimit
chpasswd ptx
chroot pwck
chrt pwconv
clear pwdx
clear_console pwunconv
colcrt raw
colrm rbash
column readlink
cpgr readprofile
cppw realpath
cron reboot
ctrlaltdel remove-shell
ctstat rename.ul
dash reset
debconf resize2fs
debconf-apt-progress resizepart
debconf-communicate rev
debconf-copydb rgrep
debconf-escape rmmod
debconf-set-selections rmt-tar
debconf-show routef
debugfs routel
delgroup rsyslogd
delpart rtacct
deluser rtcwake
depmod rtmon
dhclient rtstat
dhclient-script run-parts
diff3 runcon
dir runlevel
dircolors runuser
dmidecode savelog
dnsdomainname script
domainname scriptreplay
dpkg sdiff
dpkg-deb select-editor
dpkg-divert sensible-browser
dpkg-maintscript-helper sensible-editor
dpkg-preconfigure sensible-pager
dpkg-query service
dpkg-reconfigure setarch
dpkg-split setsid
dpkg-statoverride setterm
dpkg-trigger sfdisk
dumpe2fs sg
e2freefrag sha1sum
e2fsck sha224sum
e2image sha256sum
e2label sha384sum
e2undo sha512sum
e4defrag shadowconfig
eqn shred
expiry shuf
factor skill
faillog slabtop
fallocate snice
fdformat soelim
fdisk ss
filefrag start-stop-daemon
findfs stat
findmnt stdbuf
flock sulogin
fmt sum
free swaplabel
fsck swapoff
fsck.cramfs swapon
fsck.ext2 switch_root
fsck.ext3 sysctl
fsck.ext4 systemctl
fsck.ext4dev systemd
fsck.minix systemd-analyze
fsck.nfs systemd-ask-password
fsfreeze systemd-cat
fstab-decode systemd-cgls
fstrim systemd-cgtop
geqn systemd-delta
getent systemd-detect-virt
getopt systemd-escape
getty systemd-hwdb
gpasswd systemd-inhibit
gpg systemd-machine-id-setup
gpg-zip systemd-notify
gpgsplit systemd-path
gpgv systemd-run
gpic systemd-stdio-bridge
groff systemd-tmpfiles
grog systemd-tty-ask-password-agent
grops tabs
grotty tac
grpck tailf
grpconv tarcat
grpunconv taskset
gtbl tbl
gzexe tc
halt tcptraceroute.db
hd telinit
helpztags tempfile
hexdump timedatectl
hostid timeout
hostnamectl tload
hwclock toe
i386 top
iconvconfig traceproto.db
ifdown traceroute-nanog
ifquery traceroute.db
ifup traceroute6.db
infotocap troff
init truncate
insmod tset
installkernel tune2fs
invoke-rc.d tunelp
ionice tzconfig
ip tzselect
ipcmk udevadm
ischroot ul
isosize uncompress
journalctl unix_chkpwd
killall5 unix_update
kmod unlink
last unshare
lastb unxz
lastlog update-alternatives
ldattach update-passwd
ldconfig update-rc.d
ldconfig.real uptime
ldd users
less utmpdump
lessecho vdir
lessfile vigr
lesskey vim.tiny
lesspipe vipw
lexgrog vmstat
lft.db vpddecode
line w.procps
link wall
linux32 watch
linux64 wdctl
lnstat wget
localectl whatis
login whereis
loginctl which
logrotate whiptail
logsave who
look whoami
lorder wipefs
losetup x86_64
lsattr xxd
lsblk xz
lscpu xzcat
lsipc xzcmp
lslocks xzdiff
lslogins xzegrep
lsmod xzfgrep
lspgpot xzgrep
lzmainfo xzless
mandb xzmore
manpath yes
mawk ypdomainname
mcookie zcmp
md5sum.textutils zdiff
mesg zdump
mke2fs zegrep
mkfs zfgrep
mkfs.bfs zforce
mkfs.cramfs zgrep
mkfs.ext2 zic
mkfs.ext3 zless
mkfs.ext4 zmore
mkfs.ext4dev znew
mkfs.minix zramctl
Puedes crear uno concryptsetup
(o, supongo, dmsetup
también funciona ).
# truncate -s 8M luksblock.img
# cryptsetup luksFormat luksblock.img
# cryptsetup luksOpen luksblock.img luksblock
# cryptsetup luksSuspend luksblock
# cat /dev/mapper/luksblock
(... no output because it's blocked / suspended... )
Cómo se ve endmsetup
:
# dmsetup info luksblock
Name: luksblock
State: SUSPENDED
Read Ahead: 256
Tables present: LIVE
Open count: 0
Event number: 0
Major, minor: 253, 71
Number of targets: 1
UUID: CRYPT-LUKS1-87bc6d9fd7fa419bbf15425c062d0916-luksblock
Puede usar dmsetup
para suspender un dispositivo:
dmsetup suspend luksblock
Por lo tanto, debería ser posible crear un mapeo de dispositivos suspendidos que no necesite estar respaldado por un archivo luksblock.img
en primer lugar, pero le dejaré esa parte final a usted. :-PAG
Por supuesto, este enfoque tiene una gran desventaja. Este dispositivo aparecerá entre todos los demás dispositivos de bloque en /proc/partitions
, y todo lo que monitoree o detecte dispositivos (como LVM en busca de nuevos volúmenes físicos )también intentará leer y quedarse atascado en el bloque. Esto evitará que se detecten los dispositivos (porque los procesos que lo hacen están atascados )y es posible que la máquina ya no se reinicie (porque los procesos que manejan los procedimientos de apagado están atascados ).