Centos / Linuxインストールでのみ特定の/ dir /アクセスを持つFTPユーザーを作成する方法


44

だから私はVPS-CentOS Linuxインストールにいます。サーバーにvsFTPdがあります。現在、ルートユーザーを介してサーバーへのSFTPアクセスを持っていますが、サーバー上の特定のディレクトリのみへのFTPアクセスを使用して新しいユーザーを作成しようとしています。

1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com

私がやろうとしているのは、アクセス権のみを持つユーザーを作成することです /var/www/mydomain.com -ユーザーは正しいフォルダーに正しくログインしますが、ユーザーは他のディレクトリに「戻る」ことができます。ユーザーが特定のフォルダにとどまり、「参照」できないようにしてください

何か案は?

chrootingに関するさまざまな記事を見つけましたが、上記の手順でそれを使用することがわかりませんでした。


digitalocean.com/community/tutorials / ...これに従って問題を解決できます
ジャック

Ubuntu 18を使用している場合は、ここにバージョン固有のdigitalocean.com/community/tutorials/
Dung

回答:


39

とても簡単です。

vsftpd.confファイルに次のオプションを追加する必要があります

chroot_local_user=YES

構成ファイル内のドキュメントは一目瞭然です。

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().

つまり、ユーザーは、ユーザーのHOMEとして設定したフォルダーにアクセスするだけです。以下に、ユーザーpasswdエントリの例を示します。

upload_ftp:x:1001:1001::/var/www/sites/:/bin/bash

次のコマンドでユーザーのホームディレクトリを設定します

usermod -d /var/www/my.domain.example/ exampleuser

注:私の例では、このユーザーはLinux内のいくつかのスケジュールされたタスクの有効なユーザーでもあります。この必要がない場合は、ユーザーのシェルをの/sbin/nologin代わりに変更してくださいbash


こんにちはnwildner!これについて私に答えてくれてありがとう。そのため、vsftpd.confファイルに次の行「chroot_local_user = YES」を追加しました。理解したように、ユーザーに表示する行に似た行を追加する必要がありますか?あなたが提供する例で何を書くべきか完全にはわからないimを認めなければなりません。「1001」などは何ですか?私のユーザーが「im_a_linux_noob」と呼ばれ、そのユーザーのディレクトリが「/var/www/mydomain.com」であると仮定しましょう-どのように見えるでしょうか?
user1231561

そして、私の投稿で行ったことの追加ステップなしでこれを行うことができますか?それで、1-8をしてから、あなたが説明するものを追加することで、トリックを行うべきでしょうか?
user1231561

こんにちは。上記の例は、/etc/passwdupload_ftpと呼ばれるユーザーを表すファイルの(もちろん変更された)行です。1001:1001はユーザーIDとグループID、/ var / www / sitesはユーザーのホームディレクトリです(そしてvsftpdが読み取るパラメーター)および/ bin / bash、シェル。おそらくあなたのケースに欠けているのはユーザーのホームディレクトリであり、次のコマンドで解決できますusermod -d /var/www/mydomain.com <username>。乾杯:)

3
どうもありがとう。しかし、1つの問題。通常のFTPを介して正常にログインできますが、SFTPとしてログインすると、再度参照できます。
user1231561

1
確かに、sftpはftpサーバーではなくsshサーバーによって処理されているためです。「粗雑な」方法で:SFTP = SSH + FTP; FTPS = FTP + SSL。ここにsftpについてのスレッドがあり、主題の複製を避けるために引用しますか?;) unix.stackexchange.com/a/64541/34720

6

含むように構成を変更した後 chroot_local_user=YES

ユーザーのシェルをに変更して/usr/sbin/nologin、パスワードが漏洩した場合にリスクを軽減できるようにすることができます(ホームディレクトリも設定します)。シェルもリストする必要があります/etc/shells。そうしないと、認証が失敗します。

usermod -d /var/www/my.domain.example -s / usr / sbin / nologin exampleuser

-d、--home HOME_DIRユーザーの新しいログインディレクトリ。-mオプションを指定すると、現在のホームディレクトリの内容が新しいホームディレクトリに移動されます。新しいホームディレクトリが存在しない場合は作成されます。

-s、-shell SHELLユーザーの新しいログインシェルの名前。このフィールドを空白に設定すると、システムはデフォルトのログインシェルを選択します。

https://security.appspot.com/vsftpd/FAQ.txt


4

以下に、ユーザーを設定し、FTPを介してのみ(SSHを使用しない)ユーザーアクセスを許可し、proftpd上の特定の(ユーザーホーム)ディレクトリへのアクセスを制限する手順を示します。

  1. 新しいユーザーを追加: adduser newusername

  2. パスワードを設定してください: passwd newusername

  3. ユーザーのホームディレクトリをデフォルトから新しいフォルダーに変更します。

    usermod -d /target/directory username

  4. shellsファイルを編集:最後にvi /etc/shells追加/dev/null

  5. ファイルnewusername内のエントリを変更しpasswdます。エントリが次のようになるように、前vi /etc/passwdに追加します。/./newusername

    newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null

    手順4と5の詳細はこちら:

  6. /etc/proftpd/proftpd.confファイルを編集し、行のコメントを解除しますDefaultRoot ~



-4

次のコマンドを実行します:

useradd -d ftp_user:chown 711 /etc/init.d/

2
投稿を拡張して、少なくともいくつかの役立つ説明やドキュメントを作成することを検討してください。
HalosGhost 14年

これはひどい答えです。あなたは本質的にftpユーザーに/etc/init.d/ディレクトリへのフルアクセスを与えています-完全な狂気。711を説明- permissions-calculator.org/decode/0711
ティッシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.