问题描述
我的Linux机器上连接了一个外部硬盘驱动器。我想设置一个Web服务器来访问其上的文件,但是驱动器上所有文件和目录的权限均为所有者(我的本地登录名)为rwx
,该组为root
组。
我需要apache用户可读的文件,我试图将所有文件都设置为chmod a+rwx -R *
,但是这没有任何作用(没有错误,没有任何作用。)我尝试使用chgrp
将组更改为我的用户组,但那也不行,即使我以sudo
的身份运行所有这些命令,也会出现我缺少权限的错误!
这个硬盘有什么问题??? sudo chmod a+rwx *
应该可以处理任何事情,对吗?
最佳方法
首先通过df -T
检查它使用的文件系统类型:
sys@p:~$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
ext3 ext3 19222656 1050948 17195164 6% /
tmpfs tmpfs 1684988 0 1684988 0% /lib/init/rw
udev tmpfs 10240 64 10176 1% /dev
tmpfs tmpfs 1684988 0 1684988 0% /dev/shm
例如,如果它安装在/mnt/external
上,您将在最右边的列中看到它。您可以在第二列中看到文件系统类型。如果是NTFS,则需要NTFS-3G(可能已经安装,如果不是sudo apt-get install ntfs-config
,则可能是gksu ntfs-config
)。 Linux已经具有FAT支持,用于读取&尽管它们不支持权限,但仍要写
如果要挂载所有权应用于特定用户/组的NTFS分区,请在挂载开关中指定它:
mount -o uid=username,gid=groupname /dev/sdc /path/to/mount
如果按照上述建议更改为ext3,则可以使用chown
:
chown -R user *
chown -R user .
次佳方法
正如Kim所说,您将只获得Unix文件系统的Unix权限和所有权。 ext3是一个不错的选择。
如果必须使用该驱动器而无需重新格式化,则可以使用mount
命令的选项来指定其所有者,组和/或读/写权限。这些选项会影响驱动器上的所有文件(有关如何确定FSTYPE的信息,请参见John T的答案):
# list files as owned by X, use numerical UID as found in /etc/passwd
$ mount -t <FSTYPE> -o uid=X /dev/?? /path/to/mount/point
# list files as owned by group Y, use numerical GID found in /etc/passwd
$ mount -t <FSTYPE> -o gid=Y /dev/?? /path/to/mount/point
# list files as accessible per umask
# (022 gives rwx permissions to owner, r-x permissions to everyone else)
$ mount -t <FSTYPE> -o umask=022 /dev/?? /path/to/mount/point
# combine all of the above:
$ mount -t <FSTYPE> -o uid=X,gid=Y,umask=022 /dev/?? /path/to/mount/point