目录
创建sftp用户
创建SFTP组
sudo groupadd sftp_users
创建SFTP用户
sudo useradd -g sftp_users -s /bin/false -d /home/sftp_user1 sftp_user1
其中,-g表示指定用户组,-s表示指定shell为/bin/false,因为SFTP用户不需要使用shell,如果需要使用shell则可以不写-s或者写-s /bin/bash。-d指定用户的主目录。
设置SFTP用户的密码
sudo passwd sftp_user1
设置SFTP用户的主目录和权限
sudo mkdir -p /home/sftp_user1/upload
sudo chown root:sftp_users /home/sftp_user1
sudo chmod 755 /home/sftp_user1
sudo chown sftp_user1:sftp_users /home/sftp_user1/upload
sudo chmod 755 /home/sftp_user1/upload
其中,/home/sftp_user1/upload是SFTP用户的主目录,chown命令用于更改文件或目录的所有者和所属组,chmod命令用于更改文件或目录的访问权限。
配置SSH服务以允许SFTP登录
编辑SSH配置文件/etc/ssh/sshd_config
找到Subsystem sftp internal-sftp并取消注释
在下边新增
Match Group sftp_users
ChrootDirectory %h
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
Match Group sftp_users表示为sftp_users组中的用户应用以下设置,ChrootDirectory %h表示将用户锁定在其主目录中,ForceCommand internal-sftp表示强制使用SFTP协议,X11Forwarding no表示禁止X11转发,AllowTcpForwarding no表示禁止TCP转发。
重启ssh服务
sudo systemctl restart sshd
用户权限不足
在使用过程中,因为很多文件是比较隐私的,所以对改用户的权限不够,这样的文件会比较多,所以一一改是不太现实的,最终我决定让该用户可以使用sudo命令
打开sudoers文件
sudo visudo
添加用户
先找到
root ALL=(ALL) ALL
然后在下边添加
sftp_user1 ALL=(ALL) NOPASSWD:ALL
注意要使用NOPASSWD,否则客户端执行sudo命令时不会成功
保存退出即可
新用户使用docker-compose报错
错误:Couldn't connect to Docker daemon at http+docker://localhost - is it running?
先确定docker是否启动,一般都会没问题
然后检查新用户是否加入docker用户组
sudo执行问题
服务器上有庞大的脚本,而很多脚本引入了一些相对路径的问题,一一更改是不现实的,但是sudo命令会改变当前工作目录,导致相对路径失效。这个时候我们又要对sudo进行配置
打开sudoers文件
sudo visudo
更改命令搜索路径
找到
Defaults secure_path
在后边添加路径,以冒号分隔案例
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/path/to/your/dir"
总结
这些东西对于老运维来说肯定是很简单的,对于开发者来说可能还要找寻答案,记录以便日后使用