Совет: общий каталог для нескольких пользователей в Linux

Терминал

Сегодня я возвращаюсь с еще одним советом, который лично я использую очень часто: иметь возможность иметь общий каталог для нескольких пользователей на Linux. Я поставил их в ситуацию, когда моя жена дома, мы оба используем один компьютер с Arch Linux но у каждого свой пользователь. Итак, мы заметили проблему с теми папками, которыми мы делимся, например, музыкой или фотографиями, поскольку в каждой из них были свои файлы, дублирующие друг друга.

Тогда мы подумали сделать общую папку, но есть проблема с разрешениями. Если папка моя, она ее не видит, если файл, который я создаю, она не удаляет и так далее. Вначале патч заключался в том, что мы давали 777 разрешений этим файлам каждый раз, когда мы редактировали что-то для доступа другого, пока не нашли решение, Групповые разрешения!

Что такое разрешения группы?

Это лучшее, назначьте этот общий каталог и все его содержимое специальной группе с разрешениями на чтение и запись, с которым все члены группы будут иметь доступ к указанному каталогу. Затем это позволяет, просто добавляя наших пользователей в эту группу, мы уже можем взаимодействовать в этом каталоге.

А как мне его настроить?

Это лучшая часть, и я продолжу рассказывать вам, как я сделал это со своей женой. Первое, что нужно сделать - это создать каталог, который в примере я назову «поделился».

sudo mkdir /home/compartido

Я создаю его внутри / home и за пределами наших учетных записей, чтобы верхние каталоги не беспокоились о своих разрешениях. Теперь мы должны создать группу, которую мы поместим «общий»

sudo groupadd compartidos

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

sudo chgrp -R compartidos /home/compartido
sudo chmod g+s dirname

Кроме того, мы должны добавить в него наших пользователей. Затем мы должны повторить эту команду для каждого:

sudo usermod -G compartido sebastian
sudo usermod -G compartido mimujer

Пока у нас есть каталог «/ home / общий»Которая принадлежит к группе«общий«, С чем будут иметь доступ все пользователи-члены того же самого, и все, что создано в каталоге, будет принадлежать к группе, с чем любой из нас сможет их видеть.

Теперь нам нужен только один последний шаг, который может быть необязательным, но он заключается в изменении umask пользователей, чтобы гарантировать, что каждый новый файл, который мы создаем, может быть изменен другими членами группы. Это влияет на всех пользователей, а не только на каталог, поэтому они должны видеть, работает это для них или нет. В моем случае, поскольку систему используем только мы с женой, это нас не беспокоит, и мы назначаем umask 002, что означает, что каждый созданный файл начинается с 775 разрешений.

Редактирование маски

Чтобы отредактировать umask, каждый пользователь должен отредактировать файл .profile или .bashrc, который находится внутри дома пользователя, и изменить значение umask на желаемое число. Если опции нет, мы должны ее добавить.

Вы также можете отредактировать файл / etc / profile, чтобы изменения коснулись всех пользователей.

Итак, в консоли ставим:

sebastian@multivacs ~> vim .profile

И мы увидим что-то вроде этого:

vi-профиль2

Итак, переходим к строке с надписью umask, нажимаем букву i чтобы иметь возможность редактировать, и мы удаляем #, чтобы удалить комментарий. Меняем номер на 002. Если строка не появляется, они должны ее добавить.

Закончив, нажимаем клавишу Esc чтобы выйти из режима редактирования, а затем мы пишем :+q+w. Что заставляет нас сохранить изменения и выйти из Vi.

Это будет выглядеть так:

vi-профиль

И все! Если они закроют свою пользовательскую сессию и снова откроют ее, будут приняты изменения, с которыми общий каталог уже будет работать.


