Aliens

Linux下常用软件配置

April 3, 2021

Samba

安装

1
sudo apt install samba

修改配置文件

1
2
3
4
5
6
[share]
    path = /home/xyz/share/
    create mask = 0664
    directory mask = 0775
    writable = yes
    valid users = xyz

其中:

配置一个guest只读的共享:

1
2
3
4
[latest_qfil]
    path = /mnt/build/artifact/latest
    writable = no
    guest ok = yes

添加用户

1
sudo smbpasswd -a xyz

用户xyz必须是系统中存在的用户,和当前用户没有关系.

启动服务

1
sudo service smbd start

FTP

安装

1
sudo apt  install vsftpd

配置一个匿名共享

1.创建共享文件夹

1
sudo mkdir /var/ftp/pub

2.修改配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo vi /etc/vsftpd.conf
---
# 1.如果只需要读权限
anonymous_enable=YES
anon_root=/var/ftp/
---
# 2.如果还需要写权限,在1的基础上继续增加
## anon_mkdir_write_enable=YES: 增加匿名用户新建文件夹的权限
## anon_other_write_enable=YES: 增加匿名用户删除/重命名的权限
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
---
# 3.可选配置
## 命令行中匿名用户不再需要输入密码
no_anon_password=YES
## 限制被动模式的端口范围
pasv_min_port=40000
pasv_max_port=50000
## 配置匿名用户创建文件的umask
anon_umask=022

注意: 虽然配置了匿名用户可写, 但/var/ftp/本身必须是可写的, 可以配置为777权限

3.重启服务

1
sudo systemctl restart vsftpd.service

https://www.digitalocean.com/community/tutorials/how-to-set-up-vsftpd-for-anonymous-downloads-on-ubuntu-16-04

https://gist.github.com/rikka0w0/32678ec92fe210ffaf1c0f73e631c0bc

配置一个使用用户名/密码访问,可读写的共享

1.创建共享文件夹

1
sudo mkdir /var/testftp

2.创建用户

1
2
3
4
5
6
# -d: 指定家目录为/, 至于为什么这么指定, 后面会说到
sudo useradd -d / testftp
# 可选配置, nologin还需要进一步配置,参见后文
# sudo useradd -d / testftp -s /usr/sbin/nologin
sudo passwd testftp
...

3.修改配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
sudo vi /etc/vsftpd.conf
---
write_enable=YES
local_root=/var/testftp

# 使用chroot,禁止访问local_root
chroot_local_user=YES
allow_writeable_chroot=YES

# 使用用户白名单
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
---
# 可选配置
local_umask=022

4.修改用户白名单

1
2
3
echo "testftp" | sudo tee -a /etc/vsftpd.userlist
# 打开白名单后,匿名用户便被禁用,除非在白名单列表里加入"anonymous"
echo "anonymous" | sudo tee -a /etc/vsftpd.userlist

5.(可选)配置shell为/usr/sbin/nologin

我不希望testftp能够登录终端, 那么可以配置对应的shell为/usr/sbin/nologin

1
sudo chsh testftp -s /usr/sbin/nologin

但仅仅这么配置会导致ftp无法登录, 还需要在/etc/shells添加/usr/sbin/nologin

1
2
# 添加前最好先检查一下是不是已经存在了
echo /usr/sbin/nologin | sudo tee -a /etc/shells

https://serverfault.com/questions/358324/ftp-doesnt-allow-usr-sbin-nologin-user

6.重启服务

1
sudo systemctl restart vsftpd.service

https://www.digitalocean.com/community/tutorials/how-to-set-up-vsftpd-for-a-user-s-directory-on-ubuntu-18-04

其他

使用中发现, 使用Chrome访问时, 显示的"修改日期"与本地日期不一致, 后来发现有一个use_localtime的选项默认为YES:

1
2
3
4
5
# If enabled, vsftpd will display directory listings with the time
# in  your  local  time  zone.  The default is to display GMT. The
# times returned by the MDTM FTP command are also affected by this
# option.
use_localtime=YES

不过, 根据注释以及网上别人的介绍, use_localtime配置为YES才应该是我预期的"修改日期"与本地时间一致的方法. 当我尝试改为NO之后, “修改日期"与本地日期竟然一致了, 很是奇怪.