Це стосується автентифікації.
Почну з деяких понять про квитки та жетони та про те, як система аутентифікації 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безшумно, але повертає свій статус виходу. Ми перевіряємо статус виходу на наявність облікових даних і вимагаємо нових, якщо вони не існують або закінчилися.