Как настроить папку так, чтобы все, что в ней создавалось, наследовало разрешения?

18

У меня есть папка / data (фактически раздел) для всех данных, которые должны быть доступны всем пользователям (в данном случае членам семьи). У всех нас есть индивидуальные учетные записи пользователей, и все они часто подключаются в любое время на этом компьютере.

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

steevc
источник
для посетителей. Если вы просто хотите, чтобы имя группы было унаследовано chmod -R g+s /parentdir. Примечание: бегите chmod -R до этого, если нужно
Thamme Gowda
1
Обратите внимание на вышеприведенное: -Rфлаг to chmodочень редко полезен, потому что мы редко хотим, чтобы каталоги (которым всегда требуется какое-либо разрешение на выполнение) и обычные файлы (которым редко требуется какое-либо разрешение на выполнение) имели одинаковые разрешения
Zanna

Ответы:

17

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

Прежде всего, мы должны установить пакет acl Установить ACL :

sudo apt-get install acl

До Ubuntu 14.04 раздел должен быть смонтирован с опцией aclдля следующих действий. Это может быть добавлено /etc/fstab, как в

UUID=<XXXX>  /media/shared  ext4  noatime,acl  0  2

или для уже смонтированной файловой системы

sudo mount -o remount,acl /media/shared

Далее необходимо создать новую группу, в которую будут добавлены все пользователи, которым разрешен доступ к общему ресурсу в режиме чтения / записи. Я называю это usershare. Уже существующая группа может быть использована.

sudo addgroup usershare

Теперь мы добавляем пользователей enzotibи steevcв эту группу:

sudo gpasswd -a steevc  usershare
sudo gpasswd -a enzotib usershare

(действует при следующем входе в систему).

Затем мы добавляем ACL с rwxразрешениями для группы usershareко всем файлам, уже находящимся в/media/shared

sudo setfacl -Rm g:usershare:rwX /media/shared

Наконец, мы добавляем ACL по умолчанию с rwxразрешениями для группы usershareдля всех файлов, созданных с этого момента./media/shared

sudo setfacl -d -Rm g:usershare:rwX /media/shared

Теперь все пользователи usershareгруппы имеют полные права на все файлы в разделе /media/shared. Разрешения каждого пользователя в его и других домашних каталогах не затрагиваются.

Я проверил это решение и, кажется, работает, но предложения и исправления приветствуются.

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

enzotib
источник
Я не очень хорошо знаю acl, можете ли вы протестировать и скопировать файл с разрешениями, такими как rw-r - r--, из вашей домашней папки в общую папку и посмотреть, не изменились ли разрешения на rwx по умолчанию для usershareгруппы?
устроить
@arrange: нет, это не работает, как задумано. Собираюсь указать в ответе. Спасибо
энзотиб
Я бы добавил, что /etc/fstab/ remountstep не обязателен, потому что ext4должен быть смонтирован с aclактивным параметром по умолчанию.
энзотиб
8
  1. Сделать папку.

    Например:

    mkdir /mnt/family
    

    Если вам нужно смонтировать раздел к ним ... если ext4, все, что вам нужно, /etc/fstabэто

    UUID=xxx    /mnt/family ext4    **rw,exec,defaults,auto,async   0   2**
    
  2. Создать группу myfam.

    addgroup myfam
    
  3. Добавьте некоторых пользователей в эту группу

    adduser papa myfam  
    adduser mom myfam
    
  4. Теперь возьми и дай разрешение.

    Я думаю, что вы должны начать с изменения umask.

    Стандартные разрешения файловой системы и права доступа в 12.04

    chown -R you.myfam /mnt/family  
    chmod -R g+rwx /mnt/family  
    

    Теперь самое главное. Эта строка создает setgidвсе, что вы создаете в этой папке, чтобы ваши пользователи были владельцем и группой myfam. Это позволило системе переопределить основную группу пользователей.

    chmod -R g+s /mnt/family   
    
Pas_
источник
3

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

Затем измените umask каждого пользователя с 022 на 002, это можно сделать в /etc/profile.

редактировать

Первый шаг можно заменить следующим: сделать всех пользователей принадлежащими к usersгруппе в качестве основной группы.

Edi2

Как предположил @James_Henstridge, может быть удобно установить бит setgid в главном каталоге, чтобы создаваемые новые файлы и каталоги имели свою группу независимо от пользователя. Таким образом, вы можете избежать установки usersв качестве основной группы для пользователей.

