Общая сетевая папка NFS+SAMBA с правами для всех

Цель: расшарить директорию через NFS и CIFS так, чтобы для обоих протоколов был общий доступ и файлы, залитые через один протокол, были доступны на чтение и запись через второй.

Метод, до которого дошел я (возможно не единственный), реализуется через дополнительного пользователя на сервере, с которого шарится директория. В моем случае это пользователь «user» с UID 1000 (входит в одноименную группу с GID 1000).

Файл /etc/exports выглядит так

/etc/exports
 
  1. "/share/Public" *(rw,nohide,async,no_subtree_check,crossmnt,all_squash,anonuid=1000,anongid=1000)

ключевыми параметрами являются:

  1. all_squash — опция говорит что все подключения будут считаться анонимными
  2. anonuid=1000 — определяет UID пользователя от имени которого будет осуществляться доступ для анонимных подключений
  3. anongid=1000 — аналогично определяет GID

Таким образом все файлы и папки, создаваемые на сервере через NFS будут иметь владельца «user»

 
 
  1. ls -la /share/Public/test_dir/
 
 
  1. total 12
  2. drwxr-xr-x  3 user user 4096 Jan 14 16:18  .
  3. drwxrwxrwx 14 user user 4096 Jan 14 16:18  ..
  4. drwxr-xr-x  2 user user 4096 Jan 14 16:18 'nfs dir'
  5. -rw-r--r--  1 user user    0 Jun 19  2020 'nfs file.txt'

Теперь можно переходить к настройке самбы. Приведу весь свой конфиг /etc/samba/smb.conf

/etc/samba/smb.conf
 
  1. [global]
  2.     workgroup = WORKGROUP
  3.     dns proxy = no
  4.     log file = /var/log/samba/log.%m
  5.     max log size = 200
  6.     panic action = /usr/share/samba/panic-action %d
  7.     server role = standalone server
  8.     passdb backend = tdbsam
  9.     obey pam restrictions = yes
  10.     unix password sync = yes
  11.     passwd program = /usr/bin/passwd %u
  12.     passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
  13.     pam password change = yes
  14.     map to guest = bad user
  15.     security = user
  16.     usershare allow guests = yes
  17.     acl allow execute always = true
  18.     allow insecure wide links = yes
  19.     # WinXP/Android X-Plore compatibility:
  20.     ntlm auth = yes
  21.     server min protocol = NT1
  22. [Public]
  23.     path = /share/Public
  24.     mangled names = no
  25.     writeable = yes
  26.     follow symlinks = yes
  27.     wide links = yes
  28.     browsable = yes
  29.     guest ok = yes
  30.     guest only = yes
  31.     force user = user
  32.     force group = user
  33.     create mask = 666
  34.     directory mask = 777
  35.     #recycle
  36.     vfs objects = recycle
  37.     recycle:repository = /share/Public/.Trash-1000/files/%U
  38.     recycle:keeptree = Yes
  39.     recycle:versions = Yes
  40.     recycle:touch = Yes

Здесь ключевыми являются опции директории:

  1. guest ok = yes — пускать юзера без аутентификации
  2. guest only = yes — пускать только анонимусов
  3. force user = user — работа с файлами ведется от имени указанного юзера «user» (аналог nfs-ного «anonuid=1000»)
  4. force group = user — аналогично для группы (аналог nfs-ного «anongid=1000»)

Корзина

Отдельно прокомментирую вот это кусок

 
 
  1. #recycle
  2.     vfs objects = recycle
  3.     recycle:repository = /share/Public/.Trash-1000/files/%U
  4.     recycle:keeptree = Yes
  5.     recycle:versions = Yes
  6.     recycle:touch = Yes

