Re: Changing Users in a script
On Aug 15, 2011, at 2:05 PM, Bob Proulx wrote:
> Hal Vaughan wrote:
>> I have a system with several different users and would like to use
>> cron to run this script as root:
>>
>> #!/bin/bash
>>
>> for user in `ls /home/`; do
>> # echo "Path: $user"
>> if [ "${user:0:1}" != "0" ]; then
>> path="/home/$user/Backup"
>> if [ -e $path ]; then
>> echo "Calling backup for user: $user"
>> sudo -u $user /usr/local/bin/user-backup
>> fi
>> fi
>> done
>
> Personally if I were writing this then if the script is running as
> root then instead of using 'sudo' here I would use 'su' instead.
>
> su -c /usr/local/bin/user-backup $user
>
> Mostly because su is more traditional and "more core" than sudo and
> just seems like the better fit for the job. But it is a matter of
> taste here.
Senile moment -- I keep forgetting that I can use su for different users, too. Thanks for the reminder!
>> The idea is that instead of adding a backup script every time I add
>> a user, this script will go through the /home directories and skip
>> any that start with a 0 (a program I'm using creates some
>> directories there, but starts their names with a 0) and
>> automatically call the generic backup script for that user.
>
> Seems reasonable so far. Also you should skip directories called
> "lost+found" in the case that /home happens to be a mount point on a
> filesystem such as ext[23] that uses lost+found.
Thanks for the reminder!
>> The problem is sudo can't be run without a tty, so I can run it
>> myself, but it won't run from a script.
>
> Using 'su' would solve that problem.
>
>> Any other way I can do this?
>
> There are distinct advantages to a backup push system. Not proposing
> that you change away from it. But I tend to pull backups from /home
> to the backup server. This means that whatever is in /home comes over
> whether it is associated with a user's home directory or not. All I
> manage is machines. Not machines and users.
How is it that a pull system would get more? I didn't know there'd be files associated with a user that are outside of their home directory.
Hal
Reply to: