Це стосується автентифікації.
Почну з деяких понять про квитки та жетони та про те, як система аутентифікації Kerberos та AFS використовує їх. Зрештою, відповідь на моє запитання буде зрозумілою, мені не дозволяється писати у файл просто тому, що мій маркер AFS був видалений під час виходу. Однак, для моєї проблеми рішенням було включити в сценарій matlab кілька рядків, які визначають, чи існує маркер чи не створює його, якщо він не є. Як саме це було зроблено, точно завершується відповідь.
Аутентифікація
Надання розподіленої файлової системи, доступної форми в будь-якому місці, передбачає надійну систему безпеки. Ось чому AFS має потужну систему аутентифікації, інтегровану із системою аутентифікації Kerberos.
Аутентифікація в AFS вирішується за допомогою маркера. Токени надають користувачам доступ до даних протягом їхнього життєвого періоду. У багатьох випадках обробка токенів проходить безшовно, не вимагаючи втручання користувача. Однак користувач може в будь-який момент перелічити маркери, видані в його імені, використовуючиtokens
username@machine00 ~ $ tokens
Tokens held by the Cache Manager:
User's (AFS ID xxxxx) tokens for afs@your.system.domain [Expires Mar 20 05:10]
--End of list--
Токени AFS отримуються з ідентифікаційного квитка Kerberos. Подібно до жетонів Kerberos квитки також ідентифікують користувача. Під час використання системи автоматизації Kerberos користувачеві видається KDC (Центр розподілу ключів) початковий квиток, який називається путівкою. Цей перший квиток однозначно ідентифікує користувача та дозволяє йому отримати конкретні квитки, необхідні для подальших послуг, як токени AFS. Насправді, ви можете безпосередньо використати квиток на Kerberos для послуги AFS, що має маркер ідентифікації AFS.
У більшості випадків квитанція про надання Керберосу автоматично отримується під час входу користувача. Те саме відбувається з початковим маркером AFS. Як і жетони, обробка квитків у Kerberos у більшості випадків невидима для користувача, але ви можете перелічити видані квитки, використовуючиklist
username@machine00 ~ $ klist
Credentials cache: FILE:/tmp/krb5cc_V16088
Principal: username@KERBEROS.REALM.DOMAIN
Issued Expires Principal
Mar 19 19:10:11 Mar 20 05:10:11 krbtgt/KERBEROS.REALM.DOMAIN@KERBEROS.REALM.DOMAIN
Mar 19 19:10:11 Mar 20 05:10:11 afs/your.system.domain@KERBEROS.REALM.DOMAIN
username@machine00 ~ $
кеш облікових даних - це розташування файлу, де можна знайти квитки. Principal - це ідентифікатор користувача, який в основному є результатом поєднання імені користувача та області домену Kerberos. Зауважте, що область Kerberos, як правило, задається великими літерами, і вона відрізняється великими літерами. Слідом ми маємо список виданих квитків із відповідними виданими та термінами придатності. У цьому випадку перший квиток ( krtbg
) відповідає квитанції про надання квитка на царині, KERBEROS.REALM.DOMAIN
а другий відповідає токену AFS у комірці afs your.system.domain
(який зазвичай має те саме ім'я, що і домен, у якому його можна знайти). Інші квитки на Kerberos можуть відображатися в списку, якщо вони були запитані.
Поновлення токенів
Коли термін дії AFS закінчується, доступ до акаунта AFS більше не можливий. Симптоми того, що така подія, що сталася, варіюються від ОС до ОС, однак в Unix / Linux зазвичай отримують повідомлення про відмову в дозволі, намагаючись отримати доступ до своїх файлів:
username@machine00 ~ $ ls
ls: .: Permission denied
Коли термін дії терміну закінчиться, його потрібно відновити. Простий спосіб зробити це - знову вийти з системи та увійти, оскільки, у більшості випадків, оновлення токенів відбувається автоматично під час входу. Але виявляється, що іноді вихід із системи - це не варіант, особливо якщо ви працюєте з тим, з чого не хочете виходити.
Альтернативне рішення для поновлення квитка використовується kinit
і aklog
в послідовності. Перша з цих команд ( kinit
), для якої потрібен ваш пароль, дозволяє повторно пройти автентифікацію користувача та поновити квиток. Далі aklog
команда дозволяє отримати маркер AFS з квитка Kerberos. Зверніть увагу, що kinit
намагається отримати квиток для головного та царини за замовчуванням. Якщо вони не визначені, або якщо користувач використовує інше ім’я користувача під час запиту на отримання квитка, його kinit
слід використовувати kinit <principal>@<realm>
, наприклад:
username@machine00 ~ $ kinit username@KERBEROS.REALM.DOMAIN
username@KERBEROS.REALM.DOMAIN's Password:
username@machine00 ~ $
Протилежне aklog
тому unlog
, що видаляє маркер AFS. Відповідно, kdestroy
видаляє файл квитків, видаляючи всі квитки Kerberos.
Як це врятувало день і допомогло мені полюбити своїх друзів та родину
Як було сказано на початку, знання про ці поняття допомогло мені краще зрозуміти, що відбувається з моїм сеансом з математики. Після виходу мого маркера AFS вже не було, і мої запущені процеси вже не мали дозволу писати в мій afs том. Оскільки на даний момент мене цікавить лише гарантування того, що мій сценарій matlab продовжує працювати з читанням і записом файлів навіть після того, як я вийшов, я обережно включив тест на маркер AFS, який був попереднім до будь-якого доступу до тома AFS
ticket_status = unix('klist -s');
if ticket_status ~= 0,
unix 'kinit username@KERBEROS.REALM.DOMAIN <<< "password"';
unix aklog
end
Як я вже сказав, це входить у сценарій matlab, і я розмістив його перед будь-якими командами save
або load
командами matlab. Код використовує команду matlab unix
для запуску своїх аргументів на оболонці Unix та повернення результатів. Команда Unix klist -s
працює klist
безшумно, але повертає свій статус виходу. Ми перевіряємо статус виходу на наявність облікових даних і вимагаємо нових, якщо вони не існують або закінчилися.