• 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

    下面简单记录下我从视频里面学到了的东西吧。

    Read on →

  • 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 真的很容易,而且很快:

    Read on →

  • 安装 vsftpd

    目前是和 @dotkrnl 一起合买 DigitalOcean 的 VPS ,我们目前在 VPS 上面放置了两三个 PHP 虚拟主机。之前 @dotkrnl 已经很好地配置了 nginx, php-fpmMariaDB ,然后我自己装了个 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 即可!

    Read on →