Dostęp do scp bez możliwości logowania

Jacek Osiecki joshua w hybrid.pl
Czw, 6 Sty 2005, 09:57:39 CET


On Thu, 6 Jan 2005, Jacek Konieczny wrote:

> On Wed, Jan 05, 2005 at 11:13:04PM +0100, Paweł Gołaszewski wrote:

>>> Może jakiś ograniczony shell?

>> rssh albo scponly (ostatnio skłaniam się ku temu ostatniemu)

> Ja nie ufałbym jednak żadnemu z tych rozwiązań. SSH powstał do
> udostępniania shella i został skonstruowany przede wszystkim z myślą
> o tym. Próba ominięcia głównej funkcjonalności może być skomplikowanym

Ja od dawna stosuję dummy shell taki jak w załączniku.

> IMHO dużo lepsze jest FTP/TLS (chociaż protokół FTP ze swoimi dwoma
> połączeniami to syf),

To po pierwsze, po drugie - zabawy z certyfikatami...

Pozdrawiam,
-- 
Jacek Osiecki joshua w ceti.pl GG:3828944
"Poglądy polityczne mają takie znaczenie w sejmie jak upierzenie u krokodyla"
(c) Tomasz Olbratowski 2004
-------------- następna część ---------
//
// vegaa_dummy_shell.c by zim w vegaa.de 2002-03-14
//
// This program behaves as a shell for users,
// which you want to allow sftp access (e.g for OpenSSH)
// but don't want to allow normal shell access.
//
// Copyright: Feel free to use it as you like it.
// Warranty: None .o)
//
// Compilation:
//
// gcc vegaa_dummy_shell.c -o vegaa_dummy_shell
//
// Installation:
//
// 1.) Put this dummy_shell somewhere, say as /usr/bin/vegaa_dummy_shell.
// Make it's owner root:root and it's permissions 0755 (or 0555).
// 2.) Specify the dummy_shell as the user's shell in /etc/passwd
// 3.) You may want to enter it also in /etc/shells, if these users
// should also be allowed normal ftp-access, too.
//

// Should your sftp-server sit in another location,

// change the following line accordingly
#define SFTP_COMMAND "/usr/lib/openssh/sftp-server"

#include <stdio.h>

#include <string.h>
#include <unistd.h>
#include <sys/syslog.h>
#include <sys/sysmacros.h>

int

main(int argc, char **argv)
{
    int i;

    if (argc!=3) {

        syslog(LOG_ERR,
            "ACCESS DENIED %s: illegal number of arguments=%d",
            argv[0],argc);
        for (i=1;i<argc;i++) {
            syslog(LOG_ERR,"%s argv[%d]: %s",argv[0],i,argv[i]);
            }
        goto Denied;
        }
    if (strcmp(argv[1],"-c") || strcmp(argv[2],SFTP_COMMAND)) {
        syslog(LOG_ERR,
            "ACCESS DENIED %s: illegal arguments: %s %s",
            argv[0],argv[1],argv[2]);
        goto Denied;
        }
    // Now call the sftp-server
    return(execl(argv[2],argv[2],NULL));

Denied:

    printf("##################################################\n");
    printf("## You don't have shell access on this machine. ##\n");
    printf("## Please contact your administrator, ##\n");
    printf("## should you believe that to be an error. ##\n");
    printf("##################################################\n");
    return(2);
}


Więcej informacji o liście dyskusyjnej pld-users-pl