Автоопределение общих сетевых ресурсов для каждого пользователя

У меня есть сервер, на котором есть несколько общих ресурсов CIFS, к которым необходимо получить доступ для каждого пользователя. Например, у меня есть Music share, к которому у меня есть полный доступ, но у моей жены есть доступ только для чтения.

Когда либо я, либо моя жена заходят на наш ноутбук Ubuntu 11.04 Я бы хотел, чтобы эти акции автоматически устанавливались для каждого пользователя. Теперь я понимаю, что если я смонтирован как -t cifs без указания пользователя, он будет использовать переменную среды USER. Тем не менее, мне также нужно указать пароль, так как я могу это сделать, когда у каждого пользователя есть другой пароль?

Я думаю, что мои вопросы:

  1. Есть ли
  2. Если нет, существует ли способ указать, что mount применим только к определенному пользователю?
  3. Кроме того, пароль общего доступа всегда совпадает с локальным паролем. Есть ли способ указать, что этот пароль должен просто пройти от клиента к серверу, а не указывать его в файле учетных данных где-нибудь?

Или, может быть, я чего-то не хватает, и есть совершенно другое решение. Может ли кто-нибудь помочь?

3
задан 16 October 2011 в 14:43

5 ответов

Возможно, возможно несколько решений; вот как я это сделаю. (Отказ от ответственности: непроверенный!)

Команда mount.cifs может считывать имя пользователя и пароль из переменных среды USER и PASSWD, но также может читать их из файла учетных данных, что вы указываете в командной строке с параметром -o cred=/path/to/credentials/file.

Подход учетных данных-файлов более простой для реализации.

Создайте текстовый файл $HOME/.Music.cred для хранения учетных данных; файл должен иметь этот формат:
user=your-username-on-cifs-server
password=the-password
domain=leave-this-blank-unless-really-using-windows-domains
Защитить файл $HOME/.Music.cred; выполните эту команду в терминале:
chmod go-rw $HOME/.Music.cred
Теперь вы можете смонтировать общий ресурс CIFS //server/music в каталоге MyMusicFolder с помощью этой команды:
sudo mount -t cifs -o cred=$HOME/.Music.cred //server/music $HOME/MyMusicFolder
Вы можете разрешить каждому пользователю запускать это через sudo без пароля, добавив строку на /etc/sudoers: (одна строка для каждого пользователя)
# replace every occurence of `user` with the actual account name
user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred //server/music /home/user/MyMusicFolder
Если команда с шага 3. работала правильно, вы можете сделать ее автоматической несколькими способами: сохранить ее в сценарий оболочки в свой домашний каталог и сделать этот сценарий авто- (вы должны сделать это для каждого пользователя, которому необходимо установить CIFS-акции); сохраните его в сценарий оболочки /etc/X11/Xsession.d/30mount-cifs-shares, чтобы он работал для любого пользователя.

В качестве альтернативы вы можете заменить шаги 3 и 4. выше с помощью mount.cifs :

Создать текстовый файл $HOME/.Music.cred для хранения учетных данных; файл должен иметь этот формат:
user=your-username-on-cifs-server
password=the-password
domain=leave-this-blank-unless-really-using-windows-domains

Создайте текстовый файл $HOME/.Music.cred для хранения учетных данных; файл должен иметь этот формат:

<debug enable="1" />
<volume server="server" path="music" mountpoint="~/MyMusicFolder" options="cred=/home/%(USER)/.Music.cred" />

настроить /etc/security/pam_mount.conf.xml с помощью:

страницы man mount.cifs на странице руководства pam_mount.conf
3
ответ дан 25 May 2018 в 18:05
  • 1
    Спасибо, но шаг 3 работает только для sudo. Поэтому, если я его скрипту, тогда он должен будет запускаться с правами root, не так ли? – Kent Boogaart 16 October 2011 в 18:03
  • 2
    Кроме того, для шага 4 есть ли какая-то причина, по которой я не могу просто поместить это в / etc / fstab ? – Kent Boogaart 16 October 2011 в 18:08
  • 3
    Фу, я думаю, это потому, что он работает от root, поэтому $ HOME будет ссылаться на дом корня. Кажется, я здесь привязываюсь. Если шаг 3 работал как не-root, я могу понять, как это может работать, но это не так. – Kent Boogaart 16 October 2011 в 18:14
  • 4
    @KentBoogaart: Вы правы, для этого вам нужно безосновательное sudo. Я отредактировал ответ с еще несколькими предложениями. – Riccardo Murri 16 October 2011 в 19:42
  • 5
    @KentBoogaart Причина, по которой она не работает в /etc/fstab, заключается в том, что переменные типа $HOME не расширяются; переменная подстановка содержимого является особенностью оболочки. – Riccardo Murri 16 October 2011 в 19:44

