LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   Mounting cifs with read/write permissions for a non-root user (https://www.linuxquestions.org/questions/linux-newbie-8/mounting-cifs-with-read-write-permissions-for-a-non-root-user-738733/)

icmp_request 07-08-2009 06:20 PM

Mounting cifs with read/write permissions for a non-root user
 
Hello guys!

I want to mount a cifs folder and I wish to give the user id 1701 read AND write permission. I've already tried adding "user" on fstab but when I try to mount the mount command cannot be run by a user. I tried as root anyway and gave the following command:

mount -t cifs //192.168.0.2/Share /mnt/share/ -o iocharset=utf8,uid=1701,gid=1701,rw

The problem is, it only mounts the folder with r-x permissions so I don't have +w on any of its files. I've already tried chmod the folder to 1777 but no success... any ideas? :/

Edit: See below:

root@voyager:/mnt# ls -n
total 8
drwxr-xr-x 2 0 0 4096 2009-07-08 19:14 cifs-1
drwxr-xr-x 2 0 0 4096 2009-07-08 19:14 cifs-2
dr-xr-xr-x 1 1701 1701 0 2009-07-08 18:52 share

shane25119 07-08-2009 09:13 PM

This isn't completely the same issue, but you may find this helpful- I wrote a howto article on mounting a Iomega Network Drive (which uses cifs back in the day- your answer may be included therein:

http://www.linuxquestions.org/linux/...issues_with_cp

Specifically, the command I used to mount:

Code:

sudo mount -t cifs //192.168.0.11/backup /media/network_drive -o username=$USER,password=$PASSWORD,uid=$USER
password=$ROOT_PASSWORD

Let me know if this is what you were looking for.

icmp_request 07-09-2009 09:08 AM

Thanks for the reply, shane25119.

But when I visit the page, I receive the message:

You are not authorized to access this page.

Also, isn't a security issue giving a command or assigning a variable the root password?

shane25119 07-09-2009 01:31 PM

You are right it is a security issue- I'm hoping however that my script might contain the proper permissions to at least get it mounted. Please remember- this script doesn't work via fstab- it mounts when the script is executed. No different than a USB stick really.
Let me know if you glean anything from here... else I'll start doing some research to help ya out.

Here it is pasted:::::

Data is valuable and making backups is a great idea. Unfortunately, backing up is time consuming, so it makes great sense to have a script do it for you. Rsync is the undisputed favorite script for this task.

However, there is a bug in rsync that causes it to completely mangle timestamps on some systems, everything I have read suggest it is a Nautilus problem. This is a work around to allow you to automatically backup to a network harddrive if you run into rsync's timestamp problems.

This guide is written for Ubuntu, but can easily be adapted to any distribution.

First off, hook up your network hard drive and configure it (i.e. set passwords, name it, etc).

Next, create a mount point for our network drive- from the command prompt:

Code:

sudo mkdir /media/network_drive

Of course, you can call it anything you want, network_drive, backup, lollipops etc.

I prefer to only mount my network drive while in use; so, I begin my script by mounting the drive: (Please note, the echos are not strictly speaking needed, I just like to know what's going on).

Code:

#!/bin/bash
echo "Remote Backup Script- Docs"

echo "Mounting Remote Drive"

sudo mount -t cifs //192.168.0.11/backup /media/network_drive -o username=$USER,password=$PASSWORD,uid=$USER
password=$ROOT_PASSWORD

In the above code, //192.168.0.11/backup represents first the IP address of the network hard drive on the network, and then the topmost directory there in.

$USER represents the username you have set for your network drive
$PASSWORD is, you guessed it, the password for your network drive

$ROOT_PASSWORD is the system's root password, you don't have to enter this, but if you don't you will have to enter the root password everytime the script runs before it can go onward.

Next up, we'll start backing things up.

Now, normally, we'd launch straight into rsync and just be done with it. But since goofed up time stamps can totally mess up any backup scheme we're going to use a hybrid of rsync and cp.

Since we want a copy of what's on our computer we should make sure the network drive and the local drive are the same. So, we're going to have rsync compare the local drive to the network drive and delete the files on the network drive that are not on the local drive. For this example, we're going to use my documents folder:

Code:

rsync -r --delete /home/shane/docs/ /media/network_drive/docs/

/home/shane/docs is my documents folder, the source.
/media/network_drive/docs/ is my backup, the destination.

-r stands for recursive, this tells rsync to go down into folders to look.
--delete tells it to delete excess files on the destination.

After that's done, we're going to go ahead and backup:

Code:

cp -aupr /home/shane/docs /media/network_drive/

-a stands for archieve, to create a backup.
-u stands for update, this way we'll only be copying files which are newer on the source (our local drive and leave the other files alone).
-r stands for recursive, this tells cp to go down into the folders.
-p is preserve, this makes sure the timestamps stay the same across both the local drive and the network drive.

You can repeat this as many times as you need to with as many different directories as you
like.


Once you're all done you need to take the network drive down:

Code:

echo "Unmounting Network Drive..."
sudo umount /media/network_drive

Of course, make sure to change 'network_drive' to whatever you called your network drive.


Go ahead and save the file, now it is time to set it's permissions so it can be executed by a regular user:::

From the command line

Code:

chown root yourscript
chmod 4755 yourscript

yourscript- is whatever you named the script, make sure you change the command prompt's directory to whereever the script is at.

Next up, we'll set how often you want it to run. This we can do from a graphical interface in GNOME.

That tutorial has been written already, and it is here: https://help.ubuntu.com/community/CronHowto

For some reason, gnome-schedule was not on my start-menu, so I just used the run command to start 'scheduled-tasks'.

icmp_request 07-09-2009 03:08 PM

Hello shane25119! I thank you for the script but it still mounts my 'mnt' folder as read-only. So the rest of the script I didn't even try. The point is to be able to mount to read and write for a non-root user.

I've decided to continue this discussion in a Forum that I believe that's better for this kind of question:

http://www.linuxquestions.org/questi...8/#post3602555

Admins please feel free to lock this thread.

shane25119 07-09-2009 08:16 PM

No worries, I don't really have much idea at this point... but I will be following the new thread.


All times are GMT -5. The time now is 11:51 PM.