SSHセッションからログアウトすると権限拒否エラーが発生するのはなぜですか?

SSHセッションからログアウトすると権限拒否エラーが発生するのはなぜですか?

私たちの大学のサーバーでいくつかのテストを実行する必要があります。オフィスのデスクトップからSSHを介してサーバーにアクセスできます。週末に複数のテストを実行するサーバーでPythonスクリプトを起動したいと思います。

週末にはオフィスデスクトップがスタンバイ状態になるため、SSHセッションが終了してもそのプロセスはサーバー上で実行され続ける必要があります。

私は次の質問に記載されているとnohup理解screenしています。tmux

私が今やっていることは:

  • ssh username@server
  • tmux
  • python3 run_my_tests.py ->このスクリプトは一連のsubprocess.check_output異なるスクリプトを実行し、それ自体でいくつかのJavaプロセスを起動します。
  • テストはうまくいきます。
  • Ctrl+B、D を使用してセッションを分離します。
  • これにより、tmux attachtmuxセッションが再び回復されます。まだエラーなくうまくいっています。。数分間確認を続けましたが、テストはうまくいきました。
  • 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関連するすべてのファイルの権限を編集しましたが、何も変更されませんでした。

サーバーはログイン/権限にKerberosを使用し、サーバーはScientific Linux 7.2だと思います。

SSHセッションからログアウトするときに新しいプロセスを作成する権限を削除できますか?私ができることはありますか?私は始めなければなりません一部テスト中、どのくらいの時間とスペースがかかるのかわかりません...


  • バージョンsystemdは219です。
  • ファイルシステムはAFSであり、それを使用してスクリプトがfs listacl <name>使用するディレクトリ/ファイルに対する権限があることを確認できます。

ベストアンサー1

ありがとうマーク・プロニック私は問題を識別し、解決できる。

問題は二人の相互作用だ。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セッションを閉じる

おすすめ記事