2

У меня есть пользовательский каталог, смонтированный в Ubuntu 12.04 с cifs. /etc /fstab содержит строку;

//cb/share /home/cb cifs user=ubuntu,password=abc123,uid=cb,gid=users 0 0

Общий ресурс монтируется и работает нормально, за исключением команд chown/chmod, которые не работают;

$ sudo touch /home/cb/foo
$ sudo chown cb /home/cb/foo
chown: changing ownership of `/home/cb/foo': Permission denied

Забудьте, что cifs уже вводит uid и gid в правильные значения (cb:users). Мне нужно использовать несколько уже существующих сценариев и утилит, которые не работают из-за ненулевого состояния выхода, возвращаемого chown/chmod.

Я наивно пытался монтировать в другом месте (/mnt/cb), а затем с помощью bindfs перемонтировать его, но это тоже не сработало.

sudo bindfs -o perms=0750,mirror=cb,group=users /mnt/cb /home/cb

Обратите внимание, что единственное решение, которое я ищу здесь, - это какой-то способ настроить сервер / монтирование так, чтобы chmod / chown тихо завершился с ошибкой - т. Е. Вернул нулевой статус выхода.

1 ответ1

0

Ну, тривиальный ответ - выгрузить реальный chmod и chown другими программами, которые не сбоят.  Это могут быть скрипты.  В /home/cab/bin (или любом другом удобном каталоге, к которому у вас есть полный доступ) создайте сценарии с именем chmod и chown которые говорят просто

#!/bin/sh

Вы можете добавить exit 0 если хотите, но 0 будет статусом выхода по умолчанию, если скрипт ничего не делает.  И затем, конечно, добавьте /home/cab/bin в начало переменной окружения PATH .

Если вы хотите использовать chmod и chown , сделайте так, чтобы скрипты
[Редактировать]

#!/bin/sh
/bin/"$(basename "$0")" "$@"
exit 0

заменив /bin каталогом, в котором находятся настоящие chmod и chown .  Это выполняет настоящую команду с аргументами сценария, а затем завершается со статусом 0 независимо от состояния выхода из программы.

И поскольку эти два сценария идентичны (если настоящие команды chmod и chown находятся в одном каталоге в вашей системе), вы можете написать один и сделать ссылку на него другим.

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