Uploaded image for project: 'onedata'
  1. onedata
  2. VFS-6790

Fix opening file to read in share mode by guest

XMLWordPrintable

      • Icon: Improvement Improvement
      • Resolution: Fixed
      • Icon: Major Major
      • 20.02.2
      • None
      • None
      • None
      • Sprint 178
      • 5

        siema,
        do zobrazowania buga naklepałem voś takiego:

        nobody_opens_file_test(Config0) ->
         Config = multi_provider_file_ops_test_base:extend_config(Config0, <<"user2">>, {0, 0, 0, 0}, 0),
         User = <<"user2">>,
         SessionId = fun(Node) -> ?config({session_id, {User, ?GET_DOMAIN(Node)}}, Config) end, [Worker1 | _] = ?config(workers1, Config),
         [Worker2 | _] = ?config(workers_not1, Config), % Provider A:
         SpaceName = <<"space7">>,
         FilePath = <<"/", SpaceName/binary, "/nobody_opens_file_test">>,
         {ok, FileGuid} = ?assertMatch({ok, _} , lfm_proxy:mkdir(Worker1, SessionId(Worker1), FilePath, 8#704)),
         {ok, ShareId} = lfm_proxy:create_share(Worker1, SessionId(Worker1), {guid, FileGuid}, <<"share">>),
         ShareFileGuid = file_id:guid_to_share_guid(FileGuid, ShareId), % Provider B:
         ?assertMatch({ok, #file_attr{}}, lfm_proxy:stat(Worker2, ?ROOT_SESS_ID, {guid, ShareFileGuid}), ?ATTEMPTS), % passes
         %% ?assertMatch({ok, _}, lfm_proxy:open(Worker2, SessionId(Worker2), {guid, FileGuid}, read), ?ATTEMPTS), % fails
         %% ?assertMatch({ok, _}, lfm_proxy:open(Worker2, SessionId(Worker2), {guid, ShareFileGuid}, read), ?ATTEMPTS), % fails
         %% ?assertMatch({ok, _}, lfm_proxy:open(Worker2, ?GUEST_SESS_ID, {guid, ShareFileGuid}, read), ?ATTEMPTS), % passes
         ?assertMatch({ok, _}, lfm_proxy:open(Worker2, SessionId(Worker2), {guid, FileGuid}, read), ?ATTEMPTS),
         ?assertMatch({ok, _}, lfm_proxy:open(Worker2, ?GUEST_SESS_ID, {guid, ShareFileGuid}, read), ?ATTEMPTS), ok.

         
        8:00
        multiprovider_file_ops rzecz jasna xd
         
        8:01
        init jeszcze trzeba dodać mokowanie szerów by działało

        (initializer:mock_share_logic(Config),)

         
        8:02
        nie dodaje tego na swoim branchu - to wymaga obróki i dodania raczej w inne sjucie niż ta (file_ops trwa już ~1h, więc nie dodawajmy tam więcej ;/ )
         
        8:03
        jeśli chodzi o kejzy to wygląda to tak, że jeśli zrobisz zapytanie autoryzowanym użytkownikiem to przechodzi i każde kolejne, również jako nobody, tez będzie przechodzić
         
        8:05
        natomiast robiąc pierwsze zapytanie jako nobody, albo nawet użytkownik korzystający z share guida (na poziomie fslogic_worker jest sprawdzane czy to share guid i jak tak to podmieniany jest user_ctx na ten guest'a), dostajesz ?ENOENT
         

        [E 2020-09-21 05:48:30.636 <0.2339.0>] ASD 1[E 2020-09-21 05:48:30.637 <0.2339.0>] ASD 2[E 2020-09-21 05:48:30.690 <0.2339.0>] Open file error: ENOENT for uuid <<"73dd8d71fabca62bcada893a10da478bchf620">>
         Stacktrace:
         fslogic_worker:handle/1 line 212
         fslogic_worker:handle_request_and_process_response/2 line 303
         fslogic_worker:handle_request_and_process_response_locally/3 line 345
         fslogic_worker:handle_request_locally/3 line 373
         file_req:open_file_with_extended_info_for_read/2 line 650
         file_req:open_file_with_extended_info_insecure/4 line 396
         file_req:open_file_internal/6 line 439
         file_req:create_location/4 line 559
         [E 2020-09-21 05:48:30.691 <0.2339.0>] 

        ASD 1/2 - przed/po sprawdzaniu uprawnień, tzn. sprawdzanie uprawnień przeszło i nie rzuciło żadnego błędu
         
        8:07
        dodałem sobie logi w różnych miejscach na szybko i wywala się w file_req:create_location wywołanie sd_utils:create_deferred (znaczy zwraca ten enoent)

                  plgjakud Jakub Kudzia
                  plgwallko Bartosz Walkowicz
                  Votes:
                  0 Vote for this issue
                  Watchers:
                  1 Start watching this issue

                    Created:
                    Updated:
                    Resolved: