Skip to Content

IT nieuczesane.
category

Category: tips’n’tricks

współdzielenie OneDrive – ciekawostki

OneDrive Sharing

na początek oczywiste oczywistości:

  • OneDrive to de facto SharePoint. główne ustawienia współdzielenia [Sharing] dziedziczy z globalnych ustawień SP
  • od jakiegoś czasu dostępny jest OneDrive Admin Center z poziomu Office365. z jego poziomu można pozornie ustawić zabezpieczenie współdzielenia na poziomie niższym, niż jest zdefiniowany w SharePoint. ale nie można [co zresztą jest opisane małym druczkiem na dole].

  • od niedawna rozbudowany został klient OneDrive – w końcu można nadawać uprawnienia ‚bezpośrednio’ z Exploratora. co mnie pozytywnie zaskoczyło – okienko uprawnień jest renderowane przez OneDrive.exe a nie, tak jak się spodziewałem, iexplore.exe/edge .

Jak powstaje ACE dla osoby z zewnątrz

i tu się zaczyna robić ciekawie. standardowo, do czego przyzwyczaiły nas systemy operacyjne, flow jest taki:

  • użytkownik wybiera plik i nadaje uprawnienia
  • tworzony jest ACE – Access Control Entry – który staje się nieodłączną częścią pliq… w dużym uogólnieniu.
  • osoba próbuje się dostać
    • uwierzytelnia się
    • token uwierzytelniony porównywany jest z ACL [Access Control List] w poszukiwaniu ACE dla danego usera – rodzaj filtra
  • osoba dostaje dostęp lub nie.

wydaje się tak oczywiste… a jednak dla pliq współdzielonego z osobą z zewnątrz w OneDrive, jest inaczej. czy zastanawiałeś się po co jest poniższa opcja? skoro można uzyskać dostęp przez osobę inną niż zaproszona, to znaczy, że ACE nie może istnieć w momencie dostępu. zakładając, że wyłączone są linki anonimowe, w dużym uogólnieniu wygląda to tak:

  • użytkownik wybiera plik, uprawnienia edit/view i adres osoby z zewnątrz.
  • tworzony jest *link*, URL, zawierający token dostępu. ten link wysyłany jest mailem.
  • osoba, która otrzymała link otwiera go. zakładając, że wymuszone jest uwierzytelnienie, zostanie przekierowana na stronę logowania.
  • po pozytywnym uwierzytelnieniu, na podstawie linka generowane jest ACE, które dopiero teraz dopisywane jest do pliq
  • tworzone jest również konto [jeśli nie było wcześniej] „username_server.name#EXT#@company.onmicrosoft.com” w AAD

czemu tak i jakie to ma konsekwencje

opisywane zachowanie będzie zależne od kilq ustawień bezpieczeństwa na SP – czy włączone są linki anonimowe, oraz czy mogą być otwierane przez osoby inne, niż te, do których się je oryginalnie wysłało. współdzielenie linkiem jest znane od lat, i dość oczywiste, dla osób korzystających z usług chmurowych. po prostu w rozproszonym świecie chmury, gdzie nie ma centralnej bazy użytkowników, token jest przekazywany wraz z linkiem – w dużym skrócie posiadanie linka oznacza posiadanie dostępu. stąd powstały mechanizmy rozszerzające to rozwiązanie – np. o wymaganie uwierzytelnienia. czemu zatem link wysłany przez jedną osobę, standardowo może być otworzony przez inną? ta opcja została stworzona głównie z tego powodu, że ludzie korzystają z masy adresów, i mogą mieć konto MS Account założone z innym adresem niż my znamy – np. wysyłamy do kogoś na x@gmail.com a ktoś ma konto MS Account jako x@outlook.com. dzięki temu osoba nie jest zmuszona zakładać kolejnego konta, co było istotne zwłaszcza jakiś czas temu, kiedy nie istniał uproszony proces zakładania konta, i było to bardzo upierdliwe. ale ze względu na bezpieczeństwo, nie włączenie tej opcji, jest dość niepokojącym scenariuszem i sugerowałbym jednak, aby wymuszać weryfikację odbiorcy. w takim wypadq, nawet jeśli przekaże się linka innej osobie [lub zostanie wykradziony!], nie zostanie on obsłużony. można się przyczepić, że komunikat błędu pokazuje zdekodowany adres email osoby, która oryginalnie była w tokenie, ale nie jest to już tak wielki problem.  załóżmy, że opcja jest na ‚default’, czyli może być otwarty przez inną osobę. co się stanie, jeśli roześlę link do stu osób? czy wszystkie będą miały dostęp? NIE. link zawiera ‚token jednorazowego dostępu’. pierwsza osoba się dostanie i dla niej utworzony zostanie ACE, pozostałe osoby dostaną acc denied.

