Как заставить cifs/smb смонтироваться, игнорируют umask?

Большая часть беспорядка об этом - то, потому что это варьируется дистрибутивом Linux. В общем...

  • /etc/profile получен только на начальной загрузке.
  • /etc/profile источники/etc/profile.local, если это существует.
  • /root/.bashrc получен...
    • На начальной загрузке, после/etc/profile.
    • При открытии нового терминального сеанса.
  • Только команды ввели в командную строку терминального сеанса, использует набор ПУТИ в/root/.bashrc.
  • Сценарии и программы, выполненные GUI как Gnome, используют набор ПУТИ в/etc/profile.
  • Так как/etc/profile выполняет/etc/profile.local, если он существует, затем изменяется, и дополнения к ПУТИ обычно лучше всего делаются там. Не забудьте 'экспортировать ПУТЬ', таким образом, все подоболочки видят его.

Я знаю, что это поведение на Щенке Linux 5.2.8 Lupu, которые основаны на Ubuntu 10.04, и исследование указывает, что это распространено, по крайней мере, для многих находящихся в Debian дистрибутивов как Ubuntu.

Вы думали бы, что набор ПУТИ в $HOME/.profile (пользовательский сценарий, аналогичный/etc/profile сценарий в масштабе всей системы), будет работать на нетерминальные сессии как Gnome, но он не делает. GUI Xwindows и различные менеджеры дисплея, и т.д. как Gnome идут параллельно терминальным сеансам, так не наследуйте настройки $HOME/.bashrc.

Кажется, что почти каждая программа берет на себя ответственность за сброс ПУТИ при необходимости. Следующая команда покажет буквально десятки или даже сотни файлов, содержащих 'ПУТЬ ='...

grep -r 'PATH=' /etc/*

Иллюстрация уместности к вопросу

Иерархию текущего процесса на моей машине показывают ниже в отредактированном выводе от команды...

ps -efH | cut -c49-126
----------------------
/bin/busybox init
  /bin/sh /usr/bin/xwin
    /usr/bin/xinit /root/.xinitrc -- -br -nolisten tcp
      X :0 -br -nolisten tcp
      openbox
        /bin/ash /sbin/pup_event_frontend_d
          sleep 2
  /usr/local/apps/ROX-Filer/ROX-Filer -p /root/Choices/ROX-Filer/PuppyPin
    roxterm
      gnome-pty-helper
      -sh
      -sh
      -sh
      -sh
      -sh
      -sh
        ps-FULL -efH
        cut -c49-126
    geany
  • Первая строка вывода была бы просто 'init' в большинстве систем, но Щенок заменяет много команд как это с 'busybox'.
  • Обратите внимание, что 'xwin', который запускает подсистему Xwindows, выполняется 'init'.
  • При спуске обратите внимание, что ROX-файловый-сервер функционирует как среду рабочего стола и на том же уровне как 'xwin' с 'roxterm' быть аналогом к 'терминалу гнома' и '-sh' процессы, являющиеся несколькими терминальными сеансами удара, которые я имею открытый на его вкладках.
  • Geany является редактором GUI, которого это выполняет, который является также на том же уровне как Xwin и ROX-Filer.

Экспортируемые переменные среды как ПУТЬ только наследованы от процесса, который запустил их (например, их "родительский процесс"). PS произвел, не показывает его, но/etc/profile (и/etc/profile.local) является одним из многого чтения сценариев во время процесса запуска 'init', таким образом, 'xwin' видит набор ПУТИ в нем. Однако, так как .bashrc не является одним из тех сценариев, набор ПУТИ там не может быть замечен другими программами GUI.

Программы GUI смогли бы видеть ПУТЬ .bashrc при запуске их с командной строки удара.

4
19.07.2014, 23:51
2 ответа

Как было предложено в моем вопросе, нужно было внести изменения на стороне сервера. Я добавил эти строки в /etc/smb.conf на сервере:

create mask = 0666
force create mode = 0666
directory mask = 0777
force directory mode = 0777

И теперь это работает сказочно.

3
27.01.2020, 20:52

Параметрnopermfstabпозволяет всем пользователям читать и записывать на монтирование CIFS (, что было бы сделано umask=000, если бы это поддерживалосьmount.cifs).

Пример строки в/etc/fstab:

\\computer\UNC\path  /mnt/path  cifs  auto,rw,user,noperm,credentials=/path/to/credentials.txt  0 0
4
27.01.2020, 20:52

Теги

Похожие вопросы