Возможно, возможно несколько решений; вот как я это сделаю. (Отказ от ответственности: непроверенный!) [/ ​​g6]

Команда mount.cifs может считывать имя пользователя и пароль из переменных среды USER и PASSWD но он также может читать их из файла «учетных данных», который вы указываете в командной строке с опцией -o cred=/path/to/credentials/file.

Подход учетных данных-файлов ИМХО проще реализовать.

  1. Создайте текстовый файл $HOME/.Music.cred для хранения учетных данных; файл должен иметь этот формат:
    user=your-username-on-cifs-server
    password=the-password
    domain=leave-this-blank-unless-really-using-windows-domains
    
  2. Защитить файл $HOME/.Music.cred; выполните эту команду в терминале:
    chmod go-rw $HOME/.Music.cred
    
  3. Теперь вы можете смонтировать общий ресурс CIFS //server/music в каталоге MyMusicFolder с помощью этой команды:
    sudo mount -t cifs -o cred=$HOME/.Music.cred //server/music $HOME/MyMusicFolder
    
    Вы можете включить каждого пользователя для запуска этого через passwordless sudo , добавив строку к /etc/sudoers: (одна строка для каждого пользователя)
    # replace every occurence of `user` with the actual account name
    user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred //server/music /home/user/MyMusicFolder
    
  4. Если команда с шага 3. работала правильно, вы можете сделать ее автоматической несколькими способами: сохраните его в сценарии оболочки в своем домашнем каталоге и сделайте этот сценарий автоматически запущенным приложением (вы должны сделать это для каждого пользователя, которому необходимо установить общие ресурсы CIFS); сохраните его в сценарий оболочки /etc/X11/Xsession.d/30mount-cifs-shares, чтобы он работал для любого пользователя.

В качестве альтернативы вы можете заменить шаги 3 и 4. выше с помощью pam-mount :

  1. установить пакет libpam-mount
  2. настроить /etc/security/pam_mount.conf.xml с помощью:
    <debug enable="1" />
    <volume server="server" path="music" mountpoint="~/MyMusicFolder" options="cred=/home/%(USER)/.Music.cred" />
    

Ссылки:

3
ответ дан 15 August 2018 в 21:57

В качестве заметки для меня и для других причиной отказа libpam-mount было:

CIFS VFS: Error connecting to socket. Aborting operation
CIFS VFS: cifs_mount failed w/return code = -101

было связано с тем, что моя беспроводная сеть еще не началась, когда libpam пытался монтировать , Чтобы исправить это, мне пришлось установить беспроводное соединение как «Доступно для всех пользователей» в настройках беспроводного соединения. Это позволяет подключиться к активации до входа пользователя в систему.

Как только я установил это свойство, libpam-mount работал нормально.

0
ответ дан 25 May 2018 в 18:05

В качестве заметки для меня и для других причиной отказа libpam-mount было:

CIFS VFS: Error connecting to socket. Aborting operation
CIFS VFS: cifs_mount failed w/return code = -101

было связано с тем, что моя беспроводная сеть еще не началась, когда libpam пытался монтировать , Чтобы исправить это, мне пришлось установить беспроводное соединение как «Доступно для всех пользователей» в настройках беспроводного соединения. Это позволяет подключиться к активации до входа пользователя в систему.

Как только я установил это свойство, libpam-mount работал нормально.

0
ответ дан 31 July 2018 в 13:33

В качестве заметки для меня и для других причиной отказа libpam-mount было:

CIFS VFS: Error connecting to socket. Aborting operation
CIFS VFS: cifs_mount failed w/return code = -101

было связано с тем, что моя беспроводная сеть еще не началась, когда libpam пытался монтировать , Чтобы исправить это, мне пришлось установить беспроводное соединение как «Доступно для всех пользователей» в настройках беспроводного соединения. Это позволяет подключиться к активации до входа пользователя в систему.

Как только я установил это свойство, libpam-mount работал нормально.

0
ответ дан 6 August 2018 в 03:01

Другие вопросы по тегам:

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