ټولو ته شپه او ورځ په خیر! دا پوسټ به د هغو کسانو لپاره ګټور وي څوک چې د LUKS ډیټا کوډ کول کاروي او غواړي چې د لینکس (Debian، Ubuntu) لاندې ډیسکونه ډیکریټ کړي. د ریښی ویش د کوډ کولو مرحلې. او زه په انټرنیټ کې داسې معلومات نشم موندلی.
په دې وروستیو کې، په الماریو کې د ډیسکونو شمیر زیاتوالي سره، زه د /etc/crypttab له لارې د ډیرو پیژندل شویو میتودونو په کارولو سره د ډیسکونو د کوډ کولو ستونزې سره مخ شوم. په شخصي توګه، زه د دې طریقې کارولو سره یو څو ستونزې په ګوته کوم، یعنې دا چې فایل لوستل کیږي یوازې وروسته له دې چې د ریښې برخه پورته کړئ (ماونټ).، کوم چې د ZFS وارداتو باندې منفي اغیزه کوي ، په ځانګړي توګه که دوی د *_crypt وسیلې له برخو څخه جوړ شوي وي ، یا د mdadm بریدونه هم د برخې څخه جوړ شوي. موږ ټول پوهیږو چې تاسو کولی شئ په LUKS کانټینرونو کې پارټډ وکاروئ ، سمه ده؟ او همدارنګه د نورو خدماتو د پیل کولو ستونزه، کله چې لا تر اوسه کوم صفونه شتون نلري، مګر کارول زه دمخه یو څه ته اړتیا لرم (زه د کلستر شوي Proxmox VE 5.x او ZFS سره iSCSI باندې کار کوم).
د ZFSoverISCSI په اړه لږ څهiSCSI زما لپاره د LIO له لارې کار کوي، او په حقیقت کې، کله چې د iscsi هدف پیل شي او د ZVOL وسایل ونه ګوري، دا په ساده ډول د ترتیب څخه لیرې کوي، کوم چې د میلمنو سیسټمونو د بوټ کولو مخه نیسي. له همدې امله ، یا د json فایل بیک اپ بحال کول ، یا په لاسي ډول د هر VM لپاره د پیژندونکو سره وسیلې اضافه کول ، کوم چې په ساده ډول خورا ویرونکی دی کله چې په لسګونو داسې ماشینونه شتون ولري او هر ترتیب له 1 ډیسک څخه ډیر وي.
او دوهمه پوښتنه چې زه به یې په پام کې ونیسم دا دی چې څنګه کوډ کول (دا د مقالې کلیدي ټکی دی). او موږ به د دې په اړه لاندې خبرې وکړو، د کټ لاندې لاړ شئ!
ډیری وختونه ، په انټرنیټ کې ، کلیدي فایل کارول کیږي (له دې دمخه د کمانډ لخوا په سلاټ کې ځان اضافه شوی - cryptsetup luksAddKey) ، یا په نادره استثنااتو کې (د روسی ژبې انټرنیټ کې خورا لږ معلومات شتون لري) - decrypt_derived سکریپټ په /lib/cryptsetup/script/ کې موقعیت لري (البته، نورې لارې شتون لري، مګر ما دا دوه کارولي، کوم چې د مقالې اساس جوړوي). ما په کنسول کې پرته له کوم اضافي کمانډونو پرته د ریبوټ کولو وروسته د بشپړ خودمختاره شمولیت لپاره هم هڅه وکړه ، ترڅو هرڅه زما لپاره په یوځل کې "پورته شي". نو، ولې انتظار؟ —
راځه چي پیل یی کړو!
راځئ چې یو سیسټم فرض کړو ، لکه دبیان په sda3_crypt کریپټو پارټیشن کې نصب شوی او یو درجن ډیسکونه کوډ کولو ته چمتو دي او ستاسو د زړه مینځپانګې ته رامینځته شوي. موږ د sda3_crypt خلاصولو لپاره پاسفریز (پاسفریج) لرو، او دا د دې برخې څخه دی چې موږ به د چلولو (ډیکریپټ شوي) سیسټم کې د پټنوم څخه "هیش" لرې کړو او په پاتې ډیسکونو کې یې اضافه کړو. هرڅه ابتدايي دي، په کنسول کې چې موږ یې اجرا کوو:
/lib/cryptsetup/scripts/decrypt_derived sda3_crypt | cryptsetup luksFormat /dev/sdX
چیرته چې ایکس زموږ ډیسکونه، ویشونه، او نور دي.
زموږ د پاسفریج څخه د "هیش" سره ډیسکونو کوډ کولو وروسته ، تاسو اړتیا لرئ UUID یا ID ومومئ - پدې پورې اړه لري چې څوک د څه لپاره کارول کیږي او څه. موږ په ترتیب سره د /dev/disk/by-uuid او by-id څخه ډاټا اخلو.
بل ګام د دندو لپاره د فایلونو او مینی سکریپټونو چمتو کول دي چې موږ یې کار کولو ته اړتیا لرو، راځئ چې پرمخ لاړ شو:
cp -p /usr/share/initramfs-tools/hooks/cryptroot /etc/initramfs-tools/hooks/
cp -p /usr/share/initramfs-tools/scripts/local-top/cryptroot /etc/initramfs-tools/scripts/local-top/
نور
touch /etc/initramfs-tools/hooks/decrypt && chmod +x /etc/initramfs-tools/hooks/decrypt
د ../decrypt منځپانګې
#!/bin/sh
cp -p /lib/cryptsetup/scripts/decrypt_derived "$DESTDIR/bin/decrypt_derived"
نور
touch /etc/initramfs-tools/hooks/partcopy && chmod +x /etc/initramfs-tools/hooks/partcopy
د ../partcopy منځپانګې
#!/bin/sh
cp -p /sbin/partprobe "$DESTDIR/bin/partprobe"
cp -p /lib/x86_64-linux-gnu/libparted.so.2 "$DESTDIR/lib/x86_64-linux-gnu/libparted.so.2"
cp -p /lib/x86_64-linux-gnu/libreadline.so.7 "$DESTDIR/lib/x86_64-linux-gnu/libreadline.so.7"
لږ څه زیات
touch /etc/initramfs-tools/scripts/local-bottom/partprobe && chmod +x /etc/initramfs-tools/scripts/local-bottom/partprobe
منځپانګه ../partprobe
#!/bin/sh
$DESTDIR/bin/partprobe
او وروستی، د اپډیټ-initramfs څخه مخکې، تاسو اړتیا لرئ د /etc/initramfs-tools/scripts/local-top/cryptroot فایل ایډیټ کړئ، د کرښې ~ 360 څخه پیل، لاندې کوډ ټوټه
اصلي
# decrease $count by 1, apparently last try was successful.
count=$(( $count - 1 ))
message "cryptsetup ($crypttarget): set up successfully"
break
او دې فورمې ته یې راوړئ
ترمیم شوی
# decrease $count by 1, apparently last try was successful.
count=$(( $count - 1 ))
/bin/decrypt_derived $crypttarget | cryptsetup luksOpen /dev/disk/by-uuid/ *CRYPT_MAP*
/bin/decrypt_derived $crypttarget | cryptsetup luksOpen /dev/disk/by-id/ *CRYPT_MAP*
message "cryptsetup ($crypttarget): set up successfully"
break
په یاد ولرئ چې یا هم UUID یا ID دلته کارول کیدی شي. اصلي شی دا دی چې د HDD / SSD وسیلو لپاره اړین ډرایورونه /etc/initramfs-tools/modules ته اضافه شوي. تاسو کولی شئ ومومئ چې کوم ډرایور د قوماندې سره کارول کیږي udevadm معلومات -a -n /dev/sdX | egrep 'لټون | ډرایور'.
اوس چې موږ بشپړ شوي او ټولې فایلونه په ځای کې دي، چلوئ تازه-initramfs -u -k all -vپه ننوتلو کې باید نه وي زموږ د سکریپټونو د اجرا کولو تېروتنې. موږ ریبوټ کوو، پاسفریج داخل کړئ او یو څه انتظار وکړئ، د ډیسکونو شمیر پورې اړه لري. بیا ، سیسټم به پیل شي او د لانچ په وروستي مرحله کې ، د بیلګې په توګه د روټ برخې "ماؤنټ کولو" وروسته ، د پارټ پروب کمانډ به اجرا شي - دا به په LUKS وسیلو او هر ډول اریونو کې ټول رامینځته شوي برخې ومومي او غوره کړي ، که دا ZFS وي یا mdadm، پرته له ستونزو سره راټول شي! او دا ټول د بارولو دمخه اصلي خدمتونه او خدمتونه چې دې ډیسکونو/ارونو ته اړتیا لري.
تازه 1: هغه څنګه
سرچینه: www.habr.com