Como bloquear o usuário em um diretório

3

Eu construí alguns Hosts Virtuais usando o nginx, mas agora eu quero que alguns usuários os modifiquem sem que eles possam editar qualquer outra coisa fora do diretório do host.

Eu tentei muitas coisas, mas nada está funcionando !! Aqui é onde eu estou no momento:

/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

script de shell para criar um usuário:

#!/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

Mas nada disso está funcionando. Quando eu configuro o usuário no dreamweaver eles podem ler, acessar e editar a maioria dos arquivos em todo o computador, o que é não o que eu quero!

Oqueestoufazendodeerrado?

/etc/group:

root:x:0:daemon:x:1:bin:x:2:sys:x:3:adm:x:4:syslog,maxtty: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:maxfloppy:x:25:tape:x:26:sudo:x:27:maxaudio:x:29:pulsedip:x:30:maxwww-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:maxsasl:x:45:plugdev:x:46:maxstaff: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:maxscanner:x:109:sanedmlocate: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:maxlandscape:x:118:maxy:x:1001:maxWeb,www-datamaxWeb:x:1002:maxy2:x:1003:maxWeb2maxWeb2:x:1004:fax:x:21:voice:x:22:cdrom:x:24:maxfloppy:x:25:tape:x:26:sudo:x:27:maxaudio:x:29:pulsedip:x:30:maxwww-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:maxstaff: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:maxscanner:x:109:sanedmlocate: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:maxlandscape:x:118:maxy:x:1001:maxWeb,www-datamaxWeb:x:1002:maxy2:x:1003:maxWeb2maxWeb2:x:1004:maxy3:x:1005:maxWeb3maxWeb3:x:1006:maxy4:x:1007:maxWeb4maxWeb4:x:1008:sftponly:x:1009:maxWeb7ssh-users:x:1010:maxmaxWeb7:x:1011:maxWebb:x:1012:sftp:x:1013:ftpGroup:x:1014:maxwebb2,maxy1maxwebb2:x:1015:maxy1:x:1016:ftp:x:125:maximiliangroup:x:1017:maxymilmaxymil:x:1018:maximiliangroup:x:1017:maxymilmaxymil:x:1018:maximilianmitchell.info:x:1019:maxwebsite,www-datamaxwebsite:x:1020:maximilianweb:x:1021:www-datamaximilianweb2:x:1022:www-datamaximilianweb4:x:1023:www-data,maxwebsite4maxwebsite5:x:1024:www-data

Logincomonovousuário:

$su-maxwebsite5Password:$lspublic_html$cd/home$cdmax$mkdirtestmkdir:cannotcreatedirectory‘test’:Permissiondenied

QuandoeufizerloginusandooDreamweaveredefinirodiretórioraizcomo/,possovereeditaramaioriadascoisas,incluindooutrosdiretóriosdehostsvirtuais:

Onde, quando eu defino o diretório raiz como nada, ele me leva direto para o /NAS/$directory/ , que é o que eu quero!

Mas eu realmente só quero que o usuário pense que o diretório / é /NAS/$directory/

    
por maxisme 17.03.2015 / 02:21

3 respostas

0

Certo, passei 3 ou 4 dias tentando resolver isso. Aqui está um script de shell para um usuário:

#!/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

Você também precisa fazer o download do pacote rssh e editar o /etc/rssh.conf e descomentar a linha allowsftp

    
por maxisme 18.03.2015 / 23:05
0

Tente usar

useradd -g $group $user

ou

useradd -N -g $group $user

em vez de

useradd -G $group $user

Veja por que: de Ubuntu.com: Ubuntu Manpage: useradd - crie um novo usuário ou atualize informações padrão do novo usuário :

% bl0ck_qu0te%

Acredito que o que acontece é que qualquer usuário criado acaba pertencendo a dois grupos diferentes, o padrão criado omitindo -g (que talvez tenha permissões de leitura / gravação em vários diretórios) e o especificado por useradd -G $group $user

    
por kos 17.03.2015 / 03:24
0

Se eu entendi a pergunta corretamente, você precisa usar local_root

local_root=/NAS/$USER/

e você também precisará

allow_writeable_chroot=YES

se você deseja que o usuário possa gravar em sua pasta raiz

ou se você deseja ter mais controle, provavelmente você usaria os usuários virtuais e os arquivos de configuração do usuário.

se sim, tente o seguinte

Como configurar usuários virtuais para o vsftpd com acesso a um sub-diretório específico?

    
por Avenyet 09.04.2015 / 13:00