অফলাইনআইএমএপি পাসওয়ার্ড এনক্রিপ্ট করুন


19

আমি একটি জিপিজি এনক্রিপ্ট করা ফাইলের মাধ্যমে প্রমাণীকরণের জন্য অফলাইনআইএমএপ সেট আপ করার চেষ্টা করছি (এইভাবে আমি আমার জিপিজি-এজেন্ট প্রক্রিয়াতে আমার সমস্ত এনক্রিপশন একত্রীকরণ করতে পারি)।

ডকুমেন্টেশন থেকে মনে হয় যে কোনওটির সার্ভারের পাসওয়ার্ডগুলি এনক্রিপ্ট করার একমাত্র উপায় হ'ল জিনোম-কীরিং ব্যবহার করা (যা আমি আমার মাথাবিহীন সার্ভারে না চালানো পছন্দ করি)। জিপিজি ফাইল থেকে আপনি যেভাবে মুট করতে পারেন সেভাবে আমার পাসওয়ার্ডে পাইপ দেওয়ার কোনও উপায় আছে?

আমি জানি আপনি এক্সটেনশন অজগর ফাইলটি অফলাইনম্যাপে অতিরিক্ত বৈশিষ্ট্য যুক্ত করতে পারেন তবে আমি ভয় করি যে এটি দিয়ে কোথা থেকে শুরু করব তা আমি জানতাম না।



@ জেসনওয়ারিয়ান লিংক নিচে আছে? এনভিএম: সঠিক লিঙ্ক
jw013

সেই লিঙ্কটি কিছুটা বিভ্রান্তিকর। ফাইলগুলি এনক্রিপ্ট করা আপনার হার্ড ড্রাইভ / কম্পিউটার চুরি করার সময় লোকেদের যে কোনও উপকার না পেতে বাঁচানোর একটি ভাল উপায়, তবে আপনি যে বাক্সটিতে লগ ইন করছেন সেটিকে দূষিত রুট ব্যবহারকারীর জন্য এটি কেবল একটি সামান্য স্পিড বাম্প। rootএনক্রিপশনটি পেতে ব্যবহারকারী অনেক কিছুই করতে পারে। মনে রাখবেন যে অবিশ্বস্ত মেশিনগুলি থেকে (যেমন: মাধ্যমে ssh -X) এক্স 11 ফরওয়ার্ডিংও নিরাপদ নয়।
jw013

আমি কেবলমাত্র আমার সমস্ত পাসওয়ার্ডযুক্ত কনফিগারেশন ফাইলগুলিকে একটি এ্যাক্রিপ্টস কনটেইনারগুলিতে ডাম্প করি যা লগ ইন করার সময় মাউন্ট হয়, একটি সিমিলিংক দিয়ে আসলটি প্রতিস্থাপন করে এবং এটি দিয়ে হয়ে যাই।
jw013

উত্তর:


6

/ মাধ্যমে স্ক্রীনের আপনার পাসওয়ার্ডের জ্ঞান দিয়ে চলছে offlineimap ছাড়ার আরেকটি পদ্ধতি, কিন্তু ডিস্কে পাসওয়ার্ড নির্বাণ ছাড়া, tmux চলমান offlineimap ছেড়ে চলে যেতে হয় autorefreshসেটিং সক্ষম করা আপনার~/.offlineimaprc

আপনাকে প্রতি 10 মিনিটে যাচাই করে নেওয়ার জন্য আপনাকে অফলাইনমাআরপিসি ফাইলের বিভাগে যুক্ত autorefresh = 10করতে [Account X]হবে। passwordবা এর সাথে যে কোনও কনফিগার লাইন মুছুন passwordeval

তারপরে অফলাইনেম্যাপ চালান - এটি আপনার পাসওয়ার্ডের জন্য জিজ্ঞাসা করবে এবং স্মৃতিতে এটি ক্যাশে করবে। এটি প্রথম রান করার পরে প্রস্থান করবে না, তবে 10 মিনিটের জন্য ঘুমাবে will তারপরে এটি আবার জেগে উঠবে এবং এটি আবার আপনার পাসওয়ার্ডটি মনে রাখবে।