Дело в том, что при удалении файлов из директории, смонтированной через NFS, скорее всего (это зависит от файлового менеджера)  в точке монтирования будет создана директория корзины «.Trash-1000». В то же время клиенты Windows для сетевых путей корзину не используют, но именно для этого существуют опции самбы, которые включают сетевую корзину и позволяют указать — в какой именно директории хранить удаляемые файлы. В моем случае опция «recycle:repository» указывает правило хранения, которое соответствует правилам удалению в корзину в линуксе. То есть, при такой настройке, файлы что удаленные в линуксе через NFS, что в виндусе через SMB — попадут в один каталог. В винде, конечно, они не появятся в виндовой «корзине», но как минимум их можно будет достать из папки «.Trash-1000».

Однако при этом возникает парадоксальная ситуация, что в винде данную «корзину» очистить не получится, так как она лежит в той же шаре. То есть удаляемые файлы будут валиться в нее же. Воркэраундом является создание дополнительной отдельной шары под эту директорию, чтобы через нее удалять ненужные файлы.

/etc/samba/smb.conf
 
  1. [Trash]
  2.     path = /share/Public/.Trash-1000
  3.     mangled names = no
  4.     writeable = yes
  5.     follow symlinks = yes
  6.     wide links = yes
  7.     browsable = yes
  8.     guest ok = yes
  9.     guest only = yes
  10.     force user = user
  11.     force group = user
  12.     create mask = 666
  13.     directory mask = 777

Muscum человека-паука

Удивительный человек-паук удивителен. В том числе прекрасными английскими словами, которые просочились в мультсериал 94го года от японских аутсорсеров.

Досье на Мистерио

Музей… ну то есть…

Неловко получилось. Болт-ТВ на этом фоне выглядит уже скорее просто забавно )

 

Коды счетчиков Perfmon Windows (для использования с Zabbix и не только)

Список кодов монитора производительности, для использования с заббиксом наподобие

Average disk read queue length — perf_counter[\234(_Total)\1402]

Windows Server 2016 Perfmon Counters and Codes

На введенском озере

На днях открыл для себя такую страшную штуку, как дикий туризм!

Собирался — очень долго. Еще в прошлом году закупился всякими необходимыми штуками, но вот так вот бросить уютную квартиру и уехать в неизвестность — собраться не мог очень и очень долго. Казалось, что огромны риски потратить время впустую, приехать куда-то, где будет просто ужасно, не получить никакого удовольствия.

Однако в какой-то момент на мозг стало капать — ну что я не смогу что ли? Да пусть и плохо будет, не развалюсь я от одной ночи в неизвестности! Такая мысль дала нужный пинок в правильном направлении, и заставила собрать вещи и погрузить их на мотик.

К слову, вещей оказалось не так много (это отдельное счастье — ненавижу долгие сборы, но и чувство неподготовленности не дало бы оправиться совсем уж налегке): палатка, коврик надувной внутрипалаточный, коврик обычный полянный, повербанк, 3 бутылки воды (всего 4л), газовая горелка с баллоном, да кастрюлька с ложкой. Отдельным пунктом пошел фотик, так как я подумал, что если уж ехать на озеро, которое я выбирал несколько недель изо всех не сильно далеких от меня озер, то обязательно надо попробовать пофоткать ночью. Во-первых я давно не фоткал ночью в принципе (фотки луны не в счет — очень хотелось пейзажик со звездами забабахать), а во-вторых — ну вдруг мне ТАААК не понравится, думал я, что повторять не захочется, а так хоть фотки может быть будут! Так что в дополнение к вещам-для-жизни пошел и этот ценный груз, включая штатив. К счастью все легко погрузилось на мотик.

Озеро находилось в паре часов езды по умеренным пробкам дня-вечера субботы. Так что добрался быстро и, к счастью, обнаружил, что места это вполне обжитые, но в тоже время людей мало. Надо сказать, что по самому месту не проезжали машины гугла или яндекса, поэтому все что я смог рассмотреть заранее — кем-то сделанную панорамную фотку с башни островного храма, что на этом озере стоит. И единственный вывод, какой можно было сделать с той панорамы: ну вроде бы не болото. Так что добравшись, я был очень рад, что реальность превзошла ожидания. Хороший берег, спуски к воде, лавочки и места для костра. Забурившись в район третьего-четвертого от края места, с которого открывался хороший вид, я стал раскладываться.

