Назад | Перейти на главную страницу

Пишете в общий ресурс Samba от имени другого пользователя?

У меня есть общий ресурс Samba на моем NAS-накопителе:

mount -t smbfs -o username=backup,password=backups_password //sharebox/SVNBackup /mnt/SVNBackup

Затем я пытаюсь запустить:

sudo svnadmin dump /usr/local/svn/repos/testrepo > /mnt/SVNBackup/test1.svn

но я получаю:

bash: /mnt/SVNBackup/test1.svn: в разрешении отказано

Расположение резервной копии настроено так, чтобы принимать доступ только от пользователя «резервная копия» (которого нет в локальной системе).

Как мне решить эту проблему? Спасибо

sudo command > outputfile не делает то, что вы думаете. В частности, выходной файл открывается с ваш разрешения, а не пользователя sudo (в данном случае root). Вот почему это работает, когда вы становитесь root и запускаете команду - потому что тогда перенаправление запускается как root, который может писать в / mnt / SVNBackup. Это необходимо и разумно, чтобы sudo вел себя подобным образом.

Найдите способ запустить всю команду от имени пользователя root; поместите его в cron root или напишите однострочный сценарий оболочки и вызовите который с помощью sudo или найдите другое исправление, которое подойдет вам. В предельном (и немного глупом) случае

sudo svnadmin dump /usr/local/svn/repos/testrepo | sudo tee /mnt/SVNBackup/test1.svn

должен производить вывод обе на стандартный вывод и в файле /mnt/SVNBackup/test1.svn . Как ни странно это может показаться, если вам действительно не нужен результат, самым простым способом может быть

sudo svnadmin dump /usr/local/svn/repos/testrepo | sudo tee /mnt/SVNBackup/test1.svn > /dev/null

Если исходная команда svnadmin производит что-то на STDERR, и вы хотите, чтобы это тоже было в файле журнала, попробуйте

sudo svnadmin dump /usr/local/svn/repos/testrepo 2>&1 | sudo tee /mnt/SVNBackup/test1.svn > /dev/null

Обратите внимание, что 2>&1 является форумом bash, если ваша оболочка является csh-вариантом или чем-то другим, вам нужно найти что-то подходящее.