ciekawostki (bugs?)

nie może obyć się bez zagadek w-files. trafiłem na dwie. w porywach do trzech q:

  1. jeśli jakiś user ma wpisany alternate email z jakimś adresem zewnętrznym – np. x@gmail.com, i chcemy udostępnić plik tej osoby na tenże adres zewnętrzny… to się nie uda. AAD rozpoznaje użytkownika jako wewnętrznego i co prawda wysyła linka [zależnie od tego z jakiego interfejsu skorzystamy zachowanie może być różne], ale nie ma szansy zalogować się na kontem x@gmail.com .
  2. jak sądzicie, czy usunięcie konta #EXT# z AAD spowoduje, że osoba straci dostęp do pliq? scenariusz:
  • administrator doszedł do wniosq, że posprząta trochę, i *dla bezpieczeństwa* usunie konta #EXT# żeby zabrać dostępy.

no to się zdziwi, ponieważ usunięcie konta, nie powoduje usunięcia ACE – te systemy są rozdzielne, i nie ma ‚centralnego repozytorium dostępów’. a ponieważ centrum uwierzytelnienia jest również rozłączne z naszym systemem, user zostanie poprawnie uwierzytelniony [przez Microsoft Account a nie przez nasz tenant AAD], ACE istnieje – ergo dostęp będzie. nie wierzycie – spróbujcie, podzielcie się wrażeniami. właśnie ta część pracy – odpowiedź na pytanie ‚kto ma gdzie dostęp’ – jest nadal niełatwym zadaniem. 3. PS. czy zwróciliście uwagę, że w OneDrive for Business jest ‚shared with me‚ a w OneDrive personal jest ‚Shared by me‚? i żadne ze środowisk nie udostępnia mechanizmu dla pełnego rozeznania się co komu i dla nas….  

OneDrive for Business OneDrive personal

eN.

wyłączenie odtwarzania video

doprowadzało mnie to czerwoności… czyta się jakiś artykuł np. techniczny, a tu wyskaqje filmik o d*pie maryny. a w FF wyłącza się bardzo łatwo:

about:config

media.autoplay.enabled:$false

eN.

Teams i grupy o365

taka drobna ciekawostka… większość aplikacji o365 opiera się na ‚Office 365 groups‚. ciekawe jest to, że zależnie od aplikacji to nie zawsze jest dokładnie ta sama grupa, a raczej zawartość jest synchronizowana do kopii grupy dla aplikacji. podobnie jak grupa w AD onprem jest synchronizowana do grupy AAD w o365.

efekt jest dość zaskaqjący. jeśli manipuluje się przynależnością do Teamu w Teamsach, z poziomu aplikacji, jako właściciel danego Teamu/grupy, to zamiany są odzwierciedlane natychmiast. ale jeśli dokonuje się manipulacji na grupie od strony office 365 [np. dodanie/usunięcie członka], jako administrator, to zmiany w Teams zostaną zsynchronizowane… w ciągu 24h [SIC!]. jest to trochę dziwne. np. w tym samym czasie SharePoint widział zmianę od razu.

dwa wnioski:

  • lepiej unikać zarządzania administracyjnego – lepiej zostawić to właścicielom Teamów
  • trzeba pamiętać, że ‚sowy nie są tym czym się wydają’

