如何在Linux/Unix Web服务器DocumentRoot上设置只读文件权限
如何为存储在/var/www/html /目录中的所有文件设置只读权限?
您可以使用chmod命令为Linux/Unix/macOS/Apple OS X/* BSD操作系统上的所有文件设置只读权限。
本教程说明如何在Linux或Unix Web服务器(例如Nginx,Lighttpd,Apache等)上设置只读文件权限。
如何以只读模式设置文件
语法为:
## use only for files ## chmod 0444 /var/www/html/* chmod 0444 /var/www/html/*.php
如何以只读模式设置目录
要将目录设置为只读模式,请执行:
## use only for dirs ## chmod 0444 /var/www/html/ chmod 0444 /path/to/your/dir/ # *************************************************************************** # Say webserver user/group is www-data, and file-owned by ftp-data user/group # *************************************************************************** # All files/dirs are read-only chmod -R 0444 /var/www/html/ # All files/dir owned by ftp-data chown -R ftp-data:ftp-data /var/www/html/ # All directories and sub-dirs has 0445 permission (so that webserver user www-data can read our files) find /var/www/html/ -type d -print0 | xargs -0 -I {} chmod 0445 "{}"
要查找所有文件(包括/var/www/html中的子目录)并设置只读权限,请执行:
## works on files only ## find /var/www/html -type f -iname "*" -print0 | xargs -I {} -0 chmod 0444 {}
但是,您需要在/var/www/html和所有子目录上设置只读权限并执行权限,以便Web服务器可以输入您的DocumentRoot,执行:
## works on dirs only ## find /var/www/html -type d -iname "*" -print0 | xargs -I {} -0 chmod 0544 {}
关于写权限的警告
请注意,对目录/var/www/html /的写访问允许任何人删除或添加新文件。
换句话说,您可能需要为/var/www/html /目录本身设置只读权限:
## read-only web-root but web server allowed to read files ## chmod 0555 /var/www/html
在某些情况下,您可以根据设置更改文件所有者和组以设置严格权限:
### Say /var/www/html is owned by normal user, you can set it to root:root or httpd:httpd (recommended) ### chown -R root:root /var/www/html/ ## Make sure apache user owns /var/www/html/ ## chown -R apache:apache /var/www/html/
关于NFS导出目录的说明
您可以使用/etc/exports文件指定目录是具有只读权限还是具有读/写权限。
该文件定义了NFS服务器上的各种共享及其权限。
一些例子:
# Read-only access to anyone /var/www/html *(ro,sync) # Read-write access to a client on 192.168.1.10 (upload.example.com) /var/www/html 192.168.1.10(rw,sync)
有关MS-Windows客户端的只读Samba(CIFS)共享的说明
要以只读方式共享销售,请如下更新smb.conf:
[sales] comment = Sales Data path = /export/cifs/sales read only = Yes guest ok = Yes
关于文件系统表的注释
您可以在Unix或Linux上使用/etc/fstab文件配置为以只读模式挂载某些文件。
您需要有一个专用分区。
不要将/或其他系统分区设置为只读模式。
在此示例中,使用/etc/fstab文件将/srv/html设置为只读模式:
/dev/sda6 /srv/html ext4 ro 1 1
您可以使用mount命令以只读模式重新安装分区(以root用户身份运行):
# mount -o remount,ro /dev/sda6 /srv/html
或者
# mount -o remount,ro /srv/html
上面的命令将尝试尝试在/srv/html处重新挂载已经挂载的文件系统。
这通常用于更改文件系统的安装标志,尤其是使只读文件系统可写。
它不会更改设备或安装点。
要使文件系统再次可写,请执行:
# mount -o remount,rw /dev/sda6 /srv/html
或者
# mount -o remount,rw /srv/html
Linux:chattr命令
您可以使用chattr命令将Linux文件系统上的文件属性更改为只读:
chattr +i /path/to/file.php chattr +i /var/www/html/ # find everything in /var/www/html and set to read-only # find /var/www/html -iname "*" -print0 | xargs -I {} -0 chattr +i {}
要删除只读属性,请通过-i选项:
# chattr -i /path/to/file.php
FreeBSD,Mac OS X和其他BSD Unix用户可以使用chflags命令:
## set read-only ## chflags schg /path/to/file.php # remove read-only ## chflags noschg /path/to/file.php