如何仅授予特定用户访问特定文件夹及其内容的权限?

Vla*_*lov 6 permissions ftp users apache2 chown

我用了

adduser <name>
Run Code Online (Sandbox Code Playgroud)

并创建了一个新用户,andrew。现在,我想给他读/写访问/var/www/sitename.com和它的内容。

我该怎么做?

我试过了,sudo chown andrew /var/www/sitename.com但他仍然能够看到 /var/www 和其他目录下的所有文件夹和文件。

Azk*_*erM 5

将所有权更改为指定用户不会更改passwd文件中指定的用户默认主目录。无论如何,您可以通过不同的方式实现这一点。但是为了让它更简单,请打开一个终端;

首先备份您的/etc/passwd文件,如下所示;

sudo cp /etc/passwd /etc/passwd.back
Run Code Online (Sandbox Code Playgroud)

完成后,编辑文件(使用 vi 或 nano),我更喜欢 nano,这很容易;

sudo EDITOR=nano vipw /etc/passwd
Run Code Online (Sandbox Code Playgroud)

找到创建的用户。一条线应该反映如下假设用户是andrew;

andrew:x:1001:1001:andrew:/home/andrew:/bin/sh
Run Code Online (Sandbox Code Playgroud)

更换/home/andrew/var/www/sitename.com&击中保存文件CTRL+O然后输入保存和再CTRL+X退出。这会将用户定向到指定的目录。以用户身份登录并通过检查是否存在任何权限问题来查看它是否指向 **/var/www/sitename.com。如果权限问题仍然存在,请www-data通过以下操作将用户添加到组中;

sudo adduser andrew www-data
Run Code Online (Sandbox Code Playgroud)

编辑:关于评论,我只是快速搜索并找到了更多细节。好吧,您可以编辑位于目录中的vsftpd.conf文件/etc/

sudo nano /etc/vsftpd.conf
Run Code Online (Sandbox Code Playgroud)

取消注释(仅删除#开头的内容)以下行;

chroot_local_user=YES
Run Code Online (Sandbox Code Playgroud)

注意:为了安全起见,请在对配置文件进行任何更改之前对其进行备份。

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.back
Run Code Online (Sandbox Code Playgroud)

来源: Ubuntu 上的 vsftpd.conf

希望能帮助到你!