使用pscp并获得权限被拒绝

Esp*_*pen 20 permissions ubuntu sudo putty

我正在使用pscp使用此命令将文件传输到虚拟ubuntu服务器:

pscp test.php user@server:/var/www/test.php
Run Code Online (Sandbox Code Playgroud)

我得到了错误权限被拒绝.如果我尝试转移到文件夹/ home/user /我没有问题.

我想这与我正在使用的用户无法访问文件夹/ var/www /有关.当我使用SSH时,我必须使用sudo来访问/ var/www/path - 我这样做.

是否可以指定pscp应该"sudo"传输到服务器,以便我可以访问/ var/www/path并实际上能够将文件传输到此文件夹?

Roe*_*ans 16

如果您拥有服务器:

将自己添加到www-data组:

sudo usermod -a -G www-data <username>
Run Code Online (Sandbox Code Playgroud)

并设置正确的权限:

sudo chown -R www-data:www-data /var/www/
sudo chmod -R 0775 /var/www/
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题.

  • "-a"需要在"-G"之前,否则我会收到"未找到组"错误 (4认同)
  • `sudo usermod -a -G www-data <username>` worked for me (3认同)
  • 我要记下某些文件夹的当前所有者,因为执行上述操作破坏了我的网站之一。我知道这是我自己的错,但是我不得不更改所有权,因为我将ruby / rails / rvm配置为使用单独的一组用户名。 (2认同)

小智 9

你写的时要注意以下几点

sudo usermod -G www-data <username>
Run Code Online (Sandbox Code Playgroud)

选项-G将使指定的user()成为指定的特定组的成员.因此,上述语句将使用户成为组www-data的一部分,但是将用户从用户所属的任何其他组中删除.要避免这种情况,您必须添加选项-a或指定您希望用户参与的所有当前组.我意外地将用户"管理员"从sudo组中删除,因为我不知道这一点.因此,如果您希望指定的用户保留其当前的组成员身份,请编写以下命令.

sudo usermod -G -a www-data <username>
Run Code Online (Sandbox Code Playgroud)

有关usermod命令的更多信息,请访问:

Ubuntu联机帮助页 - usermod