Linux文件權限和屬性的修改
文件權限的修改:
-rwxrwxrwx
u g o
①其中r=4 w=2 x=1 可根據數值來修改權限
[root@server55 ~]#chmod 755 文件名 此時修改後的權限爲 –rwxr-xr-x
②使用 = 來規定 u g o (user group other)的權限
[root@server55 ~]#chmod o= --- 文件名 此時其他權限不變 o沒有任何權限
③使用 + - 來添加和刪減權限
[root@server55 ~]#chmod u+x,go-w 文件名 u添加x,g和o刪去w,;注意其間用逗號連接
-R遞歸修改
--reference=文件a 文件b b參照a的權限修改
文件屬主和屬組的修改:
[root@server55 ~]#chown 選項 屬主:屬組 文件名
-R 遞歸修改
--reference=文件a 文件b b參照a的屬住屬組修改
[root@server55 ~]#chown –R redhat:redhat a 將a目錄的屬組屬主全都更改爲redhat
[root@server55 ~]#chgrp 選項 屬組 文件名
-R 遞歸修改
--reference=文件a 文件b b參照a的屬住屬組修改
BASH功能的介紹
1. 命令行編輯
ctrl+a 光標跳到命令行的前端
ctrl+e 光標跳到命令行的尾部
ctrl+u 刪除光標前內容
ctrl+k 刪除光標後內容
2. 文件名通配
多與ls命令配合使用
*:爲任意長度通配符;
?:爲單字通配符;
[]:[]括號內內容單個匹配;eg:以abc任意一個字母開頭的文件名:[abc]*
[:alpha:]指代任意字母
[:digit:]指代任意數字
[:lower:]指代小寫字母
[:upper:]指代大寫字母
[:space:]指代空字符
eg:以字母開頭的緊接着是數字的文件
[[:alpha:]][[:digit:]]*
eg:顯示/etc目錄下的字母數字開頭的文件
[root@server55 ~]# ls /etc/[[:alpha:]][[:digit:]]*
/etc/a2ps.cfg /etc/a2ps-site.cfg
3. 命令行和路徑補全功能
輸入命令時補全鍵位TAB鍵,若無法補全 連續按兩次TAB,顯示與當前字符匹配的所有命令。
輸入文件路徑時按TAB會補全與之先匹配的路徑。
4.命令行展開
~:對應用戶的家目錄。
{}:eg:mkdir –pv {x,y}_{1,2,3} 則在當前目錄下生成x1,x2,x3,y1,y2,y3六個文件。
5.命令行擴展
$()或 ` `反引號
[root@server55 ~]# touch a-`date +"%y-%m-%d-%H-%M-%S"`
[root@server55 ~]# ls
a a-11-07-19-10-54-45 Desktop install.log install.log.syslog
其中 ` ` 爲命令替換符,起作用是將 ` …` 中的指令執行,並返回結果。
腳本的簡單介紹
腳本script:就是命令的堆砌。
變量引用:
[root@server55 ~]#ab=myfile 定義一個變量
[root@server55 ~]#touch “$sb” $變量 返回變量的值
生成文件名爲myfile的文件
$變量:返回變量的值
' ' :強引用,單引號內不會發生變量替換;
" ":弱引用,雙引號內會發生變量替換。
簡單腳本的編寫:
腳本開頭固定格式#!/bin/bash
實例:
寫一個腳本:
複製/etc/skel目錄至/home,並且重命名爲centos
設定此目錄及其內部文件或子目錄的屬主屬組爲redhat用戶,redhat組
設定此目錄及其內部文件或子目錄的權限爲屬組和其它用戶沒有任何權限
修改redhat用戶的家目錄爲/home/centos
切換至redhat用戶,驗正其家目錄是否正常可用
腳本實現:
#!/bin/bash
#
cp -R /etc/skel /home/centos
ls -ldh /home/centos
chown redhat:redhat /home/centos -R
ls -ldh /home/centos
chmod 700 -R /home/centos
ls -lh /home/centos
usermod -d /home/centos redhat
finger redhat
su - redhat
運行腳本:
[root@server55 ~]# nano myscript.sh
[root@server55 ~]# ./myscript.sh
drwx------ 4 redhat redhat 4.0K Jul 19 13:58 /home/centos
drwx------ 4 redhat redhat 4.0K Jul 19 13:58 /home/centos
total 8.0K
drwx------ 3 redhat redhat 4.0K Jul 19 13:58 skel
Login: redhat Name: (null)
Directory: /home/centos Shell: /bin/bash
Never logged in.
No mail.
No Plan.
[redhat@server55 ~]$ pwd
/home/centos
寫一個腳本:
1、創建目錄/tmp/scripts
2、切換工作目錄至此目錄中
3、複製/etc/pam.d目錄至當前目錄,並重命令爲test
4、將當前目錄中的test及其裏面的文件和子目錄的屬主改爲redhat
5、將test及其子目錄中的文件的其它用戶的權限改爲沒有任何權限
腳本內容:
#!/bin/bash
mkdir -p /tmp/scripts
ls -ldh /tmp/scripts
cd /tmp/scripts
pwd
cp -R /etc/pam.d test
ls -l test
chown redhat:redhat test -R
ls -l test
chmod -R o=--- test
ls -l test
執行腳本:
[root@server55 ~]# ./testscript1.sh
執行結果:
total 552
-rw-r----- 1 redhat redhat 390 Jul 19 14:20 atd
-rw-r----- 1 redhat redhat 97 Jul 19 14:20 authconfig
-rw-r----- 1 redhat redhat 97 Jul 19 14:20 authconfig-gtk
-rw-r----- 1 redhat redhat 97 Jul 19 14:20 authconfig-tui
-rw-r----- 1 redhat redhat 192 Jul 19 14:20 chfn
-rw-r----- 1 redhat redhat 192 Jul 19 14:20 chsh
-rw-r----- 1 redhat redhat 232 Jul 19 14:20 config-util
……
寫一個腳本:
1、顯示當前系統日期和時間,而後創建目錄/tmp/lstest
2、切換工作目錄至/tmp/lstest
3、創建目錄a1d, b56e, 6test
4、創建空文件xy, x2y, 732
5、列出當前目錄下以a、x或者6開頭的文件或目錄;
6、列出當前目錄下以字母開頭,後跟一個任意數字,而後跟任意長度字符的文件或目錄;
腳本內容:
#!/bin/bash
date
mkdir /tmp/lstest
cd /tmp/lstest
mkdir a1d b56e 6test
touch xy x2y 732
ls -ldh
ls -ldh [ax6]*
ls -ldh [[:alpha:]][[:digit:]]*
執行腳本:
[root@server55 ~]# ./testscript2.sh
執行結果:
Tue Jul 19 14:49:02 CST 2011
drwxr-xr-x 5 root root 4.0K Jul 19 14:49 .
drwxr-xr-x 2 root root 4.0K Jul 19 14:49 6test
drwxr-xr-x 2 root root 4.0K Jul 19 14:49 a1d
-rw-r--r-- 1 root root 0 Jul 19 14:49 x2y
-rw-r--r-- 1 root root 0 Jul 19 14:49 xy
drwxr-xr-x 2 root root 4.0K Jul 19 14:49 a1d
drwxr-xr-x 2 root root 4.0K Jul 19 14:49 b56e
-rw-r--r-- 1 root root 0 Jul 19 14:49 x2y
注意:ls –d 顯示目錄自身的屬性,而不是目錄中的文件。
eg:
①:不加-d
[root@server55 ~]# ls -l /tmp/lstest/[[:alpha:]][[:digit:]]*
-rw-r--r-- 1 root root 0 Jul 19 14:34 /tmp/lstest/x2y
/tmp/lstest/a1d:
total 0
/tmp/lstest/b56e:
total 0
②:加-d之後
[root@server55 ~]# ls -ld /tmp/lstest/[[:alpha:]][[:digit:]]*
drwxr-xr-x 2 root root 4096 Jul 19 14:34 /tmp/lstest/a1d
drwxr-xr-x 2 root root 4096 Jul 19 14:34 /tmp/lstest/b56e
-rw-r--r-- 1 root root 0 Jul 19 14:34 /tmp/lstest/x2y
兩者本質如下:
[root@server55 ~]# ls -ld /tmp/lstest/ a1d
[root@server55 ~]# ls -l /tmp/lstest/ a1d
的區別,由於a1d是目錄文件所以不加-d就查看其目錄下的內容了。
July 19th 23:55 2011