28 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Elav сказал

    Отличный совет.

  2.   КЗКГ ^ Гаара сказал

    Гениальное.

    Несколько лет назад я сам увидел необходимость сделать это, но я не знал, что это маска umask ... Вместо этого я поместил задачу в crontab 🙂

    Спасибо за совет

    1.    Thalskarth сказал

      Да, crontab тоже хорош. Что ставили, чтобы 775 разрешений на контент назначили?

  3.   сырьеBasic сказал

    Отличный совет .. ..сохраняется при необходимости;) ..

  4.   Луис сказал

    Хорошо, вы создаете папку / home / shared и назначаете ей группу «shared», но

    Какому пользователю принадлежит эта папка? Другими словами, кто владелец? Я, другой человек или пользователь root, чья учетная запись отключена, поскольку я использую sudo?

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

    Что я сделал не так?

    1.    Thalskarth сказал

      При создании папки с помощью sudo вы должны оставить root в качестве владельца. Вы также можете изменить это с помощью команды chown, чтобы назначить другого пользователя.

      С другой стороны, убедитесь, что файлы, которые вы создаете, имеют права доступа 775 (что дает umask 002). Если у них нет этих разрешений, могут быть неправильные настройки.

      Аналогичным образом, стоит уточнить, что umask влияет на любой новый файл, который создается в каталоге, но если они перемещают или копируют контент из другого места, сохраняются исходные разрешения, а не те, которые мы установили для каталога.

      1.    Луис сказал

        Привет Вы правы.

        Я искал, и проблема вызвана тем последним, что вы сказали: при перемещении файла из другого места в общую папку исходные разрешения сохраняются.

        Есть ли этому решение?

        Я мог бы использовать жемчуг.

      2.    Thalskarth сказал

        В этом случае лучше всего было бы поставить crontab, как сказал KZKG ^ Gaara, в котором вы могли бы поместить команду для назначения группы и разрешений на содержимое папки каждый X раз.
        То есть в crontab можно сказать примерно следующее:
        sudo chgrp -R compartidos /home/compartido/*
        chmod -R 775 /home/compartido/*

        Чтобы все было по-новому, переходим в группу Shared с разрешениями 775.

      3.    Thalskarth сказал

        Не обращайте внимания на * в конце каждой строки, я думал о другом, когда ставил это 😛

      4.    Луис сказал

        Спасибо друг.

  5.   Эрнесто сказал

    Очень хороший пост, но я предпочитаю иметь отдельный раздел, в котором я могу разместить все, чем хочу поделиться. У меня есть большой диск на 500 ГБ, на котором я использую 100 ГБ с Linux и раздел на 400 ГБ (ntfs), в котором находится вся музыка, фотографии и т.д ... На моем компьютере мы два пользователя, и каждый может получить доступ к разделу ntfs и помещаем и удаляем то, что хотим, когда хотим. Если я не хочу ни чем делиться, у меня есть кое-что в моем имени пользователя. 🙂

    1.    Луис сказал

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

      Вы можете разместить его на NTFS-разделе, правильно, но у вас также есть фрагментация, более медленная, чем EXT4, и меньшая безопасность, хотя, если это хорошо для вас, это также верно.

  6.   Райнерхг сказал

    Хорошо! Хороший совет, но я бы все же добавил задачу по изменению разрешений на 775 новых файлов при каждом входе в систему и решить проблему с файлами, перемещенными из другой папки.
    Кроме того, большое спасибо за то, что поделились!

  7.   Хоакин сказал

    Интересно, спасибо!

  8.   анонимный сказал

    Я поднимаю кое-что относительно основной группы общего доступа некоторых дистрибутивов gnu / linux. Некоторые дистрибутивы создают пользователя с основной группой users, а не с использованием основной группы, равной имени пользователя.
    Разница в том, что при использовании основной группы пользователей по умолчанию все совместно используется с группой пользователей, к которой будут принадлежать все пользователи, созданные в этом дистрибутиве, если вместо этого они созданы с той же группой, что и имя пользователя, по умолчанию ничего не будет делиться.

    пример:
    $ ls -l /home/user/*.txt
    -rw-r - r– 1 карлос карлос 126 25 марта 2012 г. notes.txt

    $ ls -l /home/user/*.txt
    -rw-r - r– 1 carlos users 126 25 марта 2012 г. notes.txt

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

    #groupadd carlos
    # useradd -g carlos -G lp, wheel, uucp, audio, cdrom, cdrw, usb, lpadmin, plugdev -m -s / bin / bash carlos

    -G carlos указывает на использование родительской группы carlos.
    Вы можете изменить основную группу пользователя с помощью # usermod -g, но это не изменит основную группу всех файлов и папок, которые уже находятся в / home / carlos, вам придется изменить их все.

    Пример: измените пользователей основной группы с пользователя carlos на пользователя основной группы carlos, а затем измените
    все права доступа к файлам и папкам пользователя Carlos, чтобы они оставались с Carlos Carlos

    #groupadd carlos
    # usermod -g пользователей карлос
    # cd / home
    # chown -R carlos: карлос карлос

    Что касается совместного использования, вы можете создать пользователя с именем shared с вашей общей основной группой, и, чтобы не возникало проблем с разрешениями при копировании, вы сначала измените пользователя
    с "$ su - shared" то, что вы хотите, копируется в / home / shared, после чего разрешения на то, что скопировано, станут общим пользователем.
    Если уже есть копии файлов, принадлежащих другим пользователям и основным группам, вы должны изменить их все.

    # cd / home
    # chown -R shared: общий доступ

    В подвешенном состоянии осталось только кое-что, что я не знаю, как это сделать, чтобы скопировать графически как общий пользователь, то есть без необходимости выполнять $ su - shared

  9.   анонимный сказал

    Было очень глупо копировать графически, хе-хе, я использую pcmanfm здесь, в openbox, но вы можете использовать файловый менеджер, который у вас есть или который вам нужен, он выполняется только как общий пользователь, а не как пользователь root.

    $ su - общий
    $pcmanfm
    $ дельфин
    $ млн
    и т.д. и т.п.

    1.    Thalskarth сказал

      Я как раз собирался на это ответить. Если нет, то другой - crontab, который меняет владельца файлов каждый x раз с помощью
      chown -R compartido:compartido compartido

  10.   Хьюго сказал

    Мне кажется, что команда «usermod -G thenewgroup theuser» в основном меняет группу пользователя на «thenewgroup». Чтобы добавить существующего пользователя в новую группу, я думаю, что правильным будет "usermod -aG elnuevogrupo elusuario"

    Другое дело, что я вижу здесь, что некоторые люди рекомендуют выполнить команду «chmod -R 775», но это влияет не только на каталоги, но и на все файлы (делая их исполняемыми), что создает ненужный риск. Лучше сделать что-нибудь вроде «find / home / shared -type d -print0 | xargs -0 chmod 755 ", и при необходимости с файлами вы можете сделать что-то подобное, но используя" -type f "и предоставив разрешение 664.

    Наконец, один из способов сделать несколько учетных записей доступными к файлу или папке независимо от того, кто является владельцем или группой, - это использовать команду "setfacl", которая находится в пакете acl (если я правильно помню). Его использование хорошо объяснено на странице руководства.

  11.   Унаи Мартин сказал

    У меня следующая проблема. Я создал 4 пользователей (web1, web2, web3, web4), и я хочу создать папку группы доступа для пользователей веб-группы. Когда я создаю файл .htaccess, я знаю, что мне нужно поставить require valid-user, но если я поставлю require valid-user web1 web2 web3 web4, чтобы они могли получить доступ к папке со своим паролем, когда я пытаюсь получить доступ к папке он запрашивает у меня имя пользователя и пароль для каждого из них.Как мне получить запрос на ввод имени пользователя и пароля только того, кто хочет войти? потому что предполагается, что один не знает пароль другого.

  12.   Густаво Ф. Паредес сказал

    Эй.

    Четвертый терминал должен иметь «общий» множественное число:

    sudo usermod -G общий Себастьян

    sudo usermod -G поделился mywoman

    Привет.

    Густаво

  13.   Иван сказал

    Приветствия:

    Мы переходим с Windows Server на CentOs 6 и все еще находимся в процессе адаптации. Мой вопрос: есть ли в CentOs графический интерфейс для обмена папками и предоставления пользователям доступа для изменения, редактирования и / или удаления файлов?

    Спасибо за помощь.

    1.    Рафаэль сказал

      Я также устанавливаю centos 6, и я хочу использовать его с samba, который позволяет мне обмениваться файлами из Linux и Windows, я немного знаю, я не использую Linux много, но на работе меня спросили, как я могу это сделать поделиться папками, но в графическом режиме ??.

  14.   Рикардо сказал

    Привет. Пожалуйста, помогите мне! ... Оказывается, сделав это в уме пользователя Linux, я потерял привилегии. Я не могу запускать что-нибудь вроде sudo. Я получаю следующее сообщение: «Извините, пользователь« username »не авторизован для выполнения command_to_run как root в« username »»

    Я думаю, что когда я сменил своего пользователя на расшареную группу, я забрал привилегии, а теперь как мне их восстановить ???

  15.   Билл сказал

    Привет, друг, есть ли способ сделать то же самое, но поделиться файлами с другими людьми в локальной сети Интернета

  16.   Fabian сказал

    Для этого вы должны использовать SAMBA в качестве файлового сервера. Ура

  17.   Давид сказал

    Привет. Когда я дошел до команды sudo chmod g + s dirname, она сообщила мне, что файл или каталог не существует. Вы знаете, в чем проблема?

  18.   Хавьер Кирога Алмейда сказал

    Как мне создать группу в другой группе?

  19.   Родриго Эрнан Рамос сказал

    Линия:
    sudo usermod -G общий Себастьян

    должно быть:
    sudo usermod -a -G общий Себастьян

    первый способ удаляет остальные группы пользователя.
    и если вы потеете, вы теряете свои привилегии