Как заблокировать пользователя в одном каталоге

Я построил несколько виртуальных хостов, используя nginx, но теперь я хочу, чтобы некоторые пользователи могли изменять их, не позволяя им редактировать что-либо еще вне каталога хоста.


Я пробовал так много вещей, но ничего не получается !! Вот где я сейчас нахожусь:

/etc/vsftpd.conf:

listen=YES
local_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
tpd_banner=Welcome to mikes company sFTP service. Play nice!
chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

сценарий оболочки для создания пользователя:

#!/bin/bash
user=$1
group=$2
directory=$3
if [ "$3" != "" ]; then
echo "You are creating an ftp user -> "$user" inside the group -> "$group" with privelidges for the domain "$directory
else
echo "ERROR!!!"
echo "please enter the command followed by the user and then group and then domain (example.co.uk)"
exit 1
fi

groupadd $group
useradd -G $group $user
sudo chown -vR :$group /NAS/$directory/
sudo chmod -vR g+w /NAS/$directory/
sudo adduser www-data $group
sudo chown -R www-data:$group /NAS/$directory/

usermod --home /NAS/$directory/ $user

passwd $user

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

enter image description here

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


/etc/group:

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,max
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:max
floppy:x:25:
tape:x:26:
sudo:x:27:max
audio:x:29:pulse
dip:x:30:max
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:max
sasl:x:45:
plugdev:x:46:max
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
libuuid:x:101:
netdev:x:102:
crontab:x:103:
syslog:x:104:
fuse:x:105:
messagebus:x:106:
ssl-cert:x:107:
lpadmin:x:108:max
scanner:x:109:saned
mlocate:x:110:
ssh:x:111:
utempter:x:112:
avahi-autoipd:x:113:
rtkit:x:114:
saned:x:115:
whoopsie:x:116:
avahi:x:117:
nopasswdlogin:x:119:
bluetooth:x:120:
colord:x:121:
pulse:x:122:
pulse-access:x:123:
max:x:1000:
sambashare:x:124:max
landscape:x:118:
maxy:x:1001:maxWeb,www-data
maxWeb:x:1002:
maxy2:x:1003:maxWeb2
maxWeb2:x:1004:
fax:x:21:
voice:x:22:
cdrom:x:24:max
floppy:x:25:
tape:x:26:
sudo:x:27:max
audio:x:29:pulse
dip:x:30:max
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:max
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
libuuid:x:101:
netdev:x:102:
crontab:x:103:
syslog:x:104:
fuse:x:105:
messagebus:x:106:
ssl-cert:x:107:
lpadmin:x:108:max
scanner:x:109:saned
mlocate:x:110:
ssh:x:111:
mlocate:x:110:
ssh:x:111:
utempter:x:112:
avahi-autoipd:x:113:
rtkit:x:114:
saned:x:115:
whoopsie:x:116:
avahi:x:117:
nopasswdlogin:x:119:
bluetooth:x:120:
colord:x:121:
pulse:x:122:
pulse-access:x:123:
max:x:1000:
sambashare:x:124:max
landscape:x:118:
maxy:x:1001:maxWeb,www-data
maxWeb:x:1002:
maxy2:x:1003:maxWeb2
maxWeb2:x:1004:
maxy3:x:1005:maxWeb3
maxWeb3:x:1006:
maxy4:x:1007:maxWeb4
maxWeb4:x:1008:
sftponly:x:1009:maxWeb7
ssh-users:x:1010:max
maxWeb7:x:1011:
maxWebb:x:1012:
sftp:x:1013:
ftpGroup:x:1014:maxwebb2,maxy1
maxwebb2:x:1015:
maxy1:x:1016:
ftp:x:125:
maximiliangroup:x:1017:maxymil
maxymil:x:1018:
maximiliangroup:x:1017:maxymil
maxymil:x:1018:
maximilianmitchell.info:x:1019:maxwebsite,www-data
maxwebsite:x:1020:
maximilianweb:x:1021:www-data
maximilianweb2:x:1022:www-data
maximilianweb4:x:1023:www-data,maxwebsite4
maxwebsite5:x:1024:www-data

