Почему я получаю разрешение на отклонение ошибки при выходе из сеанса SSH?

Мне нужно запустить несколько тестов на сервере в университете. У меня есть ssh доступ к серверу с рабочего стола в моем офисе. Я хочу запустить скрипт python на сервере, который будет запускать несколько тестов в выходные дни.

Рабочий стол в офисе будет работать в режиме ожидания в выходные дни, и поэтому важно, чтобы процесс продолжал работать на сервере, даже когда сеанс SSH прекращается.

Я знаю о nohup и screen и tmux , как описано в таких вопросах, как:

  • Как сохранить процессы после завершения сеанса ssh?
  • Как закрыть терминал, не убив запущенную команду?

Что я делаю сейчас:

  • ssh username@server
  • tmux
  • python3 run_my_tests.py -> этот скрипт выполняет кучу subprocess.check_output другого скрипта, который сам запускает некоторые Java-процессы.
  • Тесты работают нормально.
  • Я использую Ctrl + B, D и я отсоединяю сеанс.
  • При выполнении tmux attach я возвращаю сеанс tmux, который все еще работает нормально, никаких ошибок вообще . Я продолжал проверять это на несколько минут, и тесты прошли нормально.
  • Я закрываю сессию ssh

После этого, если я войду на сервер через SSH, я смогу снова подключиться к запущенному сеансу tmux , однако то, что я вижу, это что-то вроде:

 Traceback (most recent call last): File "run_my_examples.py", line 70, in <module> File "run_my_examples.py", line 62, in run_cmd_aggr File "run_my_examples.py", line 41, in run_cmd File "/usr/lib64/python3.4/subprocess.py", line 537, in call with Popen(*popenargs, **kwargs) as p: File "/usr/lib64/python3.4/subprocess.py", line 858, in __init__ restore_signals, start_new_session) File "/usr/lib64/python3.4/subprocess.py", line 1456, in _execute_child raise child_exception_type(errno_num, err_msg) PermissionError: [Errno 13] Permission denied 

Т.е. процесс, который порождал мои текущие тесты, сразу после окончания сеанса SSH , полностью не смог вызвать другие подпроцессы. У меня есть chmod ed разрешения всех задействованных файлов и ничего не меняется.

Я считаю, что серверы используют Kerberos для входа / разрешения, а сервер – Scientific Linux 7.2.

Возможно ли, что разрешения на создание новых процессов будут удалены при выходе из сеансов ssh? Что-то я могу с этим поделать? Я должен запустить несколько тестов, не имея представления о том, сколько времени или пространства они возьмут …


  • Версия systemd – 219
  • Файловая система AFS, используя fs listacl <name> я могу подтвердить, что у меня есть разрешения на каталоги / файлы, которые используются скриптом.

2 Solutions collect form web for “Почему я получаю разрешение на отклонение ошибки при выходе из сеанса SSH?”

Благодаря Марку Плотнику я смог определить и исправить проблему.

Проблема заключается в взаимодействии между файловой системой AFS, используемой сервером, и Kerberos, обрабатывающей аутентификацию. Тот же вопрос был поднят в этом вопросе о SO .

В основном, что происходит, когда я ssh на сервере, Kerberos дает токен аутентификации для сеанса. Этот токен используется также для доступа к файловой системе AFS. При закрытии сеанса SSH этот токен будет уничтожен, а запущенные процессы начнут получать разрешение, отклоненные при попытке доступа к файлам в AFS.

Чтобы исправить это, нужно запустить новое окно внутри screen / tmux и запустить команду:

 kinit && aklog 

После этого вы можете отсоединиться от screen / tmux и безопасно закрыть сеанс ssh.

Приведенные выше команды создают новые токены Kerberos и связывают их с сеансом screen / tmux , таким образом, когда соединение ssh закрывается, первоначальные токены отменяются, но поскольку подпроцессы теперь используют созданные вами, они не страдают от разрешенных отказов.


Обобщить:

  • ssh username@server
  • tmux
  • Запустите процесс, необходимый для продолжения работы
  • Создайте новое окно с помощью Ctrl + B, C
  • kinit && aklog
  • Отсоедините от сеанса с помощью Ctrl + B, D
  • Закрыть сеанс ssh

Такие ошибки, вероятно, связаны с разрешениями файловой системы. Можете ли вы взглянуть на события syslog на стороне сервера?

Возможно, вам нужно оставаться в вашей среде. Взгляните сюда, чтобы узнать больше о разрешениях и проблемах с файлами Linux, это может помочь.

  • Почему лидер Tmux Space также делает 2 лидером?
  • Как собрать Tmux из исходного кода без рут-доступа с помощью встроенного в систему libevent 2.1?
  • Терминальные 256 цветов не работают через Tmux
  • Как заставить клавиши F1-F4 нормально вести себя в tmux
  • tmux.conf: префикс зависит от того, является ли сеанс удаленным
  • Как изменить определенные привязки клавиш в Tmux?
  • копия tmux xclip больше не работает
  • Максимизация сеанса tmux показывает странные последовательности ANSI
  • ssh на сервер, у которого есть сломанная установка bash
  • Как создать ярлык для изменения размеров панелей в окне tmux?
  • Как скопировать из / в буфер обмена tmux с оболочками?
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.