enzotib
источник
Возможно, вы захотите отредактировать свой ответ, предложив также установить бит setgid во всех каталогах, /dataчтобы новые файлы наследовали владение группой.
Джеймс Хенстридж
edit3 :) Если вы копируете файл в /dataпапку, разрешения не наследуются, поэтому старые файлы с разрешениями gw не могут быть изменены другими. edit4: установка в usersкачестве основной группы и umask0002 определенно не очень хорошая идея, поскольку любой из этой группы сможет изменить любой из вновь созданных вами файлов.
устроить
@arrange: в отношении вашего edit4 я предложил включать в usersгруппу только тех пользователей, которым разрешен доступ к общему ресурсу. Это был вопрос удобства, для этого можно было бы создать еще одну группу. Что касается вашего edit3, это не правильно, скопированный файл приобретает группу папок.
энзотиб
@enzotib: повторить мою точку зрения другими словами: edit4 - если usersмоя основная группа и в этой группе больше пользователей, то они могут изменять мои файлы даже вне общего каталога; edit3 - я написал разрешения , а не группу папок.
устроить
@arrange: ваша точка зрения верна, я просто написал другой ответ, может быть интересно услышать ваше мнение.
энзотиб
2

Это звучит как работа для ACL. Giles имеет очень тщательный ответ на сайте SE Unix и Linux , которые помогли мне решить ту же самую проблему.

ephsmith
источник
1
Это сработало! Я видел другие ответы, используя ACL, но это единственный, который я видел, который изменяет права не только новых файлов и каталогов, созданных в общем каталоге, но также и тех, которые копируются или перемещаются в него.
ダ ン ボ ー
0

Я не понимаю, все ли linux-linux, linux-windows, linux - ???, используют Samba ?, SSH ?, Pigeons ?; В любом случае вам нужно включить других в группу с вашим именем пользователя (вашей группой), и они получат те же разрешения, что и вы.

juancarlospaco
источник
Это несколько пользователей на одном ПК. Я уверен, что должен быть способ получить разрешения по умолчанию на что-то полезное.
Steevc
0

Я сталкивался с этим вопросом, когда искал ответы на мою проблему РАЗРЕШЕНИЯ ГРУППЫ. Я прочитал вопрос и, кажется, я уже реализую то, что пытается сделать вопрос.

Поэтому я удосужился ответить на него.

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

У меня есть многоцелевой сервер на моей локальной сети, который использует Ubuntu 12.04 LTS Desktop Edition. У меня есть смешанные клиентские машины Linux и Windows.

Вот как я это настроил:

1. На моем сервере у меня есть учетные записи пользователей adminиclientone

adminУчетная запись является учетная запись , созданная , когда я установил убунту и clientoneучетная запись является учетная запись , созданная с помощью USER СЧЕТА меню в убунту. Он имеет только стандартное разрешение, никаких привилегий администратора и добавляется в usersгруппу. Конечно, вы можете сделать это, используя только терминал. Добавьте больше дополнительных учетных записей для ваших клиентских компьютеров.

2. Общий раздел / папка автоматически монтируется в fstab с использованием только опции по умолчанию.

3. Моя сеть находится в рабочей группе и находится в mylanрабочей группе.

Все машины в моей локальной сети настроены на использование mylan рабочей группы.

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

 sudo chown -Rv admin:users /shared

5. Я также рекурсивно устанавливаю права доступа к /sharedпапке и файлу с помощью команды

 sudo chmod -Rv 750 /shared

гостевые машины в моем mylan рабочей группе не имеют доступа к общему ресурсу с помощью chmod 750

вы можете использовать

 sudo chmod -Rv 755 /shared

Все будущие учетные записи пользователей в users группе имеют только разрешение на чтение.

6. На моем клиентском компьютере один (Windows XP) я настраиваю учетную запись пользователя с именем clientone. То же имя пользователя и пароль, что и у созданного на моем сервере Ubuntu. Второй аккаунт с именемclienttwo также создается на сервере Ubuntu, и это та же учетная запись пользователя, которая использовалась на моем втором компьютере (linuxmint 15).

7. На моем клиентском компьютере один после входа в систему с использованием clientoneучетной записи, я иду, чтобы запустить команду, затем введите

 //192.168.10.254/shared

192.168.10.254это ip-адрес моего сервера Ubuntu, /sharedэто папка общего доступа на моем сервере Ubuntu На моем клиентском компьютере два (linuxmint 15) я захожу в Меню> Сеть и в диалоговом окне Местоположение: Я набрал:

 smb://192.168.10.254/shared

Если вас попросили ввести пароль, введите пароль для вашего аккаунта. А также ваш пароль для ключей, если на ваших компьютерах Linux включена функция KEYRING.

Этот работает для меня в моей собственной сети. Мой сервер - это многоцелевой сервер, выполняющий роль сервера squid, сервера xbmc и mediatomb, а также сервера amahi.

Я все еще ищу способы улучшить часть общего доступа к файлам в моей настройке. Указанная выше инструкция не является пуленепробиваемым решением, ее можно попробовать. Я тестирую и пробую ACL ”вместе с автоматическим монтированием общих папок. Поскольку ваши требования к совместному использованию папок усложняются, приведенная выше инструкция не гарантирует вам успеха.

Добавленная информация:

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

Если вам нужны более сложные пользовательские разрешения для разных пользователей, вам нужно использовать ACL.

GaryP
источник
0

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

Джо
источник