GNU/Linux >> Linux の 問題 >  >> Linux

他のユーザーのファイルにグループ権限を付与しますか?

私はDebian7を使用しており、次のようなhtdocsディレクトリを持つ新しいユーザー(Webサイト)を作成しました:

$ sudo adduser website
$ sudo mkdir -p /home/website/htdocs
$ sudo chown -R website /home/website

次に、別のグループのユーザー(開発者)がユーザーのディレクトリにアクセスできるようにします。私が試した:

$ sudo chown -R :developers /home/website

グループが割り当てられていることがわかります(ls -laを使用) またはstat )そして、ユーザーはグループに含まれていますが、アクセス権がありませんか?

drwxr-xr-x     3     website     developers     4096 May 3 09:09     website

私もしたい:

  • 別のグループ、「請負業者」によるWebサイトファイルへのアクセスを許可する

  • Webサイトユーザーのホームディレクトリへのアクセスのみを制限する

  • 新しいWebサイトファイルがこれらのアクセス許可を継承していることを確認してください

アクセス制御リストを使用する必要がありますか?それとも、これを行うためのより良い方法がありますか(サイトごとに個別のユーザーを使用しないなど)?

承認された回答:

O / Sまたは分布を知らずに、正確なコマンドを与えることは困難です。はい! ACLは機能しますが、標準的な方法もあります。

adduserがあります およびuseradd 、ディストリビューションのそれらの1つは、ユーザーのホームディレクトリを自動的に作成する場合があります。その場合、/etc/skel/の内容 ディレクトリはユーザーのホームディレクトリにコピーされ、権限が設定され、おそらく他の適切なアクションが実行される可能性があります。

「スタッフ」など、共有用に事前定義されたグループが存在する場合があります。ただし、共有する独自のグループを作成する場合は、問題はありません。したがって、新しいグループを作成するか、既存のグループを使用します。グループのメンバーになるユーザーがusermodでそのように定義されていることを確認してください 、moduser 、またはvigr おそらく、オペレーティングシステムによると。現在ログインしている各ユーザーは、新しいグループのメンバーになるために、ログアウトしてから再度ログインする必要があります。

/home/share_directory/など、すべてのユーザーに共通のディレクトリを作成します または、状況に最も適したその他のディレクトリ。関連するベストプラクティスは、のディレクトリを使用しないことです。 任意のユーザーのホームディレクトリ。所有者とグループ以外の誰もディレクトリ内のファイルを表示できない場合は、ディレクトリのアクセス許可を0770に変更します。「others」が読み取りに問題がない場合は、0775を使用します。ディレクトリの所有者はほぼ確実にrootである必要があります。

chown root:group_name /home/share_directory/

次に、setuidビットを変更します。

chmod +s /home/share_directory/

他のユーザーのファイルを変更できるユーザーがいない場合は、スティックビットも設定します。

chmod +t /home/share_directory/

これらの例では、8進表記を使用してsetuidビットとstickyビットの両方を同時に設定します。

chmod 5775 /home/share_directory/

または

chmod 5770 /home/share_directory/

更新された質問については、ACLが適切なツールであるように思われます。現在、ほとんどのLinuxディストリビューションにはaclが含まれています defaultsのオプション オプション。ディストリビューションにaclが含まれていない場合 デフォルトのオプションの場合、使用を開始するにはこの少しの作業が必要です。まず、aclを使用してファイルシステムをマウントします / etc/fstabのオプション。

sudo vim /etc/fstab
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults,acl 0 1

必要に応じて、ファイルシステムを再マウントします。sudo mount -o remount,acl / 。次に、この目的のためにユーザーが所属できるグループを作成します。 ACLツールもインストールする必要がある場合があります:apt-get install acl

sudo groupadd developers
sudo usermod -a -G developers $username

(または、グループが「請負業者」である可能性があります。)現在ログインしているユーザーは、新しいグループのメンバーになるために、ログアウトしてから再度ログインする必要があります。もちろん、/ var / wwwディレクトリに保持したいコンテンツがある場合は、これを行わないでください。開始するための設定を説明するためだけに使用してください。

