3

Я отчаянно пытаюсь запустить sitecopy с моего компьютера, но глупо, кажется, настаивать на чтении моего файла ~/.netrc, даже если кажется, что man-страница говорит иначе (« Если он существует, ~/.netrc будет искал пароль, если он не указан. "; см., например, http://linux.die.net/man/1/sitecopy)

~/.netrc не существует в моем домашнем каталоге, но, тем не менее, sitecopy, похоже, ожидает этого, говоря, что у него нет необходимых разрешений (которых должно быть 600). И это ожидание кажется жестко закодированным, по крайней мере, я не нашел ни варианта, ни переключателя, ни чего-либо еще.

Я, конечно, был бы рад просто поместить туда пустой файл .netrc и дать ему необходимые разрешения, но именно здесь начинается настоящая проблема: мой домашний каталог находится в отдельном разделе, который отформатирован как NTFS, и смонтирован с использованием ntfs. -3G.

Я еще не выяснил, можно ли (и если да, то каким образом) файлы в разделе, смонтированном с индивидуальными разрешениями ntfs-3g. Насколько я могу судить, все, что я могу контролировать, это umask (в /etc /fstab), который затем применяется ко всем файлам раздела. Теперь установка umask на 177 и принятие того, что все файлы имеют 600 разрешений, не работает, потому что это не позволяет мне входить в какой-либо каталог в разделе (для этого вам понадобится бит выполнения каталога).

Я также попытался использовать символическую ссылку (которая работает на NTFS, на случай, если вы не знали ;-)) на файл в другом разделе, где разрешения могут быть установлены индивидуально, но это не обманет sitecopy, предположительно, потому что он проверяет разрешения символической ссылки, а не цели.

Кто-нибудь знает какое-либо решение этой дилеммы, независимо от того, на каком уровне? Единственное, что не подходит, - это переформатировать мой домашний раздел как e3fs или что-то подобное. (Мне нужно выполнить двойную загрузку для Windoze.) Я был бы очень благодарен!

С наилучшими пожеланиями,

Florian

3 ответа3

1

Вы можете попытаться обмануть ваше приложение, сказав, что ваш $HOME находится где-то еще.

Создайте каталог, такой как /linuxhome , где вы можете устанавливать разрешения по своему усмотрению , поместите в него свой .netrc с соответствующими разрешениями, а затем вы сможете запустить sitecopy из командной строки:

HOME=/linuxhome sitecopy

или адаптироваться к фактической команде, если это не sitecopy .

1

Другая возможность в Linux состоит в том, чтобы создать файл в другом месте (например, /var/tmp) с правильными разрешениями, а затем либо символическую ссылку (как stat() вернет разрешения цели символической ссылки) ...

ln -s /var/tmp/netrc /home/user286915/.netrc

(Примечание: ntfs-3g создает символические ссылки на основе файлов в формате Cygwin, а не точки повторного анализа в формате Windows 7.)


... или, если это была не NTFS, а файловая система, полностью подверженная Unix, например, FAT32, то при каждой загрузке привязывайте ее поверх ~/.netrc :

mount --bind /var/tmp/netrc /home/user286915/.netrc

В /etc/fstab это будет выражаться как:

/var/tmp/netrc  /home/user286915/.netrc  none  bind  0  0
0

Я еще не выяснил, можно ли (и если да, то каким образом) файлы в разделе, смонтированном с индивидуальными разрешениями ntfs-3g. Насколько я могу судить, все, что я могу контролировать, это umask (в /etc /fstab), который затем применяется ко всем файлам раздела. Теперь установка umask на 177 и принятие того, что все файлы имеют 600 разрешений, не работает, потому что это не позволяет мне входить в какой-либо каталог в разделе (для этого вам понадобится бит выполнения каталога).

NTFS имеет свой собственный формат ACL, который ntfs-3g может отображать в POSIX ACL (включая базовые разрешения), но невозможно получить идеальное сопоставление, и пользователь должен указать ntfs-3g Windows SID для сопоставления каждого UID Unix с (каждая установка Windows имеет свое "пространство имен UID"), поэтому по умолчанию она отключена

(Кроме того, Windows учитывает "исполняемые" разрешения для файлов .exe, по умолчанию она дает a+x для всех файлов - и это выглядит безобразно в ls .)

Вы можете включить эту функцию, создав .NTFS-3G/UserMapping в корневом каталоге вашего раздела NTFS. Если вам не нужна совместимость с какой-либо существующей установкой Windows, вы можете добавить подстановочный SID:

sid="S-1-5-21-$((RANDOM*RANDOM))-$((RANDOM*RANDOM))-$((RANDOM*RANDOM))-1000"

mkdir .NTFS-3G; echo "::$sid" > .NTFS-3G/UserMapping

(Последняя часть вышеуказанного SID - это "RID", похожий на UID Unix; они даже начинаются с 1000 для новых пользователей, как в большинстве систем Unix.)

Если вы хотите, чтобы учетные записи Linux отображались на учетные записи Windows, используйте инструмент, такой как ntfs-3g.usermap для создания файла UserMapping - он будет использовать идентификаторы SID, уже найденные в файловой системе. В качестве альтернативы, загрузитесь в Windows и используйте такие инструменты, как whoami или посмотрите в реестре (в разделе HKEY_USERS) SID пользователей.

После установки файла UserMapping размонтируйте и перемонтируйте файловую систему и проверьте системный журнал на наличие сообщений ntfs-3g.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .