web-dev-qa-db-ja.com

ユーザーを1つのディレクトリにロックする方法

私は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でユーザーをセットアップすると、コンピューター全体のほとんどのファイルを読み取り、アクセスし、編集できます。これはnotです

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
maxisme

まさに私はこれを整理しようとして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
maxisme

質問を正しく理解したら、local_rootを使用する必要があります

local_root=/NAS/$USER/

そして、あなたも必要になります

allow_writeable_chroot=YES

ユーザーにルートフォルダーへの書き込みを許可する場合

または、さらに制御したい場合は、おそらく仮想ユーザーとユーザー構成ファイルを使用することになるでしょう。

もしそうなら、次を試してください

特定のサブディレクトリへのアクセス権を持つvsftpdの仮想ユーザーを設定する方法?

0
Avenyet

使用してみてください

useradd -g $group $user

または

useradd -N -g $group $user

の代わりに

useradd -G $group $user

その理由:from buntu.com:Ubuntu Manpage:useradd-新しいユーザーを作成するか、デフォルトの新しいユーザー情報を更新する

-g、-gid GROUPユーザーの初期ログイングループのグループ名または番号。グループ名が存在する必要があります。グループ番号は、既存のグループを参照する必要があります。

指定しない場合、useraddの動作は/etc/login.defsのUSERGROUPS_ENAB変数に依存します。この変数がyesに設定されている場合(またはコマンドラインで-U /-user-groupが指定されている場合)、ユーザーのログイン名と同じ名前でグループが作成されます 。変数がnoに設定されている場合(またはコマンドラインで-N /-no-user-groupが指定されている場合)、useraddは/ etc/defaultのGROUP変数で指定された値に新しいユーザーのプライマリグループを設定します/ useradd、またはデフォルトで100。

-N、-no-user-groupユーザーと同じ名前のグループを作成せず、-gオプションまたはGROUP変数で指定されたグループにユーザーを追加します/ etc/default/useraddにあります。

デフォルトの動作(-g、-N、および-Uオプションが指定されていない場合)は、/ etc/login.defsのUSERGROUPS_ENAB変数によって定義されます。

起こるのは、作成されたユーザーが実際に2つの異なるグループに所属することになります。デフォルトグループは、-g(おそらく複数のディレクトリに対する読み取り/書き込み権限がある)とuseradd -G $group $userで指定されたグループを省略することで作成されます

0
kos