sudo rm -rf /var/www
sudo mkdir -p /var/www/public
sudo chown -R root:developers /var/www/public
sudo chmod 0775 /var/www/public
sudo chmod g+s /var/www/public
sudo setfacl -d -m u::rwx,g::rwx,o::r-x /var/www/public
sudo setfacl -m u::rwx,g::rwx,o::r-x /var/www/public
sudo setfacl -d -m u::rwx,g:contractors:rwx,o::r-x /var/www/public
sudo setfacl -m u::rwx,g:contractors:rwx,o::r-x /var/www/public

上記、setfaclの違い コマンドは次のとおりです。最初のインスタンスはデフォルトのグループ(ディレクトリのグループ所有者)を使用し、2番目のインスタンスはグループを明示的に指定します。 -d スイッチはデフォルトのマスクを確立します(-m )ディレクトリ内のすべての新しいファイルシステムオブジェクト。ただし、-dを使用せずにコマンドを再実行する必要もあります。 ACLをディレクトリ自体に適用するように切り替えます。次に、構成ファイルで「/ var/www」への参照を「/var/ www/public」に置き換えてリロードします。

sudo vim /etc/apache2/sites-enabled/000-default
sudo /etc/init.d/apache2 reload

ファイルを作成したユーザー以外のすべてからの削除と名前変更を制限したい場合:sudo chmod +t /var/www/public 。このように、Apacheドキュメントルートの外部に存在するフレームワークのディレクトリを作成したり、サーバーで書き込み可能なディレクトリを作成したりする場合でも、簡単です。

関連:Debian – 32ビット(x86)のDebianベースのシステムを64ビットに変換する方法は?

Apacheで書き込み可能なログディレクトリ:

sudo mkdir /var/www/logs
sudo chgrp www-data /var/www/logs
sudo chmod 0770 /var/www/logs

Apacheで読み取り可能なライブラリディレクトリ:

sudo mkdir /var/www/lib
sudo chgrp www-data /var/www/logs
sudo chmod 0750 /var/www/logs

関係のないディレクトリでのちょっとした「遊び」は、これをあなたの状況にぴったりと合わせるのに役立つはずです。

制限については、シェル、rsshという2つの異なるアプローチを使用します。 、SCP / SFTPアクセスを提供するために作成されましたが、SSHアクセスは提供されません。または、使用をホームディレクトリに制限するには、/etc/ssh/sshd_configで構成されたinternal-sftpサブシステムを使用できます。 。

Subsystem sftp internal-sftp

Match group sftponly
  ChrootDirectory /home/%u
  X11Forwarding no
  AllowTcpForwarding no
  ForceCommand internal-sftp

たとえば、sftponlyという名前のグループを作成します。ユーザーをsftponlyグループのメンバーにします。ホームディレクトリを/に変更します chrootのため。ディレクトリ/home/ usernameは、rootが所有している必要があります。ユーザーのシェルを/bin/ falseに設定して、SSHアクセスを防ぐこともできます。ほとんどの場合、インタラクティブアクセスが心配なので、通常はrsshを使用します。 道。 (私が書き込み能力を定義した場所を除いて、どこにも書き込むことはできません。)


Linux
  1. Linuxでsudoを使用して権限を委任する

  2. ディレクトリ内のすべての新しいファイルをグループからアクセスできるようにしますか?

  3. Linux –ディレクトリ内のすべてのフォルダ/ファイルにデフォルトのファイル権限を設定するにはどうすればよいですか?

  1. Linuxでグループ権限を継承するための新しいファイルを取得しますか?

  2. Linux –サーバー上の共有ディレクトリのアクセス許可の問題?

  3. SeedboxからのRsync後にファイルに新しいアクセス許可を強制しますか?

  1. ファイルがアクセス許可を失う原因は何ですか?

  2. CentOS での Laravel のアクセス許可の問題

  3. 特定のディレクトリ内に作成されたファイルのグループと権限を強制するにはどうすればよいですか?