eN.

unikaty i duplikaty

Duplikaty

łatwo jest przefiltrować listę tak, aby mieć tylko unikalne elementy – jest zarówno commandlet ‚get-unique’ oraz parametr ‚-unique’ przy select-object, ale jak wyłuskać duplikaty?

sposobów jest oczywiście wiele a ten, który mi się podoba to:

lub w hiperpoprawnym zapisie:

plik:

a teraz sprawdźmy duplikaty:

można jeszcze upiększyć output, pozbywając się śmieci:

Unikaty

powracając jeszcze do unikatów… wydawałoby się, że skoro jest oddzielne polecenie – get-unique, to powinno mieć większe możliwości i być bardziej elastyczne niż jakiś tam parametr do innego polecenia.

o dziwo jest odwrotnie. osobiście traktuję get-unique jako ciekawostkę i nie miałem scenariusza, w którym bym go użył. a to dla tego iż [msdn]:

The Get-Unique cmdlet compares each item in a sorted list to the next item, eliminates duplicates, and returns only one instance of each item. The list must be sorted for the cmdlet to work properly.

Get-Unique is case-sensitive. As a result, strings that differ only in character casing are considered to be unique.

eN.

„nie można zainstalować drukarki – brak dostępu”

repairtiaaa… dawno nie było takiego wpisu q: czasem trafiają do mnie zadania czysto administracyjne. taki lajf. ostatnio trafił do mnie taki właśnie kejs jak w tytule – przy próbie dodania drukarki sieciowej na Windows 1o, wyskaqje takiż komunikat.. albo podobny (; minęło trochę czasu od kiedy zajmowałem się politykami GPO, ale finalnie i tak to nie one były przyczyną problemu. przeważnie chodzi o fakt, że użytkownik nie ma możliwości instalacji sterowników, i można to rozwiązać konfigurując dwa ustawienia w GPO: link tutaj

  • Computer Configuration\Policies\Administrative Templates\System\Driver Installation\Allow non-administrators to install drivers for these devices setup classes
    • Enabled
    • Device class GUID of printers: {4d36e979-e325-11ce-bfc1-08002be10318}
  • Computer Configuration/Policies/Administrative Templates/Printers/Point and Print Restrictions
    • Enabled
    • Security Prompts: When Installing Drivers for a new connection = Do not show warning or elevation prompt

ale… okazało się, że to nie pomogło. rozwiązaniem było ustawienie uprawnienia ‚view server’ na poziomie Print Servera:

printerpermission01printerpermission02

eN.

mała-wielka zmiana. MS16-072

chaoswyszła ostatnio poprawka, która zabezpiecza przed pewnymi scenariuszami MitM attacks. mniejsza-o-większość, szczegóły można doczytać na technecie, a ja chciałem się sqpić nad pewną drobną konsekwencją, która może sporo namieszać.

po zainstalowaniu tej poprawki, przestają działać te polisy, które filtrowane są na podstawie uprawnień dla poszczególnych obiektów, i nie posiadają dodanego ‚authenticated users: Read’ . w efekcie po wylistowaniu gpresult, pojawia się komunikat: ‚not applied (unknown)’ .

oczywiście – wedle ‚best practices’ nie powinno się nigdy zdejmować tego uprawnienia, a tylko wyrzucać ‚apply’, niemniej nigdy nie stanowiło to problemu.

widziałem już różne dziwne metody stosowania GPO u klientów – tak dziwne, że patrzyłem i nie wierzyłem, że można coś tak dziwnego wymyślić. efekt tego, że jakiś admin-samouk zaczął coś w pokrętny sposób wdrażać, a potem trzeba to było kontynuować, bo oczywiście posprzątanie to ryzyko i chaos. w takim środowisq, ta mała zmiana, będzie miała olbrzymi wpływ. dotknęło to również środowiska jednego z obecnych klientów, gdzie ktoś dzięki dziwnemu zestawowi uprawnień wdrożył polisy terminalowe w zupełnie odwrotny sposób – zamiast stworzyć GPO na komputer z ‚loopback processing’, zrobione były polisy na użytkowników, z wyciętymi uprawnieniami dla komputerów. nadal nie jestem pewien, jakim cudem to w ogóle działało… przyszła poprawka i wymusiła porządki.

to tak jakby ktoś miał wątpliwości, czemu warto stosować proste, prawidłowe metody, zamiast dziwolągów, bazujących na nieudokumentowanych testach – po prostu z-dnia-na-dzień mogą przestać działać.

eN.

OneDrive for business – sync

TVtaki mały trick… ponieważ po raz kolejny rozwaliła się lokalna biblioteka, i ponieważ po raz kolejny straciłem czas i nerwy, a do normalnej wersji zostało jeszcze ok. pół roq, mały tips, który może oszczędzi komuś zgrzytów:

  • jeśli otworzy się bibliotekę z Edge albo FF to zostanie się przekierowanym na stronę z downloadem całego office2o13 – zainstaluje się 1GB po to, żeby był klient OneDrive2o13, i zaczyna tak bruździć, że pozostaje tylko usunięcie profilu użytkownika.
  • ale jak otworzy się z IE, to okazuje się, że ten klient z office16 zawiera odpowiedniego klienta i jednak potrafi synchronizować, i wtedy na jakiś czas znów można korzystać…

… aż znów z niewiadomych powodów zacznie się kaszanić. średnio biblioteka współdzielona wytrzymuje mi ok. miesiąca i zaczyna się rozjeżdżać /:

kilka rzeczy, których robić nie wolno, bo generują problemy [nie zawsze, ale lepiej unikać], dla bibliotek z wymuszeniem check-in:

  • zapisywać plik z Internetu/załącznik z maila. chodzi o ADS, który bloqje synchronizację
  • nadpisać plik. trzeba usunąć, wymusić sync i nagrać
  • korzystać z aplikacji, które robią lock na plikach

eN.

CSV, SSV… ? ULSLSSV!

Windows_PowerShell_iconwpis z cyklu ‚człowiek uczy się całe życie’ (; od zawsze pluję się, że durny Excel pliki CSV – Comma Separated Value – zapisuje/odczytuje jako Semicolon Separated Value z niewyjaśnionych przyczyn.

okazuje się, że sprawa jest bardziej skomplikowana i to nie jest ani CSV, ani SSV tylko ULSLSSV – czyli User Language Specyfic List Separator Separated Value (;

listSeparator

o ile dla US „List separator” to przecinek, więc dla Amerykanów CSV to CSV o tyle dla Polaków „List separator” to średnik… jest to dodatkowe utrudnienie na które trzeba uważać w skryptach bo mogą uruchamiać je osoby o różnych ustawieniach regionanych. o ile głupotą jest że CSV to SSV kod jest prosty:

a prawidłowo-bezpiecznie, w skryptach trzeba uważać i zamienić to na:

eN.

port ping

repairjak szybko sprawdzić czy dostępna jest już konkretna usługa/aplikacja na hoście? najlepiej sprawdzić czy port jest otwarty. można użyć telnetu ale jeśli czekamy na usługę i chcemy wykonywać testy co jakiś czas, aż do sqtq – będzie to bardzo denerwujące, ponieważ telnet jest bardzo siermiężny.

lepiej jest pingować port – co można uzyskać np, przy pomocy psping z sysinternalsowych narzędzi.

eN.

dopełnienie zerami

Windows_PowerShell_iconprzykładowy scenariusz: mamy notację nazewniczą serwerów ze stałym prefixem ‚server’ oraz jego kolejny numer – liczba z dopełnieniem zerami do trzech znaków. np. server001, server002[…],server011[…],server12o[…]

problem: jak skryptem łatwo wygenerować takie nazwy?

rozwiązanie: i na to oczywiście jest skrót/automat w PS (: potrafi to funkcja ‚toString’ – wystarczy jako parametr podać ilość zer odpowiadająca dopełnieniu.

eN.