SFTP для конкретного пользователя

конфигурирование (установка и настройка дистрибутивов GNU/Linux, программного обеспечения и др.)
Ответить
Аватара пользователя
Роман Торопов
Администратор
Сообщения: 142
Зарегистрирован: 24 мар 2008, 10:49
Откуда: г. Пермь
Контактная информация:

SFTP для конкретного пользователя

Сообщение Роман Торопов » 31 окт 2020, 16:08

Если нужно именно больше 4ГБ на файл, то смотрите в сторону sftp, через ssh,
а чтоб "левый" пользователь не лазил по вашей системе читаем тут и тут,
если не получается, как там - есть проще настройка, создаём системного пользователя как обычно, с оболочкой,
устанавливаем

Код: Выделить всё

apt install mysecureshell
в конфиге /etc/ssh/sshd_config
пишем строчки

Код: Выделить всё

Match User username
        ForceCommand /usr/bin/mysecureshell -c sftp-server
или тоже самое с коментами

Код: Выделить всё

# override default of no subsystems
Subsystem	sftp	/usr/lib/openssh/sftp-server
# Subsystem	sftp	/usr/bin/mysecureshell -c sftp-server
# Subsystem sftp internal-sftp
Match User username
#	X11Forwarding no
#	AllowTcpForwarding no
#	AllowAgentForwarding no
#	PermitTunnel no
	ForceCommand /usr/bin/mysecureshell -c sftp-server
#	ChrootDirectory /home/username/chroot/
т.е. все пользователи как обычно, а указанный через /usr/bin/mysecureshell -c sftp-server
далее в конфиге mysecureshell /etc/ssh/sftp_config в дефолтовом блоке, правим домашний путь, ограничения, по скорости и т.п.

Код: Выделить всё

<Default>
	GlobalDownload		0	#total speed download for all clients
					# o -> bytes   k -> kilo bytes   m -> mega bytes
	GlobalUpload		0	#total speed download for all clients (0 for unlimited)
	Download 		0	#limit speed download for each connection
	Upload 			0	#unlimit speed upload for each connection
	StayAtHome		true	#limit client to his home
	VirtualChroot		true	#fake a chroot to the home account
	LimitConnection		100	#max connection for the server sftp
	LimitConnectionByUser	100	#max connection for the account
	LimitConnectionByIP	200	#max connection by ip for the account
	Home			/home/$USER/chroot	#overrite home of the user but if you want you can use
						#	environment variable (ie: Home /home/$USER)
	IdleTimeOut		59m	#(in second) deconnect client is idle too long time
	ResolveIP		true	#resolve ip to dns
#	IgnoreHidden		true	#treat all hidden files as if they don't exist
#	DirFakeUser		true	#Hide real file/directory owner (just change displayed permissions)
#	DirFakeGroup		true	#Hide real file/directory group (just change displayed permissions)
#	DirFakeMode		0400	#Hide real file/directory rights (just change displayed permissions)
					#Add execution right for directory if read right is set
	HideNoAccess		true	#Hide file/directory which user has no access
#	MaxOpenFilesForUser	20	#limit user to open x files on same time
#	MaxWriteFilesForUser	10	#limit user to x upload on same time
#	MaxReadFilesForUser	10	#limit user to x download on same time
	DefaultRights		0777 0777	#Set default rights for new file and new directory
#	MinimumRights		0777 0777	#Set minimum rights for files and dirs

	ShowLinksAsLinks	false	#show links as their destinations
#	ConnectionMaxLife	1d	#limits connection lifetime to 1 day

	Charset			"UTF-8"	#set charset of computer
</Default>
монтируем шару в домашний путь, /home/username, в отдельный каталог, например создаём там каталог chroot и монтируем в него

Код: Выделить всё

mount --bind /mnt/storage/DAV/share/ /home/username/chroot
Перезапускаем службы

Код: Выделить всё

service sshd restart
service mysecureshell restart
Этот пользователь не будет иметь доступа по ssh, но будет по sftp попадать в свой домашний каталог
и не сможет попасть выше уровнем своего каталога.
Остальные пользователи будут работать и по ssh и по sftp как обычно

Ответить