Вход в систему как новый пользователь:

$ su - maxwebsite5
Password: 
$ ls
public_html
$ cd /home
$ cd max
$ mkdir test
mkdir: cannot create directory ‘test’: Permission denied

Когда я вхожу при использовании dreamweaver и установке корневого каталога как / я могу видеть и редактировать большинство вещей, включая каталоги других виртуальных хостов: enter image description here

Где, когда я устанавливаю корневой каталог как ничто, мне это не нужно прямо к /NAS/$directory/, что-то вроде того, что я хочу!

Но я действительно хочу, чтобы пользователь подумал, что его каталог / - /NAS/$directory/

3
задан 18 March 2015 в 04:04

3 ответа

Право я провел 3 или 4 дня, пытаясь уладить это. Вот сценарий оболочки для пользователя:

#!/bin/bash
user=$1
directory=$2
if [ "$2" != "" ]; then
echo "You are creating an ftp user -> "$user" with privelidges for the domain "$directory
else
echo "ERROR!!!"
echo "please enter the command followed by the user and then domain (example.co.uk)"
exit 1
fi

sudo useradd -d /NAS/$directory -m $user -s /usr/bin/rssh

passwd $user

echo "added user"

sudo chgrp -R www-data /NAS/$directory

echo $user >> /etc/ftpusers

echo "prevented ftp access for user"

echo -e "

Match user $user
        ChrootDirectory /NAS/$directory
        ForceCommand internal-sftp
        AllowTcpForwarding no
        GatewayPorts no
        X11Forwarding no
" >> /etc/ssh/sshd_config

echo "edited /etc/ssh/sshd_config"

sudo service ssh restart

также необходимо загрузить пакет rssh и отредактировать /etc/rssh.conf и не прокомментировать строку allowsftp

0
ответ дан 18 March 2015 в 04:04

Если я понимаю вопрос правильно, необходимо использовать local_root

local_root=/NAS/$USER/

, и Вам также будет нужно

allow_writeable_chroot=YES

, если Вы хотите, чтобы пользователь был в состоянии записать в их корневую папку

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

раз так тогда пробуют следующий

, Как установить виртуальных пользователей для vsftpd с доступом к определенному подкаталогу?

0
ответ дан 18 March 2015 в 04:04

Попытайтесь использовать

useradd -g $group $user

, или

useradd -N -g $group $user

вместо

useradd -G $group $user

Вот то, почему: от Ubuntu.com: Страница справочника Ubuntu: useradd - создают нового пользователя или значение по умолчанию обновления новая информация о пользователе :

г, - ГРУППА ценуроза название группы или количество начальной группы входа в систему пользователя. Название группы должно существовать. Число группы должно относиться к уже существующей группе.

, Если не определенный, поведение useradd будет зависеть от переменной USERGROUPS_ENAB в/etc/login.defs. Если эта переменная установлена на да (или-U/-группа пользователей определяется на командной строке), группа будет создана для пользователя с тем же именем как ее loginname. Если переменная будет установлена на не (или-N/-без групп пользователей определяется на командной строке), то useradd установит основную группу нового пользователя к значению, определенному переменной ГРУППЫ в/etc/default/useradd, или 100 по умолчанию.

Н, - без групп пользователей не создают группу с тем же именем как пользователь, но добавляют пользователя к группе, определенной-g опцией или переменной ГРУППЫ в/etc/default/useradd.

поведение по умолчанию (если-g,-N, и-U опции не определяются) определяется переменной USERGROUPS_ENAB в/etc/login.defs.

я полагаю, что то, что происходит, - то, что любой пользователь создал, на самом деле заканчивает тем, что принадлежал двум различным группам, значение по умолчанию один созданный путем исключения -g (который, возможно, имеет полномочия чтения-записи на нескольких каталогах), и тот, определенный useradd -G $group $user

0
ответ дан 18 March 2015 в 04:04

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

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