LINUX.ORG.RU
ФорумAdmin

SFTP - права доступа для нескольких юзеров

 ,


0

1

В системе (CentOS 7.4) есть 2 юзера user1 и user2. В /etc/passwd:

user1:x:1002:1004::/home/user1:/bin/bash
user2:x:1019:1022::/home/user2:/bin/bash

Когда я логинюсь по SFTP в midnight commander под user2 и пытаюсь скопировать файлы в /home/user1/folder появляется ошибка: Невозможно создать целевой файл. При этом права на folder:

drwxr-xr-x. 7 user1 user1 89 авг 18  2018 folder

Юзеры входят в такие группы:

$ id user1
uid=1002(user1) gid=1004(user1) группы=1004(user1)

user2 входит в группы user2, root и wheel

$ id user2
uid=1019(user2) gid=1022(user2) группы=1022(user2),0(root),10(wheel)

Я пытался добавить user2 в группу user1:

# usermod -a -G user1 user2

и изменил права на folder на

drwxrwxr-x. 7 user1 user1 89 авг 18  2018 folder

но все равно по SFTP файл не копируется в folder - ошибка "-31: Failed opening remote file. Невозможно создать целевой файл" в mc.

Когда я логинюсь по SFTP как user2 файл копируется только если я добавляю права на запись для others:

drwxr-xrwx. 7 user1 user1 89 авг 18  2018 folder

Есть какой-то изящный способ решить проблему, не давая права на запись для other в каталог folder?

Добавить user2 в группу user1 + выставить umask таким, чтоб создавались файлы с правами 664 и папки 775.

iron ★★★★★
()

Тебе нужна общая группа + SGID-бит на каталог.
Ну и вообще устраивать такое в хомяках пользователей - это неправильно, лучше для этого специальную директорию выделить.

bigbit ★★★★★
()
Ответ на: комментарий от bigbit

а можно SGID-бит назначать рекурсивно, т.е. на саму папку folder и все ее подпапки? По поводу расположения в хомяках пользователей - просто предыдущий админ так распределил место для сайтов разных доменов.

gigantischer
() автор топика
Последнее исправление: gigantischer (всего исправлений: 1)
Ответ на: комментарий от iron

а если в папке folder куча подпапок с правами 755 и файлов с правами 644, их нужно после выставления umask вручную менять на 664 и 775 соответственно?

gigantischer
() автор топика
Ответ на: комментарий от bigbit

Сделал общую группу + SGID на каталог, но не копируется файл-та же ошибка в mc: "-31: Failed opening remote file. Невозможно создать целевой файл".

gigantischer
() автор топика
Ответ на: комментарий от gigantischer

Можно конечно, для вновь создаваемых каталогов SGID-бит будет наследоваться автоматиченски.

bigbit ★★★★★
()
Ответ на: комментарий от gigantischer
cd folder
setfacl -R -b .
setfacl -R  -m u:user1:rwx -m u:user2:rwx .
setfacl -dR  -m u:user1:rwx -m u:user2:rwx .

все, оба юзера могут писать в эту папку

Bers666 ★★★★★
()
Ответ на: комментарий от gigantischer

У меня такая схема работает. Проверяй права у пользователя и на директории.
umask пожно зафорсить в sshd_config (sftp-server -u XXX).

bigbit ★★★★★
()
Ответ на: комментарий от Bers666

если у меня много подпапок в этой folder не нужно потом эти команды давать в каждой из них? И на будущее, кстати, как деактивировать этот acl для folder?

gigantischer
() автор топика
Ответ на: комментарий от gigantischer

не нужно, там это устанавливается в текущей и ниже
1я команда это очистка всех acl , рекурсивно
man setfacl

Bers666 ★★★★★
()
Ответ на: комментарий от Bers666

это сработало! оба юзера могут теперь писать, только как-то стрёмновато права поменялись на php файлы - теперь 777 вместо 644.

gigantischer
() автор топика
Последнее исправление: gigantischer (всего исправлений: 1)
Ответ на: комментарий от bigbit

Т.е. я правильно понимаю, что нужно

1. Добавить user2 в группу user1

2. Выставить umask таким, чтоб создавались файлы с правами 664 и папки 775

В sshd_config указав

Subsystem  sftp /usr/libexec/openssh/sftp-server -u 002 

3. Вручную поменять права на файлы и каталоги (664 и 775 соответственно) для файлов и подпапок folder.

4. Рестартануть sshd

gigantischer
() автор топика
Последнее исправление: gigantischer (всего исправлений: 1)
Ответ на: комментарий от gigantischer

Правильно, только ты забыл про SGID-бит. Без него вновь создаваемые файлы и директории будут принадлежать первичной группе пользователя.

bigbit ★★★★★
()
Последнее исправление: bigbit (всего исправлений: 1)
Ответ на: комментарий от Bers666

например? можно указывать команду setfacl, не указывая права доступа? т.е. оставить текущие, но чтобы при этом обы юзера могли писать в каталог...

gigantischer
() автор топика
Ответ на: комментарий от gigantischer

то, что ты видишь по ls -la, игнорируй. Не смотри туда просто.
Теперь твоя команда getfacl.

Bers666 ★★★★★
()
Ответ на: комментарий от gigantischer

Попробовал так:

1. Добавил user2 в группу user1

2. SGID-бит на каталог. # chmod g+s folder

3. Выставил umask

В sshd_config указав Subsystem sftp /usr/libexec/openssh/sftp-server -u 002

(пробовал и 0002 - также не заработало)

4. Рестартанул sshd

Не помогло - ошибка та же: "-31: Failed opening remote file. Невозможно создать целевой файл".

gigantischer
() автор топика
Ответ на: комментарий от gigantischer

а если добавить

# chmod g+w folder

то файл копируется по SFTP, при этом с правами

-rw-r--r-- 1 user2 user1 305 май  3 09:37 newfile.txt

А можно сделать, чтобы при копировании файла права выставлялись

-rw-r--r-- 1 user1 user1 305 май  3 09:37 newfile.txt
?

gigantischer
() автор топика
Ответ на: комментарий от gigantischer

я такого не находил, если только будешь вручную скрипт запускать, который будет права менять раз в минуту к примеру, но это имбо костыль, проще создать еще одного юзера, который будет Owner-ом в обоих дирах, а Group присвоить нужные права (если использовать SGID).

sanekmihailow
()
Ответ на: комментарий от gigantischer

и если юзерам нужен только ftp, то бишь без коммандной строки, то проще поставить ftp демон, например vsftpd, там с правами все в норме.

sanekmihailow
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.