рдХреНрд░рд┐рдкреНрдЯреЛ рдмрд╛рдЗрдХ, рдпрд╛ рд╕рд░реНрд╡рд░ рд╕реЗ USB рдХреБрдВрдЬреА

рдХрдИ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рдиреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ "рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛" рдХреБрдЫ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдореИрдВ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдХрд╣рд╛рдиреА рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ рдПрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд▓реЙрдЧ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рд░рдЦрд░рдЦрд╛рд╡ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рдерд╛ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕рд╛рдЗрдХрд┐рд▓ рдХреЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрддреНрд░ рдФрд░ (рдПрдЪ) рдХрдВрд╕реЛрд▓ рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреА!


рд▓рдЧрднрдЧ 2 рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рд░реИрдХ-рдорд╛рдЙрдВрдЯ рд╕рд░реНрд╡рд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ GNU / linux рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рдХрд╛рдлреА рдкреБрд░рд╛рдиреЗ ubuntu рдкрдврд╝реЗрдВ), рдФрд░ 2 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде 2 Trans USB USB рдбреНрд░рд╛рдЗрд╡ (рдореИрдВ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛) рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рдореБрдЦ рд╡рд╛рд╣рдХред
рдХрд╛рд░реНрдп рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдЕрдирдзрд┐рдХреГрдд рдкрд╣реБрдВрдЪ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЬрди рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрд▓рдпреВрдХреЗрдПрд╕ рд╡рд┐рднрд╛рдЬрди рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдХрд░рдг рднреА рдЖрд╡рд╢реНрдпрдХ рдереЗ:

рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рддрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдпрд╛ рддреЛ рдЕрдиреБрднрд╡ рдХреА рдХрдореА рдереА, рдпрд╛ рдХреБрдЫ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рдиреЗ рдореБрдЭреЗ рдПрдХ рдард╣рд░рд╛рд╡ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдЦреИрд░, рдкрд╣рд▓реЗ рдмрд╛рддреЗрдВ рдкрд╣рд▓реЗред

рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдмрд╛рд╣рд░реА рдореАрдбрд┐рдпрд╛ рд╕реЗ рдмреВрдЯ рдХрд┐рдпрд╛ рдФрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рднреА рдбреЗрдЯрд╛ рдХрд╛ рдкреВрд░реНрдг рдмреИрдХрдЕрдк рдмрдирд╛рдпрд╛, рдЙрд╕реА рд╕рдордп рдореИрдВрдиреЗ / etc / fstab рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ред рдЪреВрдБрдХрд┐ рдмреИрдХрдЕрдк рд╣рдЯрд╛рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрд┐рд╕реА рдХреЛ рднреА рд╕реБрдкрд░рд╕реБрдЕрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд░реВрдЯ рдпреВрдЬрд░ рд▓рд╛рдЗрди рдореЗрдВ рдкрддрд╛ рдХрд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рд╣реИрд╢ рд▓рд┐рдЦрдХрд░ / etc / shadow рдлрд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдкреНрд░рдгрд╛рд▓реА рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдБ:
рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЬреБрдбрд╝рд╛:
# dhclient 
Cryptsetup рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХреА, рдЬрд┐рд╕рдореЗрдВ LUKS рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
 # apt-get update # apt-get install cryptsetup 
рдлрд╝рд╛рдЗрд▓ "/ tmp / key" рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ 256-рд╡рд░реНрдг рдХрд╛ рдЫрджреНрдо-рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрдиреБрдХреНрд░рдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:
 # dd if=/dev/random of=/tmp/key bs=1 count=256 
рд╡реИрд╕реЗ, рдСрдкрд░реЗрдЯрд┐рд╡ рдореЗрдВ рдЯреАрдПрдордкреА рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред Crypto_LUKS рдХреЗ рдкрд╣рд▓реЗ рдЦрдВрдб рдХреЗ рджреВрд╕рд░реЗ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рднрд╛рдЬрди "/ dev / mapper / dtb" рдмрдирд╛рдпрд╛, рдЬрд┐рд╕реЗ LUKS рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 # cryptsetup luksFormat /dev/sdb2 /tmp/key # cryptsetup luksOpen /dev/sdb2 dtb 
рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХреЗ рд▓рд┐рдП рдореИрдк рдХрд┐рдП рдЧрдП рд╡рд░реНрдЪреБрдЕрд▓ рдкрд╛рд░реНрдЯреАрд╢рди рдкрд░, рдЙрд╕рдиреЗ рдПрдХ рдирдИ ext4 рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдпрд╛ рдФрд░ рдЗрд╕реЗ / mnt рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛:
 # mkfs.ext4 /dev/mapper/dtb # mount /dev/mapper/dtb /mnt 

рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
 # /etc/init.d/postgresql stop 
рдкреЛрд╕реНрдЯрдЧреНрд░реИрдХреНрд╕реНрд▓ рдбреЗрдорди рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛, рдФрд░ рдорд┐рдбрдирд╛рдЗрдЯ рдХрдорд╛рдВрдбрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ / var / lib / pgsql / mnt рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж / var / lib / pgsql рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдХреНрд▓рд┐рдпрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдкрд╣рд▓реЗ рдЦрдВрдб рдХрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рджреВрд╕рд░рд╛ рдЦрдВрдб / var / lib / pgsql рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
 # umount /dev/mapper/dtb # mount /dev/mapper/dtb /var/lib/pgsql 


рд╡рд┐рднрд╛рдЬрди рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ "/ tmp / key" рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рднреЗрдЬреА рдЧрдИ рдереАред
рдХреИрд╕реЗ рдПрдХ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдкрдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП
рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рд╕реАрдзреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛ред рдЬрдм рдореИрдВрдиреЗ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рдЪрд┐рдкрдХрд╛ рджрд┐рдпрд╛, рддреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рд╛рд░реВрдкрд┐рдд рд╣реИ рдФрд░ рдХрд┐рд╕ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╣реИ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореБрдЦреНрдп рдЦрдВрдб рдХреЗ рд╕рд╛рдордиреЗ рд╕рд╛рдд рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХреА рдЦрд╛рд▓реА рдЬрдЧрд╣ рдереАред рддреБрд░рдВрдд рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЧрд▓рддреА рд╕реЗ рдХреБрдВрдЬреА рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛рдпрд╛ рдЬрд╛рдП! рдЖрдЧреЗ рдПрдХ рдЦрдВрдб рдмрдирд╛рдпрд╛, ext2 рдореЗрдВ рд╕реНрд╡рд░реВрдкрд┐рддред рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдиреАрдЪреЗ, рдЕрдиреБрднрд╛рдЧ рдмрд┐рд▓реНрдХреБрд▓ рднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдореБрдЦреНрдп рдЕрдиреБрднрд╛рдЧ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЕрдкрдиреА рд╕рд░реНрд╡рд░-рд▓реЙрдиреНрдЪрд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдЦреЛрддрд╛ рд╣реИред

рдорд┐рдбрдирд╛рдЗрдЯ рдХрдорд╛рдВрдбрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди / etc / cryptsupup рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкрд░реАрдХреНрд╖рдг рд░рд┐рдмреВрдЯ рдХреЗ рджреМрд░рд╛рди рдпрд╣ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдХреЗ рдХрд╛рд░рдг, рдпрд╣ / etc / fstab рд╕реЗ рдкреНрд░рдореБрдЦ рдореАрдбрд┐рдпрд╛ рдХреЛ рдорд╛рдЙрдВрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ / рд╕рдХрддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ / etc / cryptsetup рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╡рд┐рднрд╛рдЬрди рдорд╛рдЙрдВрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рддрдм рд╕реЗ рд╣реИ рдмрд┐рдирд╛ рдХреБрдВрдЬреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдЙрдВрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрджреЗрд╢ (рдХреБрдВрдЬреА рдорд╛рдзреНрдпрдо рдХреЛ рдмрдврд╝рд╛рдирд╛, рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛, рдХреБрдВрдЬреА рд╡рд┐рднрд╛рдЬрди рдХреЛ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд░рдирд╛ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╡рд┐рднрд╛рдЬрди рдХреЛ рдмрдврд╝рд╛рдирд╛) рдЙрдЪрд┐рдд рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ /etc/rc.local рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдереЗ

рдЗрд╕ рдХреНрд░рд┐рдпрд╛ рдиреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рджрд┐рдП (рдбрд╛рдЙрдирд▓реЛрдб рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛), рд╣рд╛рд▓рд╛рдВрдХрд┐, r rllocal рдлрд╝рд╛рдЗрд▓ рдкреЛрд╕реНрдЯрдЧреНрд░реИрдХреНрд╕реНрд▓ рдбреЗрдореЙрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмрд╛рдж рдореЗрдВ рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ рдереА, рдЬреЛ рдбреЗрдореЙрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдорд╛рдЙрдВрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХрддреА рдереАред

рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде, рдмреИрдХрдЕрдк рдЕрдиреБрднрд╛рдЧ рдФрд░ рд╕реНрд╡реИрдк рд╡рд┐рднрд╛рдЬрди рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рд╕реЗ рдЕрдирдзрд┐рдХреГрдд рдкрд╣реБрдВрдЪ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реНрд╡реИрдк рд╕реНрдерд╛рди рдореЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдЯрд╛рд░реНрдЯ-рдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬреЛ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рдкреНрд░рдореБрдЦ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╡рд┐рднрд╛рдЬрди рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕реНрдХрд▓ рдбреЗрдорди рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рд╕реНрд╡реИрдкрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдирддреАрдЬрддрди, рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╢реБрд░реБрдЖрддреА рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ рдЧрдИ рдереА рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреА рдереА, рдЕрд░реНрдерд╛рддреН
  1. рдореИрдВрдиреЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдХрд░рдг рдЦреЛрдЬрд╛ рдФрд░ рдЙрд╕реЗ рд▓рдЧрд╛рдпрд╛
  2. рдпрджрд┐ рдПрдХ рдкреНрд░рдореБрдЦ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╡рд┐рднрд╛рдЬрди рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реИ
  3. рд╕реБрд░рдХреНрд╖рд┐рдд рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИ
  4. рдкрд┐рдЫрд▓реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рд╕реНрд╡реИрдк рд╡рд┐рднрд╛рдЬрди рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╡рд┐рднрд╛рдЬрди рдкрд░ рдореБрд╣рд┐рдо рдХреА рдЬрд╛рддреА рд╣реИ

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ:

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдЙрдмрдВрдЯреВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХреНрд░рд╛рдпрд╕реЗрдкрд╕реЗрдЯрдЕрдк рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдерд╛, (рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдпреВрдпреВрдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдПрдХ рдЦрдВрдб рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛), рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдорд╛рдирдХ ubuntu рдкреИрдХреЗрдЬ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ /etc/init.d/encryptdb рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреА рдЧрдИрдВ, рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИрдВред рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдЕрдкрдбреЗрдЯ-rc.d рдПрдирдХреНрд░рд┐рдкреНрдЯрдб рдбрд┐рдлреЙрд▓реНрдЯреНрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде-рд╕рд╛рде, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓ / etc / keycrypt / keycryptab рдФрд░ / etc / keycrypt / keydrv рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рдереЗред

рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ:
  1. рд░реВрд╕реА рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ
     #!/bin/bash ### BEGIN INIT INFO # Provides: cryptdisks # Required-Start: checkroot cryptdisks-early # Required-Stop: umountroot cryptdisks-early # Should-Start: udev mdadm-raid lvm2 # Should-Stop: udev mdadm-raid lvm2 # X-Start-Before: checkfs # X-Interactive: true # Default-Start: 2 3 4 5 # Default-Stop: 0 6 # Short-Description: Setup remaining encrypted block devices. # Description: ### END INIT INFO #     ,   , #          KEYCRYPTAB_DIR=/etc/keycrypt #   KEYCRYPTAB_FILE=$KEYCRYPTAB_DIR/keycryptab #        #       #              # : # <uuid > <  > <   links> < > #          "swap". #          2 : "none"  "random" # Use the option "none" is not recommended. # Examples: # 11111111-2222-3333-4444-555555555555 random swap1 swap # #safety swap partition. It no need any keyfile, but must be encrypted # 12345678-1234-4321-1234-567890123456 harry.key harry /home/harry # #home directory for Harry, Harry have the "harry.key" in his flash drive # 66666666-9999-8888-7777-000000000000 ntldr public "/var/ftp" # #publuc directory, all staff have the "ntldr" file in flash drives KEYDRIVER_FILE=$KEYCRYPTAB_DIR/keydrv #       #              # : # <uuid> <timeout> <dotmount> # Examples: # kkkkkkkk-kkkk-kkkk-kkkk-kkkkkkkkkkkk 20 /media/keys SWAPCLEAN_FILE=$KEYCRYPTAB_DIR/swapclean.flg # NOTE!!! If u are not using the encription swap # u need to run "dd if=/dev/urandom of=/u/swap/partition". # Otherwise encryption will not make sense. # I was include this functional on the skript, but # it will take a very long time to load OS. #=====================Begin of script===================== # Do not edit next if you are not sure what you are doing! #DBG="on" #       UMOUNT_FLAG="" #       #   ,     , 6  ( !     ) DEBUG() { if [ "$DBG" = "on" ] then echo -e "\E[33;40m$1 $2 $3 $4 $5 $6"; tput sgr0 fi } #           SetStruct() { str=`echo $1 | sed 's/#.*/ /g'` n=0 for arg in $str do let "n+=1" case "$n" in 1) CRYPT_UUID=$arg ;; 2) KEY_FILENAME=$arg ;; 3) CRYPT_NAME=$arg ;; 4) CRYPT_MOUNTPOINT=$arg return 0 ;; *) DEBUG "too many arguments: $arg" ;; esac done return 1 } #            SetKey() { nk=0 str=`echo $1 | sed 's/#.*/ /g'` for arg in $str do let "nk+=1" case "$nk" in 1) KEY_UUID=$arg ;; 2) KEY_TIMEOUT=$arg if (( KEY_TIMEOUT < 0 )) then echo "Invalid key timeout for $KEY_UUID" KEY_TIMEOUT=1 fi if (( KEY_TIMEOUT > 60 )) then echo "Invalid key timeout for $KEY_UUID" KEY_TIMEOUT=60 fi DEBUG "KEY_TIMEOUT=$KEY_TIMEOUT" ;; 3) KEY_MOUNTPOINT=$arg return 0 ;; *) DEBUG "too many arguments: $arg" ;; esac done return 1 } #     PrepareKeyDrv() { if [ ! -e "/dev/disk/by-uuid/$KEY_UUID" ] then #     echo -en "Waiting $KEY_TIMEOUT seconds for the key device \r" #    for (( n = ++KEY_TIMEOUT; n ; n-- )) do if [ ! -e "/dev/disk/by-uuid/$KEY_UUID" ] then (( KEY_TIMEOUT-- )) echo -en "Waiting $KEY_TIMEOUT seconds for the key device \r" else echo echo "Key device was found!" DEBUG $KEY_UUID break fi if [ "$n" = "1" ] then echo echo "Not found a key device!" DEBUG "Now completing PrepareKeyDrv()" # ,  return 1 fi sleep 1 # it is not a debug! Do not comment it! done fi #, ,     uuid DEBUG "Mounting the key device" if [ ! -d "$KEY_MOUNTPOINT" ]; then RM_KMP=1 mkdir $KEY_MOUNTPOINT fi uuid_l=`echo $KEY_UUID | wc -m` case "$uuid_l" in 10) mount /dev/disk/by-uuid/$KEY_UUID $KEY_MOUNTPOINT -t vfat -o ro DEBUG "fat detected" ;; 17) mount /dev/disk/by-uuid/$KEY_UUID $KEY_MOUNTPOINT -t ntfs-3g -o force,ro DEBUG "ntfs detected" ;; 37) mount /dev/disk/by-uuid/$KEY_UUID $KEY_MOUNTPOINT -o ro DEBUG `mount | grep $KEY_MOUNTPOINT ` ;; *) DEBUG "Can not identify type of the file system on the specified uuid:" DEBUG "$KEY_UUID" mount /dev/disk/by-uuid/$KEY_UUID $KEY_MOUNTPOINT -o ro ;; esac } #       UmountKey() { DEBUG "Unmounting the key device" umount $1 /dev/disk/by-uuid/$KEY_UUID if [ "$RM_KMP" = "1" ]; then rmdir $KEY_MOUNTPOINT fi } #      PrepareSwap() { if [ "$KEY_FILENAME" = "random" ] then #      if [ ! -e "/dev/disk/by-uuid/$CRYPT_UUID" ] then #    #  echo "Not found any partition for swap with UUID:" echo "$CRYPT_UUID" ###              else #   echo "Prepare to encripting swap" DEBUG "Disable all swaps" #    (,     ?) swapoff -a DEBUG "Regenerating new temporary key" #      mkdir /tmp/key ###                  #       (   ?     ?) mount -t ramfs none /tmp/key -o maxsize=1 #   dd if=/dev/urandom of=/tmp/key/swapkey$CRYPT_UUID bs=1 count=256 &> /dev/null DEBUG "Configuring encrypt on the swap partition" #      echo "YES"|cryptsetup luksFormat /dev/disk/by-uuid/$CRYPT_UUID /tmp/key/swapkey$CRYPT_UUID --uuid=$CRYPT_UUID #   DEBUG "Openinig swap partition for operations" cryptsetup luksOpen /dev/disk/by-uuid/$CRYPT_UUID $CRYPT_NAME --key-file /tmp/key/swapkey$CRYPT_UUID #   DEBUG "Erasing temporary key" rm -r -f /tmp/key/swapkey$CRYPT_UUID #   umount none #   UUID   (   uuid luks    ) DEBUG "Regenerating swapfs uuid" FS_CRYPT_UUID=`uuidgen` #echo $FS_CRYPT_UUID > $KEYCRYPTAB_DIR/swaps/$CRYPT_UUID DEBUG "Creating swap format" if [ -e "$SWAPCLEAN_FILE" ] then #     -            ###            ,   ,            . echo "Swap partition was mounted unsafe, cleaning..." echo -e 'It may take a long time. \e[31;40mDo not halt the computer! \e[0m' S=`fdisk -s /dev/mapper/$CRYPT_NAME` let "S *= 1024" dd if=/dev/urandom | pv -s $S | dd of=/dev/mapper/$CRYPT_NAME 2> /dev/null rm -r -f $SWAPCLEAN_FILE fi #  swapfs mkswap -f -U $FS_CRYPT_UUID /dev/mapper/$CRYPT_NAME &> /dev/null #   DEBUG "Activating swap" swapon -U $FS_CRYPT_UUID fi else #  ,           - if [ ! -e "/dev/disk/by-uuid/$CRYPT_UUID" ] then echo "Not found any partition for swap with UUID:" echo "$CRYPT_UUID" else chkswapt=`cat /proc/swaps | grep "$CRYPT_NAME"` if [ ! "$chkswapt" = "" ] then echo "Oops! \e[31;40mYou already have the swap! \e[0m" cat /proc/swaps echo "heck your 'fstab', 'cryptab' and '$KEYCRYPTAB_FILE'" echo "files for duplicate entries for swap partition" echo "In future use only one of these files to manage swaps" return 0 else echo -e '\e[31;40mWARNING!!! \e[0mThe system uses the unface way to manage swap!' echo 'You need to use value "random" of <key filename> on the' echo "$KEYCRYPTAB_FILE file for all swap partition!" fi swapoff -a mkswap -f -U $CRYPT_UUID /dev/disk/by-uuid/$CRYPT_UUID &> /dev/null swapon -U $CRYPT_UUID && echo "Remoove this file for disable cleaning swap on boot time" > $SWAPCLEAN_FILE # echo $CRYPT_UUID > $KEYCRYPTAB_DIR/swaps/$CRYPT_UUID fi fi } #       PrepareVolumes() { cat $KEYCRYPTAB_FILE | while read line; do #        if SetStruct "$line" then #     if [ ! -e "/dev/disk/by-uuid/$CRYPT_UUID" ] then #     # ,    echo "Not found encrypted partition with UUID:" echo "$CRYPT_UUID" else #    if [[ "$CRYPT_MOUNTPOINT" = "swap" && "$1" = "swaps" ]] then #          "swaps" #        PrepareSwap else #     if [[ "$CRYPT_MOUNTPOINT" != "swap" && "$1" != "swaps" ]] ###   ,  !                 ,            . then #        "swaps" #    echo "Opening encrypted volume" cryptsetup luksOpen /dev/disk/by-uuid/$CRYPT_UUID $CRYPT_NAME --key-file $KEY_MOUNTPOINT/$KEY_FILENAME if [ -e "/dev/mapper/$CRYPT_NAME" ] then #   #      echo "Mounting encrypted volume" if [ ! -d "$CRYPT_MOUNTPOINT" ]; then mkdir $CRYPT_MOUNTPOINT fi mount /dev/mapper/$CRYPT_NAME $CRYPT_MOUNTPOINT fi fi fi fi fi done } case "$1" in start) #         start #     # if [ -d "$KEYCRYPTAB_DIR/swaps/" ] # then # rm -r -f $KEYCRYPTAB_DIR/swaps/*.* # else # mkdir --parents $KEYCRYPTAB_DIR/swaps/ # fi cat $KEYDRIVER_FILE | while read line; do #      if SetKey "$line" then #     if PrepareKeyDrv then #      #    PrepareVolumes #    UmountKey fi fi done #   PrepareVolumes swaps DEBUG "Now comleting" ;; stop) #         st #    OS cat $KEYCRYPTAB_FILE | while read line; do #        if SetStruct "$line" then #     if [ "$CRYPT_MOUNTPOINT" = "swap" ] then #       DEBUG "Deactivating swap /dev/mapper/$CRYPT_NAME" #      swapoff /dev/mapper/$CRYPT_NAME # swapoff -UUID=`cat $KEYCRYPTAB_DIR/swaps/$CRYPT_UUID` else #  (    ) #      chkmnt=`mount | grep "$CRYPT_NAME"` if [ "$chkmnt" != "" ] then #   #  echo "Unmounting encrypted volume" DEBUG "/dev/mapper/$CRYPT_NAME" umount $UMOUNT_FLAG /dev/mapper/$CRYPT_NAME fi fi if [ -e "/dev/mapper/$CRYPT_NAME" ] then #     echo "Closing encrypted volume" DEBUG "/dev/mapper/$CRYPT_NAME" #  cryptsetup luksClose $CRYPT_NAME fi fi done ;; restart|reload) do_stop do_start ;; force-reload) UMOUNT_FLAG="-f" do_stop do_start ;; *) echo "Usage: $1 {start|stop|restart|reload|force-reload}" echo "Actions 'stop', 'restart', 'reload' and 'force-reload' will unmount" echo "all encrypted disk partitions, including partition containing swap" echo "To mount the additional partitions without unount already mounted," echo "run $1 script with the parameter 'start' again" exit 1 ;; esac 
  2. Keycryptab рдлрд╝рд╛рдЗрд▓
     #All swap partition is required for the mount point "swap" #key file name for swap can take only 2 values: #"none" (is strongly not recommended) and "random" example: #11111111-2222-3333-4444-555555555555 random swap1 swap #<uuid> <key filename> <luks name> <dotmount> 0cf1c420-09a0-4338-85b4-df6aed780425 random swap1 swap 4ebecf51-4a5a-4aaf-ba97-3523129e567c keyfile.key dtb /var/lib/pgsql 0feb764f-195e-487d-a0ed-1de525fb3282 bacup.key bkp /media/old #this file MUST contain final newline or final comment 
  3. Keydrv рдлрд╝рд╛рдЗрд▓
     # Syntax: # <uuid> <timeout> <dotmount> # Example: # kkkkkkkk-kkkk-kkkk-kkkk-kkkkkkkkkkkk 20 /media/keys # <uuid> <timeout> <dotmount> 609e85b7-5fa8-4434-9210-b8df1d4c0a66 20 /media/keys bc5e202a-1523-46bc-95f4-3c89f10edd27 120 /media/keys #bacup user #this file MUST contain final newline or final comment 


рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдбреЗрдмрд┐рдпрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
ArchLinux
 #!/bin/bash #Keycrypt 1.1 2012  ArchLinux #     ,   , #          #         . /etc/rc.conf . /etc/rc.d/functions KEYCRYPTAB_DIR=/etc/keycrypt #   KEYCRYPTAB_FILE=$KEYCRYPTAB_DIR/keycryptab #    #        #       #              # : # <uuid > <  > <   links> < > #          "swap". #          2 : "none"  "random" # Use the option "none" is not recommended. # Examples: # 11111111-2222-3333-4444-555555555555 random swap1 swap # #safety swap partition. It no need any keyfile, but must be encrypted # 12345678-1234-4321-1234-567890123456 harry.key harry /home/harry # #home directory for Harry, Harry have the "harry.key" in his flash drive # 66666666-9999-8888-7777-000000000000 ntldr public "/var/ftp" # #publuc directory, all staff have the "ntldr" file in flash drives KEYDRIVER_FILE=$KEYCRYPTAB_DIR/keydrv #     #       #              # : # <uuid> <timeout> <dotmount> # Examples: # kkkkkkkk-kkkk-kkkk-kkkk-kkkkkkkkkkkk 20 /media/keys SWAPCLEAN_FILE=$KEYCRYPTAB_DIR/swapclean.flg # NOTE!!! If u are not using the encription swap # u need to run "dd if=/dev/urandom of=/u/swap/partition". # Otherwise encryption will not make sense. # I was include this functional on  sript, but # it will take a very long time to load OS. DBG="on" #       #=====================Begin of script===================== # Do not edit next if you are not sure what you are doing! UMOUNT_FLAG="" #       #   ,     , 6  ( !     ) DEBUG() { if [ "$DBG" = "on" ] then echo -e "\E[33;40m$1 $2 $3 $4 $5 $6"; tput sgr0 fi } #           SetStruct() { str=`echo $1 | sed 's/#.*/ /g'` n=0 for arg in $str do let "n+=1" case "$n" in 1) CRYPT_UUID=$arg ;; 2) KEY_FILENAME=$arg ;; 3) CRYPT_NAME=$arg ;; 4) CRYPT_MOUNTPOINT=$arg return 0 ;; *) DEBUG "too many arguments: $arg" ;; esac done return 1 } #            SetKey() { nk=0 str=`echo $1 | sed 's/#.*/ /g'` for arg in $str do let "nk+=1" case "$nk" in 1) KEY_UUID=$arg ;; 2) KEY_TIMEOUT=$arg if (( KEY_TIMEOUT < 0 )) then echo "Invalid key timeout for $KEY_UUID" KEY_TIMEOUT=1 fi if (( KEY_TIMEOUT > 60 )) then echo "Invalid key timeout for $KEY_UUID" KEY_TIMEOUT=60 fi DEBUG "KEY_TIMEOUT=$KEY_TIMEOUT" ;; 3) KEY_MOUNTPOINT=$arg return 0 ;; *) DEBUG "too many arguments: $arg" ;; esac done return 1 } #     PrepareKeyDrv() { if [ ! -e "/dev/disk/by-uuid/$KEY_UUID" ] then #     echo -en "Waiting $KEY_TIMEOUT seconds for the key device \r" #    for (( n = ++KEY_TIMEOUT; n ; n-- )) do if [ ! -e "/dev/disk/by-uuid/$KEY_UUID" ] then (( KEY_TIMEOUT-- )) echo -en "Waiting $KEY_TIMEOUT seconds for the key device \r" else DEBUG "Key device was found!" DEBUG $KEY_UUID break fi if [ "$n" = "1" ] then DEBUG "Not found a key device!" DEBUG "Now completing PrepareKeyDrv()" # ,  return 1 fi sleep 1 # it is not a debug! Do not comment it! done fi #, ,     uuid DEBUG "Mounting the key device" if [ ! -d "$KEY_MOUNTPOINT" ]; then RM_KMP=1 mkdir $KEY_MOUNTPOINT fi uuid_l=`echo $KEY_UUID | wc -m` case "$uuid_l" in 10) mount /dev/disk/by-uuid/$KEY_UUID $KEY_MOUNTPOINT -t vfat -o ro DEBUG "fat detected" ;; 17) mount /dev/disk/by-uuid/$KEY_UUID $KEY_MOUNTPOINT -t ntfs-3g -o force,ro DEBUG "ntfs detected" ;; 37) mount /dev/disk/by-uuid/$KEY_UUID $KEY_MOUNTPOINT -o ro DEBUG `mount | grep $KEY_MOUNTPOINT ` ;; *) DEBUG "Can not identify type of the file system on the specified uuid:" DEBUG "$KEY_UUID" mount /dev/disk/by-uuid/$KEY_UUID $KEY_MOUNTPOINT -o ro ;; esac } #       UmountKey() { DEBUG "Unmounting the key device" umount $1 /dev/disk/by-uuid/$KEY_UUID if [ "$RM_KMP" = "1" ]; then rmdir $KEY_MOUNTPOINT fi } #      PrepareSwap() { if [ "$KEY_FILENAME" = "random" ] then #      if [ ! -e "/dev/disk/by-uuid/$CRYPT_UUID" ] then #    #  DEBUG "Not found any partition for swap with UUID:" DEBUG "$CRYPT_UUID" ###              else #   DEBUG "Prepare to encripting swap" DEBUG "Disable all swaps" #    (,     ?) swapoff -a DEBUG "Regenerating new temporary key" #      mkdir /tmp/key ###                  #       (   ?     ?) mount -t ramfs none /tmp/key -o maxsize=1 #   dd if=/dev/urandom of=/tmp/key/swapkey$CRYPT_UUID bs=1 count=256 &> /dev/null DEBUG "Configuring encrypt on the swap partition" #      echo "YES"|cryptsetup luksFormat /dev/disk/by-uuid/$CRYPT_UUID /tmp/key/swapkey$CRYPT_UUID --uuid=$CRYPT_UUID #   DEBUG "Openinig swap partition for operations" cryptsetup luksOpen /dev/disk/by-uuid/$CRYPT_UUID $CRYPT_NAME --key-file /tmp/key/swapkey$CRYPT_UUID #   DEBUG "Erasing temporary key" rm -r -f /tmp/key/swapkey$CRYPT_UUID #   umount none #   UUID   (   uuid luks    ) DEBUG "Regenerating swapfs uuid" FS_CRYPT_UUID=`uuidgen` #echo $FS_CRYPT_UUID > $KEYCRYPTAB_DIR/swaps/$CRYPT_UUID DEBUG "Creating swap format" if [ -e "$SWAPCLEAN_FILE" ] then #     -            ###            ,   ,            . echo "Swap partition was mounted unsafe, cleaning..." echo -e 'It may take a long time. \e[31;40mDo not halt the computer! \e[0m' S=`fdisk -s /dev/mapper/$CRYPT_NAME` let "S *= 1024" dd if=/dev/urandom | pv -s $S | dd of=/dev/mapper/$CRYPT_NAME 2> /dev/null rm -r -f $SWAPCLEAN_FILE fi #  swapfs mkswap -f -U $FS_CRYPT_UUID /dev/mapper/$CRYPT_NAME &> /dev/null #   DEBUG "Activating swap" swapon -U $FS_CRYPT_UUID fi else #  ,           - if [ ! -e "/dev/disk/by-uuid/$CRYPT_UUID" ] then DEBUG "Not found any partition for swap with UUID:" DEBUG "$CRYPT_UUID" else chkswapt=`cat /proc/swaps | grep "$CRYPT_NAME"` if [ ! "$chkswapt" = "" ] then echo "Oops! \e[31;40mYou already have the swap! \e[0m" cat /proc/swaps echo "heck your 'fstab', 'cryptab' and '$KEYCRYPTAB_FILE'" echo "files for duplicate entries for swap partition" echo "In future use only one of these files to manage swaps" return 0 else echo -e '\e[31;40mWARNING!!! \e[0mThe system uses the unface way to manage swap!' echo 'You need to use value "random" of <key filename> on the' echo "$KEYCRYPTAB_FILE file for all swap partition!" fi swapoff -a mkswap -f -U $CRYPT_UUID /dev/disk/by-uuid/$CRYPT_UUID &> /dev/null swapon -U $CRYPT_UUID && echo "Remoove this file for disable cleaning swap on boot time" > $SWAPCLEAN_FILE # echo $CRYPT_UUID > $KEYCRYPTAB_DIR/swaps/$CRYPT_UUID fi fi } #       PrepareVolumes() { cat $KEYCRYPTAB_FILE | while read line; do #        if SetStruct "$line" then #     if [ ! -e "/dev/disk/by-uuid/$CRYPT_UUID" ] then #     # ,    DEBUG "Not found encrypted partition with UUID:" DEBUG "$CRYPT_UUID" else #    if [[ "$CRYPT_MOUNTPOINT" = "swap" && "$1" = "swaps" ]] then #          "swaps" #        PrepareSwap else #     if [[ "$CRYPT_MOUNTPOINT" != "swap" && "$1" != "swaps" ]] ###   ,  !                 ,            . then #        "swaps" #    DEBUG "Opening encrypted volume" cryptsetup luksOpen /dev/disk/by-uuid/$CRYPT_UUID $CRYPT_NAME --key-file $KEY_MOUNTPOINT/$KEY_FILENAME if [ -e "/dev/mapper/$CRYPT_NAME" ] then #   #      DEBUG "Mounting encrypted volume" if [ ! -d "$CRYPT_MOUNTPOINT" ]; then mkdir $CRYPT_MOUNTPOINT fi mount /dev/mapper/$CRYPT_NAME $CRYPT_MOUNTPOINT fi fi fi fi fi done } case "$1" in start) #         start #     stat_busy "Preparing encrypted partitions" # if [ -d "$KEYCRYPTAB_DIR/swaps/" ] # then # rm -r -f $KEYCRYPTAB_DIR/swaps/*.* # else # mkdir --parents $KEYCRYPTAB_DIR/swaps/ # fi cat $KEYDRIVER_FILE | while read line; do #      if SetKey "$line" then #     if PrepareKeyDrv then #      #    PrepareVolumes #    UmountKey fi fi done #   PrepareVolumes swaps DEBUG "Now comleting" if [ $? -gt 0 ]; then stat_fail else stat_done fi add_daemon internet ;; stop) #         st #    OS cat $KEYCRYPTAB_FILE | while read line; do #        if SetStruct "$line" then #     if [ "$CRYPT_MOUNTPOINT" = "swap" ] then #       DEBUG "Deactivating swap /dev/mapper/$CRYPT_NAME" #      swapoff /dev/mapper/$CRYPT_NAME # swapoff -UUID=`cat $KEYCRYPTAB_DIR/swaps/$CRYPT_UUID` else #  (    ) #      chkmnt=`mount | grep "$CRYPT_NAME"` if [ "$chkmnt" != "" ] then #   #  DEBUG "Unmounting encrypted volume" DEBUG "/dev/mapper/$CRYPT_NAME" umount $UMOUNT_FLAG /dev/mapper/$CRYPT_NAME fi fi if [ -e "/dev/mapper/$CRYPT_NAME" ] then #     DEBUG "Closing encrypted volume" DEBUG "/dev/mapper/$CRYPT_NAME" #  cryptsetup luksClose $CRYPT_NAME fi fi done rm_daemon internet if [ $? -gt 0 ]; then stat_fail else stat_done fi ;; restart|reload) do_stop do_start ;; force-reload) UMOUNT_FLAG="-f" do_stop do_start ;; *) echo "Usage: $1 {start|stop|restart|reload|force-reload}" echo "Actions 'stop', 'restart', 'reload' and 'force-reload' will unmount" echo "all encrypted disk partitions, including partition containing swap" echo "To mount the additional partitions without unount already mounted," echo "run $1 script with the parameter 'start' again" exit 1 ;; esac 
(рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡рд╣ systemd рд╣реЛ рдЧрдпрд╛)ред

Source: https://habr.com/ru/post/In172923/


All Articles