Сделать все файлы в соответствии с каталогом только для чтения, не изменяя полномочия?

Хорошо, если я не мог бы использовать ls в режиме оболочки emacs, я мог бы переключиться на eshell режим или просто сушеное.

7
12.04.2011, 02:58
2 ответа

Эти работы ответа над Debian (протестированный на lenny и сжимают). После расследования это, кажется, работает только благодаря патчу Debian; пользователям других дистрибутивов, таким как Ubuntu может не повезти.

Можно использовать mount --bind. Смонтируйте “реальную” файловую систему в соответствии с каталогом, это не публично доступно. Заставьте только для чтения связать, монтируют, что это более широко доступно. Заставьте чтение-запись связать, монтируются для части, которую Вы хотите выставить с доступом для чтения-записи.

mkdir /media/hidden /media/hidden/sdz99
chmod 700 /media/hidden
mount /dev/sdz99 /media/hidden/sdz99
mount -o bind,ro /media/hidden/sdz99/world-readable /media/world-readable
mount -o bind /media/hidden/sdz99/world-writable /media/world-writable

В Вашем варианте использования я думаю, что можно сделать:

mkdir /var/smb/hidden
mv /var/smb/snapshot /var/smb/hidden
mkdir /var/smb/snapshot
chmod 700 /var/smb/hidden
chmod 755 /var/smb/hidden/snapshot
mount -o bind,ro /var/smb/hidden/snapshot /var/smb/hidden/snapshot

Т.е. помещенный реальное snapshot каталог в соответствии с ограниченным каталогом, но дают snapshot прочитайте полномочия для всех. Это не будет непосредственно доступно, потому что его родитель имеет ограниченный доступ. Свяжите - монтируют его только для чтения в доступном месте, так, чтобы все могли считать его через тот путь.

(Только для чтения связывают, монтируется, только стал возможным спустя несколько лет после того, как связывают монтирование, были представлены, таким образом, Вы могли бы помнить время, когда они не работали. Я не знаю бесцеремонно, с тех пор, когда они работают, но они уже работали в Debian lenny (т.е. теперь oldstable).)

6
27.01.2020, 20:16
  • 1
    Возможно, Ubuntu упаковывает очень устаревшее монтирование (2.17.2 согласно mount -V), но та команда не работала (и согласно странице справочника, Вы не можете измениться, монтируют опции как часть связывать команды). Однако я действительно имел успех (после прохождения через страницы справочника в пятидесятый раз) выполнение mount --bind /var/smb/snapshots /var/smb/test сопровождаемый mount -o remount,ro /var/smb/test. (Очевидно, это было тестом, если Вы не могли бы сказать моими прекрасными именами каталогов!) –  Kromey 12.04.2011, 03:07
  • 2
    Это странно: смонтируйтесь 2.13.1, счастливо создает только для чтения, связывают, монтируются на 2.6.32 ядрах (Debian сжимают), и я помню, что они могли на 2.6.26 также (lenny). Страница справочника была корректна однажды, но обновление потребностей. –  Gilles 'SO- stop being evil' 12.04.2011, 03:19
  • 3
    я попробовал каждую перестановку связывания и ro опций, о которых я мог думать (несущественно, "связать", не является допустимой опцией к-o, но является допустимым переключателем, поскольку - связывают или-B), но не добрался нигде с этим. Ядро 2.6.35 (Индивидуалист Ubuntu Meercat). Возможно, Debian имеет совершенно другую команду монтирования? Но Ubuntu основана на Debian, так, чтобы не казался вероятным. Это - действительно странное место для нахождения различия в этих двух дистрибутивах... –  Kromey 12.04.2011, 03:34
  • 4
    @Kromey: я только что протестировал на Ubuntu 10.04, и mount -o bind,ro не работает там также. Таким образом, я предполагаю, что это - патч Debian, в конце концов! –  Gilles 'SO- stop being evil' 12.04.2011, 03:47
  • 5
    я принимаю Ваш ответ на этом так как a) это (по-видимому, я не могу проверить его сам), допустимый для Debian (и вероятные другие также) и b) его непосредственно приводят меня к нахождению решения на Ubuntu. Однако для будущих людей, читающих этого, ответ Gilles не будет работать над Ubuntu, и Вам вместо этого будет нужен мой ответ. –  Kromey 12.04.2011, 03:57

@Gilles был действительно близок, просто очень немного от метки Ubuntu 10.10 (у меня нет причины сомневаться, что он прав для Debian, Сжимают, и возможно другие). Путем монтирования моего чтения-записи создает снимки каталог под папкой, к которой не могут получить доступ другие пользователи (например,/var/smb/hidden/snapshots, где/var/smb/hidden имеет полномочия 770 и принадлежит root:root), я могу защитить чтение-запись, монтируются от других пользователей. Я могу затем использовать mount --bind сопровождаемый mount -o remount,ro для привязки монтирования с доступным местоположением затем сделайте это только для чтения.

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

Таким образом для резюме вот решение:

mkdir /var/smb/hidden
chown root:root /var/smb/hidden
chmod 770 /var/smb/hidden
mkdir /var/smb/hidden/snapshots
mksdir /var/smb/snapshots
mount /dev/md2 /var/smb/hidden/snapshots
mount --bind /var/smb/hidden/snapshots /var/smb/snapshots
mount -o remount,ro /var/smb/snapshots

Таким образом, существует краткое окно времени, где резервные копии являются чтением-записью и обычно доступный, но это является достаточно маленьким, чтобы быть применимым для моих потребностей. Некоторый обман с полномочиями на/var/smb мог защитить его во время этого краткого окна (т.е. сделать его непроходимым, затем связать монтирование, затем сделать его проходимым снова), если те краткие миллисекунды являются слишком большим окном.

Теперь я просто должен поместить это все вместе в сценарий. Подсуньте его в процесс запуска прямо после того, как все смонтировано, возможно, который должен избежать любого конфликта, который мог бы быть вызван Samba, пытающимся совместно использовать каталог, с которым я связываю.

Примечание: Если Ваш дистрибутив поддерживает mount -o bind,ro версия как Gilles отправила, я рекомендую что решение для Вас; мое решение, здесь должен только использоваться людьми на Ubuntu или других дистрибутивах, которые не разрешат для изменения смонтировать опции при привязке с другим каталогом.

7
27.01.2020, 20:16
  • 1
    я наблюдаю то же (довольно сбивающий с толку!) поведение как Вы на Ubuntu 10.04. –  Gilles 'SO- stop being evil' 12.04.2011, 03:49
  • 2
    @shadyabhi финал {} входной параметр для sh -c к строке, и там получают доступ как $0. Команда Вы не понимаете полосы .md и добавляет .html. Вы, вероятно, правы с выходом . ---------121 человек--------45572----, +1! Это помогло мне сделать busybox mount работайте, как предназначено. Но я все еще смущен. –  Camilo Martin 22.07.2012, 14:40

Теги

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