Ещё один из вопросов, которые часто задают новички. Чаще всего советуют просто отобрать права чтения у файла и оставить их только руту, но Linux хорош тем, что любое действие можно сделать множеством способов. Вот и рассмотрим в статье несколько вариантов, как поставить пароль на файл или папку в Linux.
Если при установки системы вы ставили галочку на шифровании домашнего каталога, то можно просто не пускать не кого за свою учётку и быть уверенным, что доступ к файлам нет ни у кого, кроме нас.
Но рассмотрим другие варианты:
Отдаём файл руту.
Это действительно простой способ.
Вначале файлу(или папке) присваиваем нового владельца:
sudo chown root:root путь/к/файлу/или/папке
Затем оставляем права читать и записывать в файл только владельцу(он же root)
sudo chmod 600 путь/к/файлу/или/папке
Теперь не зная пароль от sudo с этим файлом нечего нельзя сделать.
А теперь представим, что у нас одна учётная запись и другие пользователи компьютера(семья например) знают пароль от sudo, но нам нужно защитите некоторые свои файлы от них.
Ставим пароль на архив
Можно просто за архивировать свои файлы с паролем.
В Ubuntu это можно сделать нажав правой кнопкой на файле(файлах) или папке и выбрав «сжать», а затем вписать пароль в других параметрах:
Универсальный способ зашифровать архив из консоли:
zip -P ПАРОЛЬ куда/шифруем.zip что/шифруем
Если нужно запаковать папку, то добавляем ключ -r
zip -r -P ПАРОЛЬ куда/шифруем.zip что/шифруем
Ставим пароль на отдельную папку
В этом случае может помочь программа EncFs. Я уже описывал как ей пользоваться, по этому повторятся не буду.
Описание консольной версии тут.
Апплет для ubuntu тут.
Ставим пароль на отдельный файл
Тут нам пригодится openssl.
Что бы зашифровать из консоли выполняем:
cat что/шифруем | openssl enc -e -aes-256-cbc -k ПАРОЛЬ > куда/шифруем
Нельзя шифровать самого в себя.
Для расшифровки выполняем:
cat что/расшифровываем | openssl enc -d -aes-256-cbc -k ПАРОЛЬ > куда/расшифровываем
Для удобства можно написать пару скриптов:
sudo gedit /usr/bin/зашифруй
И вставляем в открывшийся документ:
#!/bin/bash
echo "Пароль:"
read p
cat $1 | openssl enc -e -aes-256-cbc -k $p > $1.s
mv $1.s $1
Делаем его исполняемым:
sudo chmod +x /usr/bin/зашифруй
Теперь повторяем тоже самое, но для расшифровки
sudo gedit /usr/bin/расшифруй
Вставляем:
#!/bin/bash
echo "Пароль:"
read p
cat $1 | openssl enc -d -aes-256-cbc -k $p > $1.s
mv $1.s $1
делаем исполняемым:
sudo chmod +x /usr/bin/расшифруй
Теперь можно шифровать файлы командой:
зашифруй имя_файла
и расшифровывать:
расшифруй имя_файла
Для тех кто не любит консоль, могу посоветовать составить скрипт для наутилуса:
gedit ~/.gnome2/nautilus-scripts/шифровка
Вставляем следующий код:
#!/bin/bash
N=`basename "$*"`
$(zenity --text "Зашифровать файл(Да) расшифровать(нет)" --question)
if [[ $? == 1 ]]; then
p=$(zenity --text "Пароль:" --password)
cat $N | openssl enc -d -aes-256-cbc -k $p > $N.s
mv $N.s $N
else
p=$(zenity --text "Пароль:" --password)
cat $N | openssl enc -e -aes-256-cbc -k $p > $N.s
mv $N.s $N
fi
И, как обычно, делаем файл исполняемым:
chmod +x ~/.gnome2/nautilus-scripts/шифровка