Skip to content

Latest commit

 

History

History
214 lines (190 loc) · 6.15 KB

1001.md

File metadata and controls

214 lines (190 loc) · 6.15 KB

1001

userwww.sh

$ cd /home
$ vim userwww.sh
$ chmod 700 userwww.sh
$ ./userwww.sh # 執行
#!/bin/bash
for i in `ls /home` # 迭代 /home 下的檔案
do
    # 測試該『檔名』是否存在且為目錄 (directory),是的話就繼續
    # /home 下方應該都是各個使用專屬的資料夾
    test -d /home/$i || continue
    # 改變檔案權限
    chmod 755 /home/$i
    # 如果不存在的話(-p),就建立資料夾
    mkdir -p /home/$i/www
    # 取得該使用者的群組名稱
    mygroup=$(groups $i | awk '{print $3}')
    # chown <username>:<group name> <file/directory path> 改變檔案擁有者(change owner)
    # -R 遞迴式修改,連同次目錄下的所有檔案都一併變更
    chown -R $i:$mygroup /home/$i
    # chcon <file path> 改變檔案的安全性本文類型 (change context)
    # -R 遞迴式修改,連同次目錄下的所有檔案都一併變更
    # -t 安全性本文類型 (SELinux type)
    chcon -R -t httpd_user_content_t /home/$i/www
    chcon -t user_home_dir_t /home/$i
done

chmod 改變檔案權限

三組權限

縮寫 全名 說明
u user 所有者
g group 群組
o others 其他人

數字加總

縮寫 全名 數字 說明
r read 4 讀取權限
w write 2 寫入權限
x execute 1 執行權限
$ chmod u=rwx, g=rx, o=r test.txt

$ chmod 754 test.txt
# user:   7 = 4(讀取) + 2(寫入) + 1 (執行)
# group:  5 = 4(讀取) + 1(執行)
# others: 4 = 4(寫入)

myuseradd.sh

# 新增 student 群組,未指定 group_id,系統會自動產生流水號
$ groupadd student
# 檢查 student 自動產生的 group_id 流水號為多少
$ cat /etc/group | grep student
$ vim myuseradd.sh
$ chmod 700 myuseradd.sh
# 執行 myuseradd.sh <new username> <new user_id> <password>
# 後面三個參數會依序成為 sh 檔中的 $1 $2 $3
$ ./myuseradd.sh s10646003 3001 centos
#!/bin/bash
# useradd <username> 新增使用者
# -u <UID (number)> 直接指定一個特定的 UID 給這個帳號
# -g <initial group> 該群組的 GID 會被放置到 /etc/passwd 的第四個欄位內
# -G <secondary groups> 還可以加入的其他群組,會修改 /etc/group 內的相關資料
useradd -u $2 -g student -G student $1
# echo 讀出變數
# passwd --stdin 透過來自前一個管線的資料,作為密碼輸入
echo $3 | passwd --stdin $1 # 將 $3 設定成 $1 的密碼
chmod 755 /home/$1
mkdir -p /home/$1/www
chown -R $1:student /home/$1
chcon -R -t httpd_user_content_t /home/$1/www
chcon -t user_home_dir_t /home/$1

/etc/httpd/conf/httpd.conf

# CentOS 6
$ vim /etc/httpd/conf/httpd.conf
# 切換 SELinux 模式,關閉安全性
# 0: permissive 宽容模式
# 1: enforcing  强制模式
$ setenforce 0
# 重啟 httpd 服務
$ service httpd restart
# 設定開機後立即啟動 httpd 服務 (apache 套件)
$ chkconfig httpd on

# CentOS 7
$ vim /etc/httpd/conf.d/userdir.conf
# 切換 SELinux 模式,關閉安全性
$ setenforce 0
# 重啟 httpd 服務
$ systemctl restart httpd
# 設定開機後立即啟動 httpd 服務 (apache 套件)
$ systemctl enable httpd

# 防火牆 開放 http 服務 永久性生效
$ firewall-cmd --add-service=http --permanent
# 防火牆不中斷服務 重新載入
$ firewall-cmd --reload

# http in root
$ cd /var/www/html
$ mkdir 0925
$ cd /var/www/html/0925
$ vim test.php
# <?php
#     phpinfo();
# ?>

# Firefox
http://10.0.2.4/1001/test.php
# CentOS 6: PHP Version 5.3.3
http://10.0.2.15/1001/test.php
# CentOS 7: PHP Version 5.4.16

# http in user
$ cd /home
$ chmod 755 *
$ ls -l
$ cd /home/centos
$ mkdir www
$ cd www
$ vim 123.html
# <h1>Hello World</h1>

# Firefox
http://localhost/~centos/
http://10.0.2.4/~centos/
http://10.0.2.5/~centos/
366     UserDir disabled        (加#) 
367
368     #
369     # To enable requests to /~user/ to serve the users public_html
370     # directory, remove the "UserDir disabled" line above, and uncomment
371     # the following line instead:
372     #
373     # UserDir public_html    (去#  public_html > www ) 
-->  
366     # UserDir disabled
373     UserDir www


381 #<Directory /home/*/public_html>    (去#  public_html > www ) 
382 #    AllowOverride FileInfo AuthConfig Limit
383 #    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec (去# ) 
384 #    <Limit GET POST OPTIONS>
385 #        Order allow,deny
386 #        Allow from all
387 #    </Limit>
388 #    <LimitExcept GET POST OPTIONS>
389 #        Order deny,allow
390 #        Deny from all
391 #    </LimitExcept>
392 #</Directory>                       (去# ) 
-->
381 <Directory /home/*/www>
383     Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
392 </Directory>

[驗收] newusers 及 httpd 設定是否成功

$ cd /home

# 將 /home 下方的路徑資訊寫入 /home/ntcb1005/www/123.txt
$ ls -l > /home/ntcb1005/www/123.txt

$ cat /home/ntcb1005/www/123.txt
total 16
drwxr-xr-x. 4 centos    student 106 Oct  1 10:38 centos
-rwxr-xr-x. 1 root      root    229 Oct  1 10:44 myuseradd.sh
drwxr-xr-x. 3 ntcb1001  student  38 Oct  1 10:38 ntcb1001
drwxr-xr-x. 3 ntcb1002  student  17 Oct  1 10:38 ntcb1002
drwxr-xr-x. 3 ntcb1003  student  17 Oct  1 10:38 ntcb1003
drwxr-xr-x. 3 ntcb1004  student  17 Oct  1 10:38 ntcb1004
drwxr-xr-x. 3 ntcb1005  student  37 Oct  1 11:06 ntcb1005
drwxr-xr-x. 3 s10646003 student  73 Oct  1 10:44 s10646003
-rwxr-xr-x. 1 root      root     80 Oct  1 09:35 userpw.txt
-rwxr-xr-x. 1 root      root    275 Oct  1 10:01 user.txt
-rwxr-xr-x. 1 root      root    267 Oct  1 10:40 userwww.sh

# 如果第四欄的 group_name 設定時有誤,想要進行修改,可以使用
# 請先確認是否存在你想修改的群組
$ cat /etc/group | grep <group_id/group_name>
# 若不存在,請新增群組
$ groupadd -g <group_id> <group_name>
# 若上方沒有設置 -g <group_id>,可檢查系統自動產生的流水號 group_id
$ cat /etc/group | grep <group_name>
# 將 <username> 的主要群組修改為 <group_id/group_name> (CentOS 7)
$ usermod -g <group_id/group_name> <username>

# firefox
http://centos6/~ntcb1005/123.txt
http://centos7/~ntcb1005/123.txt