-
SELinux 初接触
起因
事情是这样的,因为不想在 OS X 上装一大堆东西,所以我装了台 CentOS 7 虚拟机作开发环境。我很开心地
yum install httpd php
,然后随便git clone
了个 PHP 脚本,结果竟然挂了:[Tue Jul 22 15:27:24.474225 2014] [:error] [pid 3739] [client 192.168.0.2:59118] PHP Warning: fopen(sessions/86e9d16ee7c20c458f): failed to open stream: Permission denied in /var/www/html/cookielesscookies/index.php on line 38, referer: http://192.168.0.251/cookielesscookies/
嗯, Permission denied 好说,权限问题嘛,把用户和用户组改成
apache
嘛。结果问题依旧。呃,那就简单粗暴地递归修改权限为0777
嘛。问题仍然存在……这就有点匪夷所思了, Permission denied 这种问题一般来说就是文件权限的问题,可我甚至检查了若干个父目录,权限设置看起来都没问题。在折腾了一个多小时后,突然一拍脑袋想起来有个叫做 SELinux 的东西!
果然一把 SELinux 关掉,问题就解决了!然后我就发了条微博来吐槽 SELinux。没想到转着转着,竟然有人给了这么个网站:Stop Disabling SELinux 。里面有个链接,是 Red Hat 2012年峰会的一个关于 SELinux 的讲座。看了之后真的觉得,确实是冤枉了 SELinux,自己也确实是太年轻了。
有关 SELinux
下面简单记录下我从视频里面学到了的东西吧。
-
SSH Login without Password
ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
-
缩小 LVM 空间
本来我的电脑上就装了个 Fedora ,后来发现不用来工作的话 Linux 真是诸事不宜,所以决定装一个 Windows 8.1 。于是我就要缩减 Fedora 的空间。我的硬盘大概是这么划分的:
/dev/sda1 => /boot /dev/sda2 => vg_centos LVM: vg_centos/lv_root vg_centos/lv_home vg_centos/lv_swap
当然我要把
lv_home
缩减掉,缩减 Logical Volume 真的很容易,而且很快: -
安装 vsftpd
目前是和 @dotkrnl 一起合买 DigitalOcean 的 VPS ,我们目前在 VPS 上面放置了两三个 PHP 虚拟主机。之前 @dotkrnl 已经很好地配置了
nginx
,php-fpm
和MariaDB
,然后我自己装了个 Wordpress ,发现没有 FTP 好不方便,于是我就装了个vsftpd
,下面的记录可供参考。首先,服务器的背景是这样的:
- 网站在
/srv/http/www/abcdabcd987.com/
里面 /srv/http/www/abcdabcd987.com/
的所有者是abcdabcd987_com
所有组是http
vsftpd.conf
如下:anonymous_enable=NO # 拒绝匿名 local_enable=YES # 用 Linux 账号登入 write_enable=YES # 允许写入 local_umask=0007 # 去除其他人的所有权限 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log ftpd_banner=Welcome to remote.dotkrnl.com FTP service. chroot_local_user=YES # 锁定根目录 allow_writeable_chroot=YES # 允许写入 listen=YES seccomp_sandbox=NO # ??? userlist_deny=NO # 只允许特定用户登入 userlist_enable=YES # 使用用户列表 userlist_file=/etc/vsftpd.allowed_users
后来发现这样 FTP 上传的文件的所有组不是
http
,由于对 Linux 权限管理不是很熟悉,所以又 Google 了一番,发现只要 把父目录chmod g+s
即可! - 网站在