[mythtv-users] Mythgallery directory permissions when using NFS
CTD
ctd at minneapolish3.com
Fri Sep 9 00:58:24 UTC 2005
Not sure if this only occurred for me or if this is due to some other
system config issue. There was probably some simple way to overcome
this, but I started down this path after trying many others. This way
seems to work, but I am curious what people with more Linux experience
have to say.
Setup: My frontend is on an xbox running xebian with /mnt/store mounted
to an NFS on the backend. Mythgallery on the frontend points to
/mnt/store/pictures.
Issue: thumbnails cannot be generated by mythgallery due to permissions
on .thumbcache directories.
Background: I knew from previous posts that mythgallery needed write
permissions on the base directories. I could manually do this every now
and then, but I wanted this to be somewhat automatic for new picture
directories created on backend.
My Solution:
1) Setup directories on backend per:
chmod 0777 +R /nfs/store/pictures
chown +R mythtv /nfs/store/pictures (not sure if needed or if any
non-root user is ok)
chgrp +R mythtv /nfs/store/pictures (not sure if needed or if any
non-root user is ok)
Note: Hate having permissions of 0777, but unsure how to coordinate
users on NFS client and server.
2) Ensured the following script is run every time my frontend is started
which ensures that any new picture directores created since the last
bootup have correct ./thumbcache directories.
#!/usr/bin/perl
# Purpose: Create needed thumbnail directories used by mythgallery.
# This is done due to apparent issue in mthgallery on xebian
# where the .thumbcache directories are created with the incorrect
# permissions. #
# Functionality: This script will recurse the mythgallery picture directory
# and create needed directories. It will also ensure
that all
# thumbnail directories have permissions set.
#
# Added call to this script in live user's .bash_rc
use File::Find;
use Cwd;
use constant MODE => 0777;
use constant BASE_DIR => "/mnt/store/pictures/";
use constant SUB_DIR => ".thumbcache";
# recursively search all directories where mythgallery stores images
finddepth (\&checkPermissions, BASE_DIR);
# function to call for each file and directory found
sub checkPermissions
{
# ensure we do not recursively create directories under the
thumbcache directories
if ($File::Find::dir eq SUBDIR)
{
exit;
}
# if this is a directory and not a thumbcache directory
if ((-d $_) && ($_ ne SUB_DIR))
{
opendir(DIR, $File::Find::name);
# read file/directory names in that directory into @names
@names = readdir(DIR);
closedir(DIR);
# determine if there already exists a cache directory
my $thumbcacheFound = 0;
# Search through entries in this directory
foreach $name (@names)
{
# Set flag if match found
if ($name eq SUB_DIR)
{
$thumbcacheFound = 1;
}
}
my $new_dir = $File::Find::name . "/" . SUB_DIR;
# if mythgallery has already created a cache directory
if ($thumbcacheFound)
{
# do nothing. chmod will occur below.
print "Found existing cache directory: " . $new_dir . "\n";
}
else
{
# create a .thumbcache directory
if (mkdir $new_dir, MODE)
{
print "Created new directory: " . $new_dir . "\n";
}
else
{
print "Unable to create new directory: " . $new_dir . "\n";
}
}
# change the directory permissions to ensure that mythgallery
# can write to the directory
if ((chmod MODE, $new_dir) != 1)
{
print "Unable to modify permissions of directory: " .
$new_dir . "\n";
}
else
{
print "Updated permissions of directory: " . $new_dir . "\n";
}
}
else
{
# Do nothing
}
}
More information about the mythtv-users
mailing list