Дайте разрешения на запись нескольким пользователям в папке в Ubuntu

Есть папка, которая принадлежит пользователю tomcat6:

drwxr-xr-x 2 tomcat6 tomcat6 69632 2011-05-06 03:43 document

Я хочу разрешить другому пользователю (русеру) права на запись в папку документов. Два пользователя (tomcat6 и ruser) не принадлежат к одной группе. Я пытался использовать setfacl:

sudo setfacl -m  u:ruser:rwx document

но это дает мне setfacl: document: Operation not supported ошибка. Пожалуйста, помогите мне.

3 ответа

Решение

Есть два способа сделать это: установить каталог для записи "world" или создать новую группу для двух пользователей и сделать каталог доступным для записи в эту группу.

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

Пользователи в Linux могут принадлежать более чем одной группе. В этом случае вы хотите создать новую группу, давайте назовем это tomandruser:

sudo groupadd tomandruser

Теперь, когда группа существует, добавьте в нее двух пользователей:

sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser

Теперь осталось только установить разрешения для каталога:

sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory

Теперь только члены группы tomandruser могут читать, записывать или выполнять что-либо в каталоге. Обратите внимание на аргумент -R для команд chmod и chgrp: он указывает им входить в каждый подкаталог целевого каталога и изменять каждый найденный файл и каталог.

Вы также можете изменить 770 на что-то вроде 774 если вы хотите, чтобы другие могли читать файлы, 775 если вы хотите, чтобы другие читали и выполняли файлы и т. д. Изменения в назначениях групп не вступят в силу до тех пор, пока пользователи не выйдут из системы и не войдут обратно.

Если вы также хотите (вы, вероятно, хотите), чтобы новые файлы, созданные внутри каталога одним из пользователей, автоматически записывались другими участниками группы, см. Здесь.

Пример сценария показывает пример, чтобы дать w (write)/ r (read) / x (execute) разрешение на заданный путь к папке /path/to/the/directory за USER1 а также USER2, Если вы хотите дать только право на запись, пожалуйста, замените rwx с w,


#!/bin/bash

# Block others and people in the same group to do read/write/execute on give folder:    
sudo chmod 700 /path/to/the/directory 

#Give read/write/execute access to USER1 on give folder:
sudo setfacl -R -m user:USER1:rwx  /path/to/the/directory 

#Give read/write/execute access to USER2 on give folder:
sudo setfacl -R -m user:USER2:rwx  /path/to/the/directory 

Мненный ответ:

  • Мне нравится размещать общую папку в центральном месте. Не в чужой домашней папке, а/srv/commonили даже (для безжалостно коротких путей...)/repoили похожие.
  • определите новую группу (обычно для всех локальных пользователей, к которым вы хотите присоединиться. Однако не некоторые технические пользователи любятwwwuser, если нет веской причины)
  • rootхорошо иметь в качестве участника, а также иметь нейтрального владельца этой общей папки
  • setGid очень важен, так как новые файлы становятся общими членами группы, таким образомfrank:common, нетfrank:frank
          sudo groupadd -f common
    usermod -aG common root
    usermod -aG common frank
    usermod -aG common mike

    # sort of hack for instant group refresh w/o logout
    # superuser.com/a/345051
    su - frank

    # sanity test1:
    cat etc/group | grep common
        common:x:1008:root,frank,mike
    # sanity test2:
    groups
        frank adm cdrom ... common
    sudo chown root:common /repo

    # (if you have shareable stuff setting somewhere else,
    #  copy it to here now)

    # no right to the world, the right rights to user and group
    chmod -R ug+rwXs,o-rwx $dest
    # why uppercase X ? → unix.stackexchange.com/a/416885

    # why s ? → superuser.com/a/277785
    # as there is no such thing as an uppercase S (directories only)
    # settings the s attribute on preexisting content would have to happen
    # like so:
    # find /repo -type d -exec chmod g+s {} \\\;
Другие вопросы по тегам