Опять же было много страхов: что если я не разберу/соберу палатку, что если мне не хватит воды, что если горелка не заработает. Но все это уже были мелкие страхи, так как палатку я проверял и знал что ничего сложного там нет, а все возможные проблемы с едой решились бы при помощи магазинчика в местном поселке. Так что это был скорее нервяк, добавляющий приятного адреналина, чем серьезно пугающий =)

Еще одно опасение касалось купания в озере. Фиг знает — вдруг вода отравлена! Поставив палатку, я плюнул и полез в воду — после поездки было довольно жарко, а в воде кто-то уже купался. «А если они с крыши прыгнут — ты тоже прыгнешь?» Я прыгнул ))

Негативный опыт, который, конечно, тоже был обретен, был сконвентирован в знание: надо брать с собой дополнительный комплект белья. Приехал я изрядно мокрый, плавок не брал никаких, так что футболка, носки и трусы оказались в итоге сырыми, и на влажном приозерном воздухе сохнуть просто-напросто отказались. Возможно это не было бы проблемой, если бы я приехал днем, когда еще жарило солнце, но вечером это уже не работало. Но после купания я об этом еще не знал, так что запалил горелку и наварил каши. Так много, что и на утро хватило )) Готовить, даже такую примитивную еду, на природе — кайф!

овсянка, сэр!

Пообсыхав, насколько это возможно, я приготовил большой фотик к ночной съемке и полез в палатку — стало постепенно холодать, пришло время досматривать 1й сезон Мандалорца =). К слову, на вечер мне, в принципе, хватило моего повербанка, но в будущем надо брать пару, чтобы не думать о том, что электричества впритык (хотя в качестве запасного варианта у меня был мотик с USB, но в палатку его взять сложно =)

вид из палатки

Концептуальная ошибка номер два: я не взял с собой одеялко. Опять же подумал, что места на мотике не так много, ну чего я не переживу одну ночь что ли? Пережил, но вкупе с мокрой одеждой (носки я даже снял в итоге, повесив внутри палатки сохнуть хоть как) отсутствие одеяла усилило промерзание, хотя температура воздуха вряд ли падала ниже 18-20 градусов. Вероятно сказалась сырость. Также я тупанул и довольно долго держал палатку закрытой только на сетку, которая спасала от комаров (которых вечером, кстати, почти и не было), но замечательно выпускала все тепло. Закройся я пораньше, думаю к ночи я бы нормально «надышал», так как в конечном счете я таки смог согреться настолько, чтобы заснуть. Но перед этим пришлось выползти и с неудовольствием заметить тучку, которая хоть не сделала дождя, но звезды заслонила. Так что звездной ночной фотки не вышло, вышла просто ночная =)

К счастью В ЦЕЛОМ я уже был скорее доволен поездкой, чем наоборот, так что тучка не сильно испортила мне настроение. Может еще доведется повторить попытку =) Зато на утро, которое для меня настало около 4х часов (поспал я в итоге часа 3 от силы), я стал свидетелем годного тумана, фотка с которым открывает этот пост. Вот еще видосик =)

Навернув по быстрому каши, я начал собираться. Получилось довольно быстро свернуть и запихать в чехол палатку с ковриком, не забыв при этом никаких запчастей. Разве что в САМОЙ палатке! Защита на спину, на которой я спал, оказалась в заложниках этого здоровенного многослойного бесформенного «пододеяльника» (стирающие люди меня поймут)! Почему же палатка не сворачивается?.. Черт!.. Да где же у нее теперь «вход»?!.. К счастью спасти защиту удалось, и даже успелось сфоткать на телефон нежный рассвет, поймав вид буквально за минуту-две до появления яркого красного солнца.

