Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Что делать с конфиденциальными данными в bash-скрипте?  (Прочитано 5649 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Виктор Дубосарский

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Есть желание автоматически без ввода пароля монтировать шифрованную файловую систему encfs через bash-скрипт из под пользователя. Команда простая:

$ echo mylongcoolpassword | encfs -S /home/user/encrypted /home/user/unencrypted
Очевидный и ужасный недостаток такого скрипта - наличие открытого назащищенного пароля. Что можно по этому поводу предпринять?

1. Можно ли сделать так, чтобы в скрипте открытый пароль не указывался, а вместо этого пароль каким-то чудесным и безопасным образом импортировался из защищенного хранилища, к которому имеет доступ (на запись) только системный администратор?
2. Куда положить и как правильно настроить права доступа к bash-скрипту, содержащему конфиденциальные данные так, чтобы максимально ограничить доступ к нему? В идеале хотелось бы, чтобы просматривать и изменять скрипт мог только root, но запускаться скрипт должен из под пользователя. Как этого добиться?
« Последнее редактирование: 06 Ноября 2015, 00:00:36 от Виктор Дубосарский »

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Виктор Дубосарский, какой смысл монтировать зашифрованную фс без пароля? Права менять на скрипт пробовал?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн wajnon

  • Старожил
  • *
  • Сообщений: 2778
    • Просмотр профиля
Виктор Дубосарский,
я бы попробовал сделать два скрипта, один с паролем в папке /root (для обычного пользователя она закрыта даже на чтение). Второй в хомяке пользователя, он нужен только для передачи команды запуска первому скрипту. Права второму скрипту выставляем примерно такие:
-rwSrwxrxВладелец root:root
« Последнее редактирование: 06 Ноября 2015, 00:10:11 от wajnon »

Оффлайн Виктор Дубосарский

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Виктор Дубосарский, какой смысл монтировать зашифрованную фс без пароля? Права менять на скрипт пробовал?

alsoijw,
смысл в том, что пароль длинный >= 20 символов. Руками я его набирать не хочу. Особенно при каждой перезагрузке компьютера. По поводу прав: мне нужно, чтобы скрипт запускался из под пользователя, и при этом пользователь не имел физической возможности узнать пароль (даже зная где он лежит). Вопрос состоит в следующем: куда положить скрипт и какие права назначить? Как назначать права на файлы и каталоги я знаю.
« Последнее редактирование: 06 Ноября 2015, 00:43:45 от Виктор Дубосарский »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7435
  • Luck Tales
    • Просмотр профиля
Цитировать
скрипт запускался из под пользователя, и при этом пользователь не имел физической возможности узнать пароль

могу, конечно, ошибаться, но так не сделать. Если пользователь видит скрипт - при минимальных знаниях не составит труда выцепить пароль
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
$ echo mylongcoolpassword | encfs -S /home/user/encrypted /home/user/unencrypted$ это что?

папробуй
# su user -c 'echo mylongcoolpassword | encfs -S /home/user/encrypted /home/user/unencrypted'
user ваше пользователя, не будет ввод папроль.
Wars ~.o

Оффлайн satch

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1561
  • Kubuntu 15.10 amd64
    • Просмотр профиля
как вариант:

#!/bin/bash

mypassword=mylongcoolpasswordwithsolt

mypassword=${mypassword::${#mypassword}-8}
echo $mypassword | encfs -S /home/user/encrypted /home/user/unencrypted


при этом из переменной $mypassword удаляется последние 8 символов, в остатке остается mylongcoolpassword
Наше желание помочь прямопропорционально вашему желанию решить проблему

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Не понимаю вашей проблемы. Что случилось с Gnome Keyring или что там сегодня используется для хранения паролей?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Виктор Дубосарский

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Не понимаю вашей проблемы. Что случилось с Gnome Keyring или что там сегодня используется для хранения паролей?

AnrDaemon,
Пожалуйста поясните как можно использовать Gnome Keyring для автоматизации ввода пароля в bash-скрипте? Лично я пользуюсь KeePassX. Я надеюсь вы не предлагаете мне руками открыть подобную программу, ввести master-пароль, найти нужный пункт, скопировать пароль в буфер обмена и вставить его в запрашивающую программу? Это будет еще дольше, чем набрать пароль руками.

Пользователь решил продолжить мысль [time]Ноябрь 06, 2015, 22:40:36[/time]:
Виктор Дубосарский,
я бы попробовал сделать два скрипта, один с паролем в папке /root (для обычного пользователя она закрыта даже на чтение). Второй в хомяке пользователя, он нужен только для передачи команды запуска первому скрипту. Права второму скрипту выставляем примерно такие:
-rwSrwxrxВладелец root:root
wajnon,
Спасибо за интересный совет. К сожалению, он не cработал. Насколько я понял, современный Linux игнорирует SUID на скриптах в силу потенциальных проблем с безопасностью. Подробности см. тут: http://unix.stackexchange.com/questions/364/allow-setuid-on-shell-scripts или тут http://stackoverflow.com/questions/18698976/suid-not-working-with-shell-script
« Последнее редактирование: 06 Ноября 2015, 20:46:01 от Виктор Дубосарский »

Оффлайн wajnon

  • Старожил
  • *
  • Сообщений: 2778
    • Просмотр профиля
Виктор Дубосарский,
а .desktop тоже игнорит?

Оффлайн Виктор Дубосарский

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Виктор Дубосарский,
а .desktop тоже игнорит?

wajnon,
SUID игнорируется на уровне ядра. Можно сделать .desktop ярлык, который будет запускать скрипт от рута, но при этом ведь у пользователя будет запрошен и пароль рута, которого он знать точно не должен... :-)

Оффлайн satch

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1561
  • Kubuntu 15.10 amd64
    • Просмотр профиля
Виктор Дубосарский,
чем не подходит мой вариант?
Наше желание помочь прямопропорционально вашему желанию решить проблему

Оффлайн Виктор Дубосарский

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Виктор Дубосарский,
чем не подходит мой вариант?

Satch,
Насколько я понял, вы предлагаете удалить из строки пароля последние 8 символов, которые нужно туда предварительно добавить. Но что это даст? Ведь пароль как лежал в незашифрованном виде, так и будет лежать дальше. Или я что-то неправильно понял?

Пользователь решил продолжить мысль [time]Ноябрь 07, 2015, 13:31:42[/time]:
Не понимаю вашей проблемы. Что случилось с Gnome Keyring или что там сегодня используется для хранения паролей?
AnrDarmon,
Похоже это верное направление. Действительно Gnome Keyring имеет средства для чтения паролей из командной строки https://kparal.wordpress.com/2009/09/29/command-line-access-to-gnome-keyring/ https://developer.gnome.org/gnome-keyring/stable/ch01.html Осталось разобраться, как этим пользоваться. Спасибо за совет!

Пользователь решил продолжить мысль 07 Ноября 2015, 12:03:04:
Для менеджера KeePassX есть подобное средство:

kpcli - A command line interface to KeePass database files
http://kpcli.sourceforge.net/
« Последнее редактирование: 07 Ноября 2015, 12:03:04 от Виктор Дубосарский »

Оффлайн virusoft

  • Активист
  • *
  • Сообщений: 323
    • Просмотр профиля
    • Virusoft
Куда положить и как правильно настроить права доступа к bash-скрипту, содержащему конфиденциальные данные так, чтобы максимально ограничить доступ к нему? В идеале хотелось бы, чтобы просматривать и изменять скрипт мог только root, но запускаться скрипт должен из под пользователя. Как этого добиться?
в папку пользователя /home/user кладешь свой скрипт. Назначаешь владельцем root группа root/
После этого назначаешь права своему скрипту.

Владелец: rwx (все права разрешены)
Группа: rw- (или как пожелаешь)
Прочие: --x (разрешено только выполнение)

Т.о. Пользователь может выполнить скрипт, а вот посмотреть на него увы нет.
Если работает - не трогай. Linux - гибкая система, но один раз прогнувшись может обратным ходом распрямиться и ударить по самому (…) месту. Думай о будущем и все будет хорошо.

Оффлайн Виктор Дубосарский

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
...и еще есть средство Vault:

How to Securely Store Passwords and Api Keys Using Vault
http://linoxide.com/how-tos/secure-secret-store-vault/

Пользователь решил продолжить мысль 07 Ноября 2015, 12:32:48:
в папку пользователя /home/user кладешь свой скрипт. Назначаешь владельцем root группа root/
После этого назначаешь права своему скрипту.
...
Т.о. Пользователь может выполнить скрипт, а вот посмотреть на него увы нет.

virusoft,
Такой фокус со скриптами к сожалению не пройдет: поскольку шел пользователя не сможет прочитать код скрипта, он соответственно и не сможет выполнить его.
« Последнее редактирование: 07 Ноября 2015, 12:32:48 от Виктор Дубосарский »

 

Страница сгенерирована за 0.042 секунд. Запросов: 25.