সুতরাং আপনি অফলাইনেম্যাপের সাথে একটি টিএমউक्स সেশনটি ছেড়ে যেতে পারেন, একবার আপনার পাসওয়ার্ড লিখুন এবং পরে অফলাইনম্যাপটি ঠিক হয়ে যাবে।


29

আমি নিম্নলিখিত পদ্ধতিটি ব্যবহার করি, যা মোটামুটি ভালভাবে কাজ করে:

1) আপনার পাসওয়ার্ডগুলি পৃথক জিপিজি এনক্রিপ্ট করা ফাইলগুলিতে সঞ্চয় করুন। উদাহরণ স্বরূপ~/.passwd/<accountname>.gpg

২) ~/.offlineimap.pyনীচের বিষয়বস্তু সহ আপনার পছন্দের নামের সাথে একটি অজগর এক্সটেনশন ফাইল তৈরি করুন :

def mailpasswd(acct):
  acct = os.path.basename(acct)
  path = "/home/<username>/.passwd/%s.gpg" % acct
  args = ["gpg", "--use-agent", "--quiet", "--batch", "-d", path]
  try:
    return subprocess.check_output(args).strip()
  except subprocess.CalledProcessError:
    return ""

3) পাইথন ফাইল সম্পর্কে জানাতে এবং আপনার পাসওয়ার্ডগুলি কীভাবে পড়তে হয় তা বলার জন্য আপনার। অফলাইনআইএমআরসি ফাইলটি পরিবর্তন করুন

[general]
pythonfile = ~/.offlineimap.py
# ...

[Repository <reponame>]
# add this line for each remote repository
remotepasseval = mailpasswd("<accountname>")

আপনার যদি একাধিক অ্যাকাউন্ট থাকে যা একই সাথে চেক হয় (পৃথক থ্রেড), এবং আপনি জিপিজি-এজেন্ট ব্যবহার করেন, তবে এটি প্রতিটি অ্যাকাউন্টের জন্য আপনাকে পাসফ্রেজ চাইবে। আমি এজেন্টটিকে একটি ফাইল ( echo "prime" | gpg -e -r foo@bar.com > ~/.passwd/prime.gpg) তৈরি করে এবং জিপিজি এজেন্টকে প্রাইমিং করে অফলাইনেম্যাপ লঞ্চ করার সময় এই ফাইলটি ডিক্রিপ্ট করে। এটি করতে, নিম্নলিখিতটির সাথে শেষে যুক্ত করুন ~/.offlineimap.py:

def prime_gpg_agent():
  ret = False
  i = 1
  while not ret:
    ret = (mailpasswd("prime") == "prime")
    if i > 2:
      from offlineimap.ui import getglobalui
      sys.stderr.write("Error reading in passwords. Terminating.\n")
      getglobalui().terminate()
    i += 1
  return ret

prime_gpg_agent()

1
এই উত্তরটি সত্যিই ভাল কাজ করে। কেবলমাত্র আপনি নিখুঁত পাথ ব্যবহার করেছেন তা নিশ্চিত করুন বা সাব-প্রসেস কমান্ড এনক্রিপ্ট হওয়া ফাইলগুলি খুঁজে পাবে না।
ক্লাইমেন্ট বি।

4

@Kbeta এর উত্তর ভালবাসা। তবে subprocess.check_output()এটি কেবল পাইথন ২. in-এ প্রবর্তিত হয়েছিল - সুতরাং offlineimap.pyপাইথনের পুরানো সংস্করণগুলির সাথে এটির একটি সংস্করণ কাজ করবে:

import os
import subprocess

def mailpasswd(acct):
    acct = os.path.basename(acct)
    path = "/home/hamish/.passwd/%s.gpg" % acct
    args = ["gpg", "--use-agent", "--quiet", "--batch", "-d", path]
    proc = subprocess.Popen(args, stdout=subprocess.PIPE)
    output = proc.communicate()[0].strip()
    retcode = proc.wait()
    if retcode == 0:
        return output
    else:
        return ''
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.