Погрузив все обратно на мотик, я отправился обратно и уже часа через полтора, пролетев по почти пустым дорогам, был дома.

В общем, свой первый дичайший акт туризма я могу смело признать не таким уж и диким — все оказалось не так страшно, как рисовало воображение из москвы. Единение с природой почувствовано, оргвыводы сделаны, компактное одеяло уже заказано и обязательно будет протестировано. Трусы, носки и прочие повербанки — будут захвачены в нужных количествах. А людям, своим примером сподвигшим мою ленивую жопу отправиться в такое приключение, еще не раз икнется моей благодарностью за вдохновение и такой интересный опыт =)

лежишь, такой, на коврике, перед тобой вода, и ветер в деревьях шумит — благодать =)

ЗЫ: А самое страшное в приключении — кот. Который начал топать возле палатки ночью, заставляя думать о не менее чем забредшем в гости медведе-мутанте, готовом НАПАСТЬ! Пришлось выглянуть и убедиться в совершенной мирности гостя )

Авангард протух

Уже лет 15 пользовался услугами банка Авангард. Немного архаичный, но вполне беспроблемный банк был.

Пару дней назад, совершенно внезапно они блокируют мне карту и  доступ в личный кабинет. Звоню в саппорт: да, говорят, действительно заблокировано — идите в офис, пишите заявление на разблокировку. Бред (а если я далеко от офиса, что делать?), но иду. Объясняю ситуацию работнице офиса, пишу с ее слов заявление в свободной форме, что хочу разблокировать доступ в ЛК. Иду домой, по пути звонят — пишите еще заявление на разблокировку карты. Уточняют, что причина блокировки — компрометация данных, без подробностей. Ладно, возвращаюсь в офис, пишу еще 3 заявления: еще одно на разблокировку ЛК по номеру карты (уже не в свободной форме), на разблокировку карты, и еще одно на перевыпуск карты — на случай если просто разблокировать старую они откажутся (что логично, если карта скомпрометирована).

Дальше интереснее. Вчера они звонят и говорят что заявка на перевыпуск карты принята, ждите когда сделаем ее. Сегодня звонят и сообщают, что банк принял решение о невозможности продолжения сотрудничества со мной (но почему — они не скажут), и мне рекомендуется пойти в офис и написать заявление о расторжении договора. Просто ебануться. То есть иди нахуй, дорогой товарищ, но почему туда — это большой наш секрет.

Что могу сказать, хороший был банк, но с таким отношением к клиентам идет он в том же направлении сам.

Прогулка

В последнее время стал активно ходить — в моем возрасте ужо надо думать о песке здоровье. Сегодня, кажется, рекорд. 23к шагов, ~18 км за 4-часовую прогулку. Ноги гудят, чувство морального удовлетворения — присутствует =))

Навалю еще фоточек, собранных за последние прогулки!

Get-MailboxDatabaseCopyStatus: «Status.value__» to «Status»

Понадобилось для мониторинга баз. Не все, но наиболее распространенные значения. Взято с MSExchange 2010

 
 
  1. Get-MailboxDatabaseCopyStatus -Identity * | ForEach-Object {$_.Status.value__}
  2. Get-MailboxDatabaseCopyStatus -Identity * | ForEach-Object {$_.Status}
 
 
  1. 3 ⇒ Failed
  2. 4 ⇒ Seeding
  3. 5 ⇒ Suspended
  4. 6 ⇒ Healthy
  5. 7 ⇒ ServiceDown
  6. 8 ⇒ Initializing
  7. 9 ⇒ Resynchronizing
  8. 11 ⇒ Mounted
  9. 12 ⇒ Dismounted
  10. 13 ⇒ Mounting
  11. 15 ⇒ DisconnectedAndHealthy
  12. 16 ⇒ FailedAndSuspended
  13. 17 ⇒ DisconnectedAndResynchronizing