У меня есть компьютер с двойной загрузкой (Ubuntu 12.04 с gnome, windows Vista), и администратор использует все диски, включая диск C в Windows.
Я хотел бы предоставить пользователям со стандартными привилегиями возможность читать (не писать, а только обращаться к документу) единственный подкаталог с именем A с диска C.
Таким образом, в файле /etc/fstab
/media/123.../A
(C:\A
в Windows) следует связать с каталогом документов пользователя / A (/home/user/Documents/A
), только для обычных пользователей (не администраторов).
Это должно включать подкаталоги A тоже и все файлы. Есть ли способ сделать это?
Спасибо заранее!
Просто возможно с overlayfs
Руководство по монтированию папки Windows в режиме только для чтения для обычного пользователя (режим записи для root или другого пользователя)
sudo mkdir /root/win
Создание точки монтирования для обычного пользователя
mkdir /home/$USER/folder
mkdir /tmp/folder
Монтирование раздела Windows в режим записи
sudo mount /dev/disk/by-label/winOS /root/win
Монтирование папки раздела Windows в режиме только для чтения
sudo mount -t overlayfs -o ro,lowerdir=/root/win/folder,upperdir=/tmp/folder overlayfs /home/$USER/folder
Доступ к доступному для записи разделу Windows от имени пользователя root
[ 114]Доступ к папке только для чтения в разделе Windows
nautilus /home/$USER/folder
Если вы хотите смонтировать доступный для записи каталог в режиме только для чтения в другом месте, можно использовать bind mount .
Например, смонтировать каталог home в режиме только для чтения @ / tmp / home
sudo mount --bind ~ /tmp/home
sudo mount -o ro,remount /tmp/home
Если вы хотите получить доступ только для чтения к определенной папке затем обычный пользователь монтирует раздел в недоступном месте (пример / root / abc ).
Вы можете установить разрешения для раздела Windows, но вы не можете установить разрешения для отдельных файлов / папок в разделе; во время монтажа вы устанавливаете права доступа к диску целом .
В своем вопросе вы не упомянули, должны ли пользователи со стандартными привилегиями иметь «доступ только для чтения к подкаталогу A
и доступ на запись к остальной части раздела Windows », или msgstr "доступ только для чтения к подкаталогу A
и нет доступа к остальной части раздела ". К сожалению, оба этих сценария не могут быть точно выполнены из-за вступительного предложения этого ответа.
Если вы хотите предоставить пользователю доступ только для чтения к определенной папке в разделе Windows, этот пользователь будет иметь доступ только для чтения ко всему разделу. Если с вами все в порядке, вот объяснение, как это сделать:
Сначала создайте группу для пользователей, которые будут иметь доступ только для чтения. Ради этого примера мы будем использовать WindowsRO
. Итак, команда для создания группы:
sudo groupadd WindowsRO
Во-вторых, мы добавим пользователей (которым мы хотим предоставить доступ только для чтения) к группе. Предполагая, что пользователь называется notadmin
, это команда:
sudo usermod -a -G WindowsRO notadmin
Повторите эту команду для всех необходимых пользователей.
Теперь нам нужно получить GID (ID группы) группы, потому что мы будем использовать его при монтировании диска. Чтобы сделать это, выполните следующее:
grep WindowsRO /etc/group | cut -d: -f3
Запишите число, которое выводится, потому что оно понадобится нам на шаге 5. В этом примере я предполагаю, что результат равен 1003
. [ 1159] [тысяча сто сорок-один]
Теперь нам нужно получить UID (идентификатор пользователя) учетной записи администратора, потому что мы будем использовать его при монтировании диска. В этом примере предполагается, что учетной записью администратора является bob
. Для этого выполните следующее:
grep bob /etc/passwd | cut -d: -f3
Запишите число, которое выводится, потому что оно понадобится нам на шаге 5. Для этого примера я предполагаю, что результат равен 1000
. [ 1 161] [тысяча сто сорок-два]
Теперь мы отредактируем файл /etc/fstab
. Я предполагаю, что рассматриваемый раздел Windows - /dev/sda2
, что вы монтируете его на /media/123
, и что это раздел ntfs
. Вот строка, которую вы должны иметь:
/dev/sda2 /media/123 ntfs rw,gid=1003,uid=1000,dmask=027,fmask=037,#AnyOtherOptions#
gid=1003
- это число, которое мы получили на шаге 3 (GID группы). uid=1000
- это число, которое мы получили на шаге 4 (UID учетной записи администратора). dmask=027
устанавливает разрешения для папок следующим образом: -rwxr-x---
, что означает, что владелец (учетная запись администратора) будет иметь полный доступ (rwx
), а группа будет иметь доступ только для чтения (r-x
), и никто другой не будет иметь доступа вообще (---
). fmask=037
устанавливает права доступа к файлам следующим образом: -rwxr-----
. Это похоже на dmask
; группа будет иметь доступ только для чтения к файлам. #AnyOtherOptions#
другими вариантами, которые у вас есть. Например, у вас может быть auto
, который автоматически монтирует раздел при запуске. Как только вышеперечисленное будет сделано, выполните sudo mount -a
, чтобы применить изменения, которые мы сделали, к файлу fstab
. Надеюсь, вы не получите никаких ошибок.
Теперь вы должны проверить, что пользователи могут получить доступ к разделу. Если да, перейдите к следующему шагу, чтобы добавить ссылку A
в папку «Документы».
Предполагая, что домашний каталог для нашей учетной записи notadmin
- /home/notadmin
, и что эта папка A
- в /media/123/some/folder/A
, сделайте следующее:
ln -s /media/123/some/folder/A /home/notadmin/Documents/A
Вы должны теперь смотрите ссылку в notadmin
Документах, указывающую на A
. Он будет иметь доступ только для чтения к нему (и его подкаталогам, поскольку у него есть доступ только для чтения ко всему разделу). Выполните то же самое для других пользователей.
Все вышеперечисленное должно отвечать вашим требованиям, за исключением пункта, который я упомянул в начале: какой доступ должен иметь пользователь к остальной части раздела? Вышесказанное даст им доступ только для чтения ко всему разделу, а не только к разделу A
; мы не можем устанавливать разрешения для определенных файлов / папок при монтировании разделов Windows.