Re: MyOOS 5.0.23
Verfasst: 30.11.2023, 04:18
Bei der Ausführung von den perl Script kommt es zu folgender Meldung:
mkdir /var/www/.ssh: Permission denied at /usr/local/lib/x86_64-linux-gnu/perl/5.26.1/Net/SSH/Perl/Util/Hosts.pm line 118.
Die Fehlermeldung bedeutet, dass das Perl-Skript versucht, ein Verzeichnis namens /var/www/.ssh zu erstellen, aber keine Berechtigung dazu hat. Dies kann passieren, wenn das Skript unter einem anderen Benutzer als dem Besitzer von /var/www ausgeführt wird, oder wenn der Besitzer von /var/www keine Schreibberechtigung für dieses Verzeichnis hat.
Um das Problem zu lösen, können wir folgende Schritte versuchen:
- Überprüfe unter welchem Benutzer das Perl-Skript ausgeführt wird, wenn du es per Browser aufrufst. Du kannst dies tun, indem du die Funktion `getpwuid` verwendest, um den Benutzernamen und die Benutzer-ID zu erhalten. Zum Beispiel:
Bei Bedarf lege ich das Script auf Github.
Überprüfe wer der Besitzer von /var/www ist, und welche Berechtigungen er hat. Du kannst dies tun, indem du den Befehl ls -ld /var/www in einem Terminal ausführen. Zum Beispiel:
Wenn der Besitzer von /var/www nicht der gleiche ist wie der Benutzer, der das Perl-Skript ausführt, musst du entweder den Besitzer ändern oder dem Benutzer Schreibberechtigung für /var/www geben. Dies kannst du tun, indem du den Befehl chown oder chmod verwendest. Zum Beispiel:
Wenn der Besitzer von /var/www der gleiche ist wie der Benutzer, der das Perl-Skript ausführt, aber keine Schreibberechtigung für /var/www hat, musst du ihm Schreibberechtigung geben. Dies kannst du tun, indem du den Befehl chmod verwendest. Zum Beispiel:
mkdir /var/www/.ssh: Permission denied at /usr/local/lib/x86_64-linux-gnu/perl/5.26.1/Net/SSH/Perl/Util/Hosts.pm line 118.
Die Fehlermeldung bedeutet, dass das Perl-Skript versucht, ein Verzeichnis namens /var/www/.ssh zu erstellen, aber keine Berechtigung dazu hat. Dies kann passieren, wenn das Skript unter einem anderen Benutzer als dem Besitzer von /var/www ausgeführt wird, oder wenn der Besitzer von /var/www keine Schreibberechtigung für dieses Verzeichnis hat.
Um das Problem zu lösen, können wir folgende Schritte versuchen:
- Überprüfe unter welchem Benutzer das Perl-Skript ausgeführt wird, wenn du es per Browser aufrufst. Du kannst dies tun, indem du die Funktion `getpwuid` verwendest, um den Benutzernamen und die Benutzer-ID zu erhalten. Zum Beispiel:
Code: Alles auswählen
#!/usr/bin/perl -w
use strict;
use warnings;
our $pcd_version="5.0.23";
my $username = getpwuid($<);
my $userid = $<;
our (
$perlversion, $html_output
);
$html_output=1;
PrintHeader();
print "The script is running as $username ($userid)\n";
sub PrintHeader {
my $cgi = new CGI;
my $perlversion = '1.0.0';
if ($html_output==1)
{
print $cgi->header(-type => 'text/html; charset=utf-8', -cache_control => 'no-cache, no-store, must-revalidate');
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
print "<html>\n<head>\n<title>MyOOS [Dumper] - Perl CronDump [Version $pcd_version (using perl $perlversion)]</title>\n";
print "<style type=\"text/css\">\nbody { padding:20px; font-family:Verdana,Helvetica,Sans-Serif;font-size: 0.9em !important;}</style>\n";
print "</head>\n<body><h3>MyOOS [Dumper] - Perl CronDump [Version $pcd_version (using perl $perlversion)]</h3>\n";
}
else
{
#small output for external cronjobs, which expect a small returnvalue
print "MyOOS [Dumper] - Perl CronDump [Version $pcd_version] started successfully (using perl $perlversion)\n";
}
}
Überprüfe wer der Besitzer von /var/www ist, und welche Berechtigungen er hat. Du kannst dies tun, indem du den Befehl ls -ld /var/www in einem Terminal ausführen. Zum Beispiel:
Code: Alles auswählen
$ ls -ld /var/www
drwxr-xr-x 2 root root 4096 Nov 30 03:35 /var/www
Code: Alles auswählen
# To change the owner of /var/www to the user 'www-data'
$ sudo chown www-data /var/www
# To give write permission to the user 'www-data' for /var/www
$ sudo chmod u+w /var/www
Code: Alles auswählen
# To give write permission to the owner of /var/www
$ sudo chmod u+w /var/www