Thread: [htmltmpl] HTML::Template and filesystem ACL's
Brought to you by:
samtregar
From: Aleksey S. <al...@ca...> - 2004-07-29 19:27:48
|
Hello! HTML::Template failed trying to process file with ACL ( can't read _readable_ file ) The reason is "-r $filename" expression - it doesn't work with ACL. It's the common perl problem or we could use another expression to determine readable file or not? What's the best way to fix it? Thanks in advance. Aleksey > uname -a Linux 2.6.7-1-k7 i686 GNU/Linux > mount -l | grep /home /dev/hda2 on /home type ext3 (rw,acl) [] > perl -MHTML::Template -e 'print $HTML::Template::VERSION' 2.7 > pwd /home/hosting/project/cgi-bin/ > cat test.cgi ------------------------------------------ #!/usr/bin/perl use CGI; use HTML::Template; print CGI::header(); print 'Whoami: '.`whoami`; print 'Current Directory: '.`pwd`; print 'Template file: '.`cat test.txt`."\n"; my $template = HTML::Template->new( filename => 'test.txt' ); $template->param( { param1 => 'blah' } ); print "Template output: ".$template->output()."\n"; ------------------------------------------ > cat test.txt ------------------------------------------ <TMPL_VAR NAME="param1"> ------------------------------------------ > getfacl test.txt ------------------------------------------ # file: test.txt # owner: aleksey # group: aleksey user::rw- user:www-data:rwx #effective:rw- group::--- mask::rw- other::--- ------------------------------------------ > ./test.cgi ------------------------------------------ Content-Type: text/html; charset=ISO-8859-1 Whoami: aleksey Current Directory: /home/hosting/project/cgi-bin Template file: <TMPL_VAR NAME="param1"> Template output: blah ------------------------------------------ > lwp-request project.com/cgi-bin/test.cgi ------------------------------------------ Whoami: www-data Current Directory: /home/hosting/project/cgi-bin Template file: <TMPL_VAR NAME="param1"> ------------------------------------------ > tail error.log ------------------------------------------ HTML::Template : template file test.txt does not exist or is unreadable at /usr/local/share/perl/5.8.4/HTML/Template.pm line 1574 \tHTML::Template::_mtime('HTML::Template=HASH(0x82214a0)', 'test.txt') called at /usr/local/share/perl/5.8.4/HTML/Template.pm line 1624 \tHTML::Template::_init_template('HTML::Template=HASH(0x82214a0)') called at /usr/local/share/perl/5.8.4/HTML/Template.pm line 1189 \tHTML::Template::_init('HTML::Template=HASH(0x82214a0)') called at /usr/local/share/perl/5.8.4/HTML/Template.pm line 1083 \tHTML::Template::new('HTML::Template', 'filename', 'test.txt') called at /home/hosting/others/e3e5.com/cgi-bin/test.cgi line 9 ------------------------------------------ > su www-data > cat test.txt <TMPL_VAR NAME="param1"> > perl -e '$filepath="./test.txt"; (-r $filepath) or print "Error" ' Error |
From: Sam T. <sa...@tr...> - 2004-07-29 19:52:24
|
On Thu, 29 Jul 2004, Aleksey Serba wrote: > The reason is "-r $filename" expression - it doesn't work with ACL. Really? Why not? That's the most obvious way to see if a file is readable in Perl. > It's the common perl problem or we could use another expression to > determine readable file or not? Does stat() work? I don't know why stat() would work if -r doesn't... -sam |
From: Aleksey S. <al...@ca...> - 2004-07-29 20:04:33
|
>> The reason is "-r $filename" expression - it doesn't work with ACL. ST> Really? Why not? See test in the bottom of my message Regards, Aleksey |
From: Sam T. <sa...@tr...> - 2004-07-29 20:06:41
|
On Fri, 30 Jul 2004, Aleksey Serba wrote: > > >> The reason is "-r $filename" expression - it doesn't work with ACL. > ST> Really? Why not? > See test in the bottom of my message I don't have a system with "ACL", whatever that is, so I can't run your test. Maybe you should post a message on http://perlmonks.org? If you can find out how to fix Perl so that -r works with ACLs then you'll be able to use HTML::Template. -sam |
From: <sa...@es...> - 2004-07-30 00:21:16
|
Sam Tregar wrote: > On Fri, 30 Jul 2004, Aleksey Serba wrote: > >> >>>> The reason is "-r $filename" expression - it doesn't work with ACL. >> ST> Really? Why not? >> See test in the bottom of my message > > I don't have a system with "ACL", whatever that is, ACL are Access Control Lists. They are available with most filesystems=20= under Linux (Ext3, ReiserFS, XFS) as well as under Solaris, IRIX, etc. > so I can't run > your test. Maybe you should post a message on http://perlmonks.org? > If you can find out how to fix Perl so that -r works with ACLs then > you'll be able to use HTML::Template. perlfunc recommends to C<use filetest 'access';> for better results=20 when running on a filesystem with ACL support. The filetest pragma=20 seems to be available since Perl 5.6. But IIRC, the Cookbook recommended to forget all the -X tests (where X=20= =3D~ /[rwxo]/i) and simply open() the file then test after the error = code. S=E9bastien Aperghis-Tramoni -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ] Close the world, txEn eht nepO= |
From: Sam T. <sa...@tr...> - 2004-07-30 02:12:29
|
On Fri, 30 Jul 2004, S=E9bastien Aperghis-Tramoni wrote: > perlfunc recommends to C<use filetest 'access';> for better results when > running on a filesystem with ACL support. The filetest pragma seems to be > available since Perl 5.6. Is it lexical, or could a user use the pragma in their code and fix HTML::Template's file tests? > But IIRC, the Cookbook recommended to forget all the -X tests (where X = =3D~ > /[rwxo]/i) and simply open() the file then test after the error code. I think I'd take a patch in that direction, provided it produced the same quality of error checking. -sam |
From: <sa...@es...> - 2004-07-30 17:22:37
Attachments:
filetest.patch
|
Sam Tregar wrote: > On Fri, 30 Jul 2004, S=E9bastien Aperghis-Tramoni wrote: > >> perlfunc recommends to C<use filetest 'access';> for better results=20= >> when >> running on a filesystem with ACL support. The filetest pragma seems=20= >> to be >> available since Perl 5.6. > > Is it lexical, or could a user use the pragma in their code and fix > HTML::Template's file tests? According to the doc, this pragma is lexical. >> But IIRC, the Cookbook recommended to forget all the -X tests (where=20= >> X =3D~ >> /[rwxo]/i) and simply open() the file then test after the error code. In fact, this remark is in the doc of the filetest pragma. > I think I'd take a patch in that direction, provided it produced the > same quality of error checking. Looking at the code, it seems it's even simpler that this: it's just=20 that you used -r to test if a file if still present on the filesystem=20 instead of -f or -e. Attached is the patch against version 2.7 to correct that. |