Compare commits

...

7 Commits

Author SHA1 Message Date
Nikolaus Rath 8059e2ce63 Released 3.7.1 2020-11-09 09:52:00 +00:00
Junichi Uekawa 9e01ffd161 Rename option to 'passive' and add some example in manual. (#232) 2020-11-02 10:51:48 +00:00
Fabrice Fontaine de0504e45b sshfs.c: fix build with gcc 4.8 (#233)
Fix the following build failure with gcc 4.8:

../sshfs.c:1092:2: error: 'for' loop initial declarations are only allowed in C99 mode
  for (int i = 0; i < sshfs.max_conns; i++) {
  ^

This build failure has been added with
https://github.com/libfuse/sshfs/commit/8822b60d9dbd9907065e7999f616b11ddce6d584

Fixes:
 - http://autobuild.buildroot.org/results/2dbdc579c55543175716d5f739cabe2ad0864ed6

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2020-11-02 09:31:23 +00:00
Junichi Uekawa 6625146af9 Update sshfs.rst (#220)
This / is probably meant to be a .
2020-09-04 12:06:30 +01:00
Simon Arlott 76ffb37444 Unset OLDPWD environment variable (#227)
If ssh is configured to use "Match exec" and the previous working
directory is the mount point, then the shell (bash) hangs calling
stat() on OLDPWD.

Unset OLDPWD so that this doesn't happen.

Fixes #206.
2020-09-03 08:13:24 +01:00
Nikolaus Rath a96e521474 Remove pointer to professional consulting offers
I do not want to offer this actively anymore.
2020-08-10 19:57:05 +01:00
bjoe2k4 11df8874dc Fix typo in docs (#213) 2020-05-17 10:30:59 +01:00
6 changed files with 50 additions and 35 deletions
+6
View File
@@ -13,18 +13,21 @@ Miklos Szeredi <miklos@szeredi.hu> (until 12/2015)
Contributors (autogenerated list)
---------------------------------
Alan Jenkins <alan.christopher.jenkins@gmail.com>
Alexander Neumann <alexander@bumpern.de>
Anatol Pomozov <anatol.pomozov@gmail.com>
Benjamin Fleischer <fleiben@gmail.com>
Berserker <berserker.troll@yandex.com>
Bill Zissimopoulos <billziss@navimatics.com>
bjoe2k4 <bjoe2k4@users.noreply.github.com>
Brandon Carter <b-carter@users.noreply.github.com>
Chris Wolfe <cwolfe@chromium.org>
Clayton G. Hobbs <clay@lakeserv.net>
Daniel Lublin <daniel@lublin.se>
Dominique Martinet <asmadeus@codewreck.org>
DrDaveD <2129743+DrDaveD@users.noreply.github.com>
Fabrice Fontaine <fontaine.fabrice@gmail.com>
gala <gala132@users.noreply.github.com>
Galen Getsov <4815620+ggetsov@users.noreply.github.com>
George Vlahavas <vlahavas@gmail.com>
@@ -35,6 +38,8 @@ jeg139 <54814784+jeg139@users.noreply.github.com>
Josh Triplett <josh@joshtriplett.org>
Julio Merino <jmmv@google.com>
Julio Merino <jmmv@meroh.net>
Junichi Uekawa <dancerj@gmail.com>
Junichi Uekawa <dancer@netfort.gr.jp>
kalvdans <github@kalvdans.no-ip.org>
Michael Forney <mforney@mforney.org>
Mike Kelly <mike@pair.com>
@@ -51,6 +56,7 @@ Rian Hunter <rian@alum.mit.edu>
Rian Hunter <rianhunter@users.noreply.github.com>
Samuel Murray <samuel.murray@outlook.com>
S. D. Cloudt <s.d.cloudt@student.tue.nl>
Simon Arlott <70171+nomis@users.noreply.github.com>
smheidrich <smheidrich@weltenfunktion.de>
sunwire <50745572+sunwire@users.noreply.github.com>
Tim Harder <radhermit@gmail.com>
+6
View File
@@ -1,3 +1,9 @@
Release 3.7.1 (2020-11-09)
--------------------------
* Minor bugfixes.
Release 3.7.0 (2020-01-03)
--------------------------
-8
View File
@@ -98,11 +98,3 @@ https://lists.sourceforge.net/lists/listinfo/fuse-sshfs).
Please report any bugs on the GitHub issue tracker at
https://github.com/libfuse/libfuse/issues.
Professional Support
--------------------
Professional support is offered via `Rath Consulting`_.
.. _`Rath Consulting`: http://www.rath-consulting.biz
+1 -1
View File
@@ -1,4 +1,4 @@
project('sshfs', 'c', version: '3.7.0',
project('sshfs', 'c', version: '3.7.1',
meson_version: '>= 0.40',
default_options: [ 'buildtype=debugoptimized' ])
+29 -21
View File
@@ -341,7 +341,7 @@ struct sshfs {
int foreground;
int reconnect;
int delay_connect;
int slave;
int passive;
char *host;
char *base_path;
GHashTable *reqtab;
@@ -351,7 +351,7 @@ struct sshfs {
int max_conns;
struct conn *conns;
int ptyfd;
int ptyslavefd;
int ptypassivefd;
int connvers;
int server_version;
unsigned remote_uid;
@@ -497,7 +497,8 @@ static struct fuse_opt sshfs_opts[] = {
SSHFS_OPT("no_check_root", no_check_root, 1),
SSHFS_OPT("password_stdin", password_stdin, 1),
SSHFS_OPT("delay_connect", delay_connect, 1),
SSHFS_OPT("slave", slave, 1),
SSHFS_OPT("slave", passive, 1),
SSHFS_OPT("passive", passive, 1),
SSHFS_OPT("disable_hardlink", disable_hardlink, 1),
SSHFS_OPT("dir_cache=yes", dir_cache, 1),
SSHFS_OPT("dir_cache=no", dir_cache, 0),
@@ -1068,6 +1069,7 @@ static struct conn* get_conn(const struct sshfs_file *sf,
const char *path)
{
struct conntab_entry *ce;
int i;
if (sshfs.max_conns == 1)
return &sshfs.conns[0];
@@ -1089,7 +1091,7 @@ static struct conn* get_conn(const struct sshfs_file *sf,
int best_index = 0;
uint64_t best_score = ~0ULL; /* smaller is better */
for (int i = 0; i < sshfs.max_conns; i++) {
for (i = 0; i < sshfs.max_conns; i++) {
uint64_t score = ((uint64_t) sshfs.conns[i].req_count << 43) +
((uint64_t) sshfs.conns[i].dir_count << 22) +
((uint64_t) sshfs.conns[i].file_count << 1) +
@@ -1146,8 +1148,8 @@ static int start_ssh(struct conn *conn)
if (sshfs.ptyfd == -1)
return -1;
sshfs.ptyslavefd = open(ptyname, O_RDWR | O_NOCTTY);
if (sshfs.ptyslavefd == -1)
sshfs.ptypassivefd = open(ptyname, O_RDWR | O_NOCTTY);
if (sshfs.ptypassivefd == -1)
return -1;
}
@@ -1189,6 +1191,12 @@ static int start_ssh(struct conn *conn)
_exit(0);
}
chdir("/");
/*
* Avoid processes hanging trying to stat() OLDPWD if it is in
* the mount point. This can be removed if sshfs opens the
* mount point after establishing the ssh connection.
*/
unsetenv("OLDPWD");
if (sshfs.password_stdin) {
int sfd;
@@ -1200,7 +1208,7 @@ static int start_ssh(struct conn *conn)
_exit(1);
}
close(sfd);
close(sshfs.ptyslavefd);
close(sshfs.ptypassivefd);
close(sshfs.ptyfd);
}
@@ -1224,7 +1232,7 @@ static int start_ssh(struct conn *conn)
return 0;
}
static int connect_slave(struct conn *conn)
static int connect_passive(struct conn *conn)
{
conn->rfd = STDIN_FILENO;
conn->wfd = STDOUT_FILENO;
@@ -1531,9 +1539,9 @@ static void close_conn(struct conn *conn)
close(sshfs.ptyfd);
sshfs.ptyfd = -1;
}
if (sshfs.ptyslavefd != -1) {
close(sshfs.ptyslavefd);
sshfs.ptyslavefd = -1;
if (sshfs.ptypassivefd != -1) {
close(sshfs.ptypassivefd);
sshfs.ptypassivefd = -1;
}
}
@@ -1824,8 +1832,8 @@ static int connect_remote(struct conn *conn)
{
int err;
if (sshfs.slave)
err = connect_slave(conn);
if (sshfs.passive)
err = connect_passive(conn);
else if (sshfs.directport)
err = connect_to(conn, sshfs.host, sshfs.directport);
else
@@ -3629,7 +3637,7 @@ static void usage(const char *progname)
" -o ssh_protocol=N ssh protocol to use (default: 2)\n"
" -o sftp_server=SERV path to sftp server or subsystem (default: sftp)\n"
" -o directport=PORT directly connect to PORT bypassing ssh\n"
" -o slave communicate over stdin and stdout bypassing network\n"
" -o passive communicate over stdin and stdout bypassing network\n"
" -o disable_hardlink link(2) will return with errno set to ENOSYS\n"
" -o transform_symlinks transform absolute symlinks to relative\n"
" -o follow_symlinks follow symlinks on the server\n"
@@ -4182,9 +4190,9 @@ int main(int argc, char *argv[])
sshfs.show_version = 0;
sshfs.singlethread = 0;
sshfs.foreground = 0;
sshfs.ptyslavefd = -1;
sshfs.ptypassivefd = -1;
sshfs.delay_connect = 0;
sshfs.slave = 0;
sshfs.passive = 0;
sshfs.detect_uid = 0;
if (strcmp(IDMAP_DEFAULT, "none") == 0) {
sshfs.idmap = IDMAP_NONE;
@@ -4250,12 +4258,12 @@ int main(int argc, char *argv[])
DEBUG("SSHFS version %s\n", PACKAGE_VERSION);
/* Force sshfs to the foreground when using stdin+stdout */
if (sshfs.slave)
if (sshfs.passive)
sshfs.foreground = 1;
if (sshfs.slave && sshfs.password_stdin) {
fprintf(stderr, "the password_stdin and slave options cannot both be specified\n");
if (sshfs.passive && sshfs.password_stdin) {
fprintf(stderr, "the password_stdin and passive options cannot both be specified\n");
exit(1);
}
@@ -4287,8 +4295,8 @@ int main(int argc, char *argv[])
exit(1);
}
if (sshfs.slave) {
fprintf(stderr, "slave option cannot be specified with parallel connections\n");
if (sshfs.passive) {
fprintf(stderr, "passive option cannot be specified with parallel connections\n");
exit(1);
}
} else if (sshfs.max_conns <= 0) {
+8 -5
View File
@@ -37,7 +37,7 @@ credentials that were used to connect to the server. If this is undesired, local
permission checking can be enabled with ``-o default_permissions``.
By default, only the mounting user will be able to access the filesystem. Access for other
users can be enabled by passing ``-o allow_others``. In this case you most likely also
users can be enabled by passing ``-o allow_other``. In this case you most likely also
want to use ``-o default_permissions``.
It is recommended to run SSHFS as regular user (not as root). For this to work the
@@ -156,8 +156,11 @@ Options
-o directport=PORT
directly connect to PORT bypassing ssh
-o slave
communicate over stdin and stdout bypassing network
-o passive
communicate over stdin and stdout bypassing network. Useful for
mounting local filesystem on the remote side. An example using
dpipe command would be ``dpipe /usr/lib/openssh/sftp-server = ssh
RemoteHostname sshfs :/directory/to/be/shared ~/mnt/src -o passive``
-o disable_hardlink
With this option set, attempts to call `link(2)` will fail with
@@ -223,8 +226,8 @@ Options
to use. Each connection is established with a separate SSH process.
The primary purpose of this feature is to improve the responsiveness of the
file system during large file transfers. When using more than once
connection, the *password_stdin* and *slave* options can not be
used, and the *buflimit* workaround is not supported/
connection, the *password_stdin* and *passive* options can not be
used, and the *buflimit* workaround is not supported.
In addition, SSHFS accepts several options common to all FUSE file
systems. These are described in the `mount.fuse` manpage (look