WinSCP上传文件出错解决方法

在用WinSCP上传本地文件到/var/www的时候,出现了一个错误:

Permission denied.
Error code: 3
Error message from server: Permission denied

很明显,权限错误。

也就是说,我登陆的这个账号,不能往这个文件夹里面写东西。解决方法也有很多种,无非就是更改权限,或者更改文件归属了。

最暴力的方法:

sudo chmod 777 -R /var/www

其中,-R代表www下的子文件的权限也被更改
或者可以更改文件夹的归属:

sudo chown -R username /var/www/

其中username更改为你登陆WinSCP的用户名即可。

问题是解决了,但是以上方法并不是最好的方法,最好的方法是要根据自己服务器的安全策略,然后给文件夹设定对应的权限,这就涉及到linux的跟权限有关的知识了,这里也整理一下。

文件权限

以以下这个文件为例:

drwxrwxr-x 2 ubuntu ubuntu 4.0K Jul 26 11:58 testdir

一个一个解释。

drwxrwxr-x:有10个字母,第一个字母代表文件的类型,-代表文件,d代表文件夹,l代表链接;剩下9个字母,三个字母分为一组,共有三组。第一组代表文件所有者的相应权限,第二组代表与文件所有者同一组的用户的相应权限,第三组代表其他用户的权限。r代表读权限,w代表写权限,x代表执行权限。

2:代表链接的文件数,有2个。

ubuntu:文件所有者

第二个ubuntu:文件所有者所在组

再后面就是时间和文件名了。

更改文件权限

更改文件权限的基本命令是chmod,这里抛出一个规定,那就是每种权限对应一个数字:r=4,w=2,x=1,所以rwx可以表示为7(4+2+1),rw-可以表示为6(4+2),就是简单的加法。有了这个规定,我们来看命令就很明白了。

chmod 751 abc:赋予abc权限rwxr-x–x

chmod u=rwx,g=rx,o=x abc:同上,u=用户权限,g=组权限,o=不同组其他用户权限

chmod u-x,g+w abc:给abc去除用户执行的权限,增加组写的权限,减号代表去除权限,加号代表增加权限

chmod a+r abc:a代表所有用户,这里是给所有用户添加读的权限

chmod a=rwx abc:这条命令等价于chmod 777 abc

发表评论

电子邮件地址不会被公开。 必填项已用*标注