$ 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
縮寫
全名
說明
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(寫入)
# 新增 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