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

Как сделать так, чтобы машина Windows не могла удалить каталог (не его содержимое) на сервере Linux Samba?

Название говорит само за себя. (Один из редких случаев, когда это действительно подходит .: P)

Здесь может сработать старый трюк со стороны Linux:

mkdir StayingAlive
sudo touch StayingAlive/.CantTouchThis
sudo chattr +i StayingAlive/.CantTouchThis

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

Когда я делал это в прошлом, я обычно также менял владельца папки и предоставлял пользователю доступ через бит setgid (g + s), хотя в данный момент я не понимаю, почему это так.

sudo chown root.user StayingAlive
sudo chmod g+sw StayingAlive

Чтобы удалить каталог, он должен быть пустым, и у вас должны быть права на запись для его родительского элемента.

Таким образом, вы можете либо предотвратить опустошение каталога, как предлагается STW, либо убедиться, что у пользователя нет разрешений на запись в родительском каталоге каталога, которые им не разрешено удалять.

Если у вас есть каталог с именем /foo/bar и файл с именем /foo/bar/file, пользователь с разрешениями на запись в /foo/bar можно удалить файл. Но права записи на /foo/bar не означает разрешения на удаление /foo/bar, для удаления потребуются разрешения на запись в /foo.