window中对ubuntu通过samba共享出来的文件没有写权限/无法修改--转载

【问题】
已经实现了Ubuntu 10.10下,通过Samba共享出来文件夹,在 Windows 下面,已经实现了可以正常访问,读取文件或文件夹了。
但是却发现没有写入的权限。从ubuntu共享出去的文件,只允许一个叫做tq2440的 用户 访问。
【解决过程】
1.最容易想到的原因就是smb的配置是否正确了,但是我这里确保我的配置是正确的,是通过samba的图形界面配置的,的确勾选了可写入的那个选项的,而且共享出来的共3文件夹,其中一个文件夹也的确是可以写入的,但是另外两个文件夹不可以写入而已。所以肯定不是这个原因。
2.网上说有关于SELinux的问题,而我此处的ubuntu都没有装它,所以执行getsebool,都会提示如下内容:
  1. crifan@crifan-ubuntu10:~/develop$ getsebool
  2. 程序“getsebool”尚未安装。 您可以使用以下命令安装:
  3. sudo apt-get install selinux-utils
复制代码

所以,此处肯定不是这个原因。
3.有人在这里:
http://www.linuxdiyf.com/bbs/thread-166768-1-1.html
提到了文件所属于哪个用户的问题:
“linux文件 系统 的权限设置是个前提, 无论samba的访问权限怎么设置, 用户在linux中无权访问的文件在samba中也肯定是不能访问的.”
而当前这些文件都是我的root用户crifan所建立的,但是共享出去给tq2440的用户访问,所以觉得貌似可能是这个原因。
所以想到去ubuntu下面改一下文件所属的用户,试试是否可行:
  1. crifan@crifan-ubuntu10:~/develop$ pwd
  2. /home/crifan/develop

  3. crifan@crifan-ubuntu10:~/develop$ ls
  4. EABI-4.3.3_EmbedSky_20091210.tar tq2440u
  5. crifan@crifan-ubuntu10:~/develop$ sudo chown -hR tq2440 tq2440/
复制代码

即,把共享出去的tq2440文件夹及其下面所有文件所属的用户从原先的crifan改成tq2440,然后再去windows下面重新访问,的确就可以实现写write的操作了。
看来此处问题原因就是这个 文件/文件夹所属用户权限不正确,导致无法写入 的。

【后记 2011-04-02】
前面已经实现了从windows中修改ubuntu中的文件了,但是还是有个问题。
本身,我从ubuntu中共享出去的目录是tq2440/ ,但是是用crifan用户创建的,但是我共享出去的tq2440/文件夹,是给一个叫做tq2440的用户所共享的,现在我虽然可以在windows下面对tq2440文件夹的上层文件夹develop进行写入操作,但是却无法对tq2440目录及下面的文件进行修改。
后来,通过chown命令,将tq2440文件夹及下面文件的所有者owner都改为tq2440用户:
  1. chown -hR tq2440 tq2440/
复制代码

虽然可以实现需要的效果,即,从windows上可以修改qt2440目录及其下的文件了,但是回到ubuntu下,用现在登录的crifan用户去tq2440目录下面操作,却无法进行写入修改等操作了,所以很是郁闷。
然后想到,是不是可以将crifan和tq2440两个用户都设置到一个组里面,然后给该组设置权限为可以修改。
然后就去尝试,新建了一个组叫做develop,然后把crifan和tq2440都加入到该组中。然后去设置tq2440目录的组为develop:
  1. chown -hR crifan:develop qt2440/
复制代码

但是,结果去windows下面尝试,结果还是没有写的权限。
( 
【后记 2011-04-03】
后来经过尝试,先去 系统 -> 系统管理 -> 用户和组,把crifan和tq2440两个用户都设置为develop组,
然后再去把tq2440的用户权限添加为 同组用户也有读和写的权限:
  1. sudo chown -hR crifan:develop tq2440/
复制代码

这样设置才是正确的,然后tq2440的用户,在windows下访问Ubuntu中通过samba共享出来的tq2440的文件夹,就也可以写入了。


最后,经过折腾,还是通过修改组和其他用户的操作权限才解决次问题:
  1. chmod -R go+rwx qt2440/
复制代码

其中:
-R: Recursive,递归模式,修改该文件夹及其下所有文件和文件夹
go: g是Group组,o是Other其他用户
+ : 是添加权限
rwx:r是Read读,w是Write写,x是eXecute执行
这样,就可以针对tq2440及其下所有文件都改成了,不仅创建者crifan自己可以修改,同组的其他用户和其他的用户,都可以有写的权限了:

  1. crifan@crifan-ubuntu10:~/develop$ chmod -R ga+rwx tq2440/ 
  2. crifan@crifan-ubuntu10:~/develop$ ls -l
  3. 总计 499128
  4. drwxrwxrwx 3 crifan develop      4096 2011-04-01 21:16 tq2440
复制代码


【引用】
http://hanyuanbo.iteye.com/blog/751199
关于ls,chmod,chown等命令的具体解释:
1. 终端的最基本操作 
ls          # 显示当前文件夹下的内容 
-a -l -R -d #所有文件 /详细信息/递归的显示所有目录和文件/不递归 
cd .. / -  # 进入上/上一次 文件夹 
mkdir cp rm rmdir rm -r  vim chmod pwd mv #  创建文件夹  复制/删除/删除空文件夹/删除文件夹  编辑/改变权限/查看当前目录/移动文件 
mv 文件名 新文件名  #重命名 

其中的一些介绍 
ls -l  #显示的内容意思 
这是第一列的意义: -l连接文件 
-d目录文件 
-普通文件 文本文件和二进制文件 
[bcp]特殊文件(即b或c或p) 
这是第二列到第十列的意思: 读写执行权限 
-   rwx  rwx rwx  2  root  root 1234  Jun 26 11:21  test.txt 
1  2     3     4    5    6      7      8       9                   10 
1. 文件的类型 
2. 拥有者对该文件的权限(read write execute) 
3. 群组对该文件的权限 
4. 其他人对该文件的权限 
5. 与该文件[夹]的连接数目 
6. 拥有者的用户名 
7. 群组的名称 
8. 文件大小 
9. 创建日期 
10. 文件[夹]名称 

2. 改变权限的命令: 
1. chmod [-R] 750  filename/filelist 则是 111 101 000 改变各个用户的权限。如: chmod 755 /usr/local/*  将该文件夹下的文件赋予755权限 
2. chmod [-R] [ugoa] [+-=] [rwx] filename/filelist 



http://www.opensourceproject.org.cn/article.php?id=456
Symbolic Mode
The format of a symbolic mode is `[ugoa...][[+-=][rwxXs tugo...]...][,...]'. 

Multiple symbolic operations can be given, separated by commas.

A combination of the letters `ugoa' controls which users' access to the file will be changed:

The user who owns it (u)
Other users in the file's group (g)
Other users not in the file's group (o)
All users (a)

If none of these are given, the effect is as if `a' were given, but bits that are set in the umask are not affected.

all users (a) is effectively 
user + group + others

The operator '+' causes the permissions selected to be added to the existing permissions of each file; '-' causes them to be removed; and '=' causes them to be the only permissions that the file has.

The letters 'rwxXstugo' select the new permissions for the affected users:

Read (r), 
Write (w), 
Execute (or access for directories) (x), 
Execute only if the file is a directory or already has execute permission for some user (X), 
Set user or group ID on execution (s), 
Save program text on swap device (t), 
The permissions that the user who owns the file currently has for it (u), 
The permissions that other users in the file's group have for it (g), 
Permissions that other users not in the file's group have for it (o).

你可能感兴趣的:(LINUX)