linux记录用户连接的文件夹,记坑爹的Linux服务器设置用户权限用sftp访问固定文件夹...

#新增用户

useradd username

#设置密码

passwd username

#连续输两次密码完成用户设置

#删除用户

userdel username

#删除用户及删除创建的文件夹

userdel -r username

#查看用户是否添加

tail /etc/passwd

#修改sshd_config文件,建议先备份

cp sshd_config sshd_config.back // 备份

#使用vi进入文件修改

vi /etc/ssh/sshd_config

#enter进入后,按I键,insert插入

#找到下面这行,前面加上#号,注释掉

#Subsystem sftp /usr/libexec/openssh/sftp-server

#在文件的最下方加入以下代码

Subsystem sftp internal-sftp

#实现username账号访问固定文件夹

Match User username

ChrootDirectory /data/nginx/wwwroot/default/source/plugin

X11Forwarding no

AllowTcpForwarding no

ForceCommand internal-sftp

#下面开始更改权限,首先从根目录看起

cd data到根目录

ls -l看权限

b9e95bfe8533086d50c339ed9294fa57.png

一层一层的看下去,要求权限都是755

常见的权限表示形式有:

-rw——- (600) 只有拥有者有读写权限。

-rw-r–r– (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。

-rwx—— (700) 只有拥有者有读、写、执行权限。

-rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。

-rwx–x–x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。

-rw-rw-rw- (666) 所有用户都有文件读、写权限。

-rwxrwxrwx (777) 所有用户都有读、写、执行权限。

要求从根目录开始到最后要指定的文件夹为止,都需要是755权限,所有者都是root,用户组也是root

#建议按如下指令设置一下

sudo chmod 755 /data

#然后设置username属于root用户组,指定其成为 some_dir 某个文件夹的所有者,这样username就具有了some_dir的读写权限

sudo chown -R username:root /datas/nginx/wwwroot/default/source/plugin/some_dir

219d47c63b3194771a5e84aaeca2c51c.png

这里要求some_dir在上图写的路径下面

#重启ssh服务

service sshd restart

#尝试登陆sftp

sftp -oPort=端口号 username@192.168.1.1(你的IP)

可能会登陆失败

如果你链接服务器的时候出现下面的提示:

Write failed: Broken pipe

Couldn’t read packet: Connection reset by peer

这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。注意以下两点原则:

目录开始一直往上到系统根目录为止的目录拥有者都只能是 root,用户组可以不是 root。

目录开始一直往上到系统根目录为止都不可以具有群组写入权限

上面2点一定注意,仔细检查。我就是因为这个问题,导致一直有这个问题。仔细检查配置后,解决问题。

赞赏作者

喜欢 (1)or分享 (0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值