私は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です
私は何を間違えていますか?
/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を使用してログインし、ルートディレクトリを/
他の仮想ホストディレクトリを含むほとんどのものを表示および編集できます。
ルートディレクトリを何も設定しないと、/NAS/$directory/
これは私が欲しいものの一種です!
しかし、ユーザーに/
ディレクトリは/NAS/$directory/
まさに私はこれを整理しようとして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
行のコメントを外します
質問を正しく理解したら、local_root
を使用する必要があります
local_root=/NAS/$USER/
そして、あなたも必要になります
allow_writeable_chroot=YES
ユーザーにルートフォルダーへの書き込みを許可する場合
または、さらに制御したい場合は、おそらく仮想ユーザーとユーザー構成ファイルを使用することになるでしょう。
もしそうなら、次を試してください
使用してみてください
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
で指定されたグループを省略することで作成されます