Большая часть беспорядка об этом - то, потому что это варьируется дистрибутивом Linux. В общем...
Я знаю, что это поведение на Щенке 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
Экспортируемые переменные среды как ПУТЬ только наследованы от процесса, который запустил их (например, их "родительский процесс"). PS произвел, не показывает его, но/etc/profile (и/etc/profile.local) является одним из многого чтения сценариев во время процесса запуска 'init', таким образом, 'xwin' видит набор ПУТИ в нем. Однако, так как .bashrc не является одним из тех сценариев, набор ПУТИ там не может быть замечен другими программами GUI.
Программы GUI смогли бы видеть ПУТЬ .bashrc при запуске их с командной строки удара.
Как было предложено в моем вопросе, нужно было внести изменения на стороне сервера. Я добавил эти строки в /etc/smb.conf
на сервере:
create mask = 0666
force create mode = 0666
directory mask = 0777
force directory mode = 0777
И теперь это работает сказочно.
Параметрnoperm
fstab
позволяет всем пользователям читать и записывать на монтирование CIFS (, что было бы сделано umask=000
, если бы это поддерживалосьmount.cifs
).
Пример строки в/etc/fstab
:
\\computer\UNC\path /mnt/path cifs auto,rw,user,noperm,credentials=/path/to/credentials.txt 0 0