淺談Centos用戶權限管理

淺談Centos用戶權限管理

2014年12月03日 11:02:56 lyg520lj 閱讀數:586mysql

一.用戶與組的概念
1.理解linux多用戶,多任務的特性
Linux是一個真實的、完整的多用戶多任務操做系統,多用戶多任務就是能夠在系統上創建多個用戶,而多個用戶能夠在同一時間內登陸同一個系統執行各自不一樣的任務,而互不影響,例如某臺linux服務器上有4個用戶,分別是root、www、ftp和mysql,在同一時間內,root用戶可能在查看系統日誌,管理維護系統,www用戶可能在修改本身的網頁程序,ftp用戶可能在上傳軟件到服務器,mysql用戶可能在執行本身的SQL查詢,每一個用戶互不干擾,有條不紊的進行着本身的工做,而每一個用戶之間不能越權訪問,好比www用戶不能執行mysql用戶的SQL查詢操做,ftp用戶也不能修改www用戶的網頁程序,所以可知,不一樣用戶具備不一樣的權限,每一個用戶是在權限容許的範圍內完成不一樣的任務,linux正是經過這種權限的劃分與管理,實現了多用戶多任務的運行機制。
2.linux下用戶的角色分類
 在linux下用戶是根據角色定義的,具體分爲三種角色:
 超級用戶:擁有對系統的最高管理權限,默認是root用戶。
 普通用戶:只能對本身目錄下的文件進行訪問和修改,具備登陸系統的權限,例如上面提到的www用戶、ftp用戶等。
 虛擬用戶:也叫「僞」用戶,這類用戶最大的特色是不能登陸系統,它們的存在主要是方便系統管理,知足相應的系統進程對文件屬主的要求。例如系統默認的bin、adm、nobody用戶等,通常運行的web服務,默認就是使用的nobody用戶,可是nobody用戶是不能登陸系統的。
3.用戶和組的概念
 咱們知道,Linux是一個多用戶多任務的分時操做系統,若是要使用系統資源,就必須向系統管理員申請一個帳戶,而後經過這個帳戶進入系統。這個帳戶和用戶是一個概念,經過創建不一樣屬性的用戶,一方面,能夠合理的利用和控制系統資源,另外一方面也能夠幫助用戶組織文件,提供對用戶文件的安全性保護。
 每一個用戶都用一個惟一的用戶名和用戶口令,在登陸系統時,只有正確輸入了用戶名和密碼,才能進入系統和本身的主目錄。
 用戶組是具備相同特徵用戶的邏輯集合,有時咱們須要讓多個用戶具備相同的權限,好比查看、修改某一個文件的權限,一種方法是分別對多個用戶進行文件訪問受權,若是有10個用戶的話,就須要受權10次,顯然這種方法不太合理;另外一種方法是創建一個組,讓這個組具備查看、修改此文件的權限,而後將全部須要訪問此文件的用戶放入這個組中,那麼全部用戶就具備了和組同樣的權限。這就是用戶組,將用戶分組是Linux 系統中對用戶進行管理及控制訪問權限的一種手段,經過定義用戶組,在很大程度上簡化了管理工做。
4.用戶和組的關係:
用戶和用戶組的對應關係有:一對1、一對多、多對一和多對多;下圖展現了這種關係:linux


 一對一:即一個用戶能夠存在一個組中,也能夠是組中的惟一成員。
 一對多:即一個用戶能夠存在多個用戶組中。那麼此用戶具備多個組的共同權限。
 多對一:多個用戶能夠存在一個組中,這些用戶具備和組相同的權限。
 多對多:多個用戶能夠存在多個組中。其實就是上面三個對應關係的擴展。web

二 用戶配置文件概述
1.用戶和組相關的配置文件
(1)/etc/passwd文件
系統用戶配置文件,是用戶管理中最重要的一個文件。這個文件記錄了Linux系統中每一個用戶的一些基本屬性,而且對全部用戶可讀。/etc/passwd中每一行記錄對應一個用戶,每行記錄又被冒號分割,其格式和具體含義以下:
用戶名:口令:用戶標識號:組標識號:註釋性描述:主目錄:默認shell 
下面是/etc/passwd文件的部分輸出:
[root@localhost ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
下面是每一個字段的詳細含義:
 用戶名:是表明用戶帳號的字符串。
 口令:存放着加密後的用戶口令,雖然這個字段存放的只是用戶口令的加密串,不是明文,可是因爲/etc/passwd文件對全部用戶均可讀,因此這還是一個安全隱患。所以,如今許多Linux 版本都使用了shadow技術,把真正加密後的用戶口令存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一個特殊的字符,例如用「x」或者「*」來表示。 
 用戶標識號:就是用戶的UID,每一個用戶都有一個UID,而且是惟一的,一般UID號的取值範圍是0~65535,0是超級用戶root的標識號,1~99由系統保留,做爲管理帳號,普通用戶的標識號從100開始。而在Linux系統中,普通用戶UID默認從500開始。UID是linux下確認用戶權限的標誌,用戶的角色和權限都是經過UID來實現的,所以多個用戶公用一個UID是很是危險的,會形成系統權限和管理的混亂,例如將普通用戶的UID設置爲0後,這個普通用戶就具備了root用戶的權限,這是極度危險的操做。所以要儘可能保持用戶UID的惟一性。
 組標識號:就是組的GID,與用戶的UID相似,這個字段記錄了用戶所屬的用戶組。它對應着/etc/group文件中的一條記錄。
 註釋性描述:字段是對用戶的描述信息,好比用戶的住址、電話、姓名等等。
 主目錄:也就是用戶登陸到系統以後默認所處的目錄,也能夠叫作用戶的主目錄、家目錄、根目錄等等。
 默認shell:就是用戶登陸系統後默認使用的命令解釋器,shell是用戶和linux內核之間的接口,用戶所做的任何操做,都是經過shell傳遞給系統內核的。linux下經常使用的shell有sh、bash、csh等,管理員能夠根據用戶的習慣,爲每一個用戶設置不一樣的shell。
(2)/etc/shadow文件
用戶影子文件,因爲/etc/passwd文件是全部用戶均可讀的,這樣就致使了用戶的密碼容易出現泄露,所以,linux將用戶的密碼信息從/etc/passwd中分離出來,單獨的放到了一個文件中,這個文件就是/etc/shadow,該文件只有root用戶擁有讀權限,從而保證了用戶密碼的安全性。
下面介紹下/etc/shadow文件內容的格式:
用戶名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:保留字段
例如:下面是/etc/shadow文件的部分輸出:
[root@localhost ~]# more /etc/shadow
root:$1$Uvip.QJI$GteCsLrSSfpnMs.VCOvbs/:14169:0:99999:7:::
bin:*:13934:0:99999:7:::
daemon:*:13934:0:99999:7:::
adm:*:13934:0:99999:7:::
下面是每一個字段的詳細含義:
 用戶名:與/etc/passwd文件中的用戶名有相同的含義。
 加密口令:存放的是加密後的用戶口令字串,若是此字段是「*」、「!」、「x」等字符,則對應的用戶不能登陸系統。 
 最後一次修改時間:表示從某個時間起,到用戶最近一次修改口令的間隔天數。能夠經過passwd 來修改用戶的密碼,而後查看/etc/shadow中此字段的變化。
 最小時間間隔:表示兩次修改密碼之間的最小時間間隔。
 最大時間間隔:表示兩次修改密碼之間的最大時間間隔,這個設置能加強管理員管理用戶的時效性。
 警告時間:表示從系統開始警告用戶到密碼正式失效之間的天數。
 不活動時間:此字段表示用戶口令做廢多少天后,系統會禁用此用戶,也就是說系統再也不讓此用戶登陸,也不會提示用戶過時,是徹底禁用。
 失效時間:表示該用戶的賬號生存期,超過這個設定時間,賬號失效,用戶就沒法登陸系統了。若是這個字段的值爲空,賬號永久可用。
 保留字段:linux的保留字段,目前爲空,以備linux往後發展之用。
(3)/etc/group文件
用戶組配置文件,用戶組的全部信息都存放在此文件中。
下面介紹下/etc/group文件內容的格式:
組名:口令:組標識號:組內用戶列表
例如:下面是/etc/group的部分輸出:
[root@localhost ~]# more /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
下面是/etc/group每一個字段的含義:
 組名:是用戶組的名稱,由字母或數字構成。與/etc/passwd中的用戶名同樣,組名不能重複。
 口令:存放的是用戶組加密後的口令字串,密碼默認設置在/etc/gshadow文件中,而在這裏用「x」代替,linux系統下默認的用戶組都沒有口令,能夠經過gpasswd來給用戶組添加密碼。
 組標識號:就是GID,與/etc/passwd中的組標識號對應。
 組內用戶列表: 顯示屬於這個組的全部用戶,多個用戶之間用逗號分隔。
2./etc/login.defs文件
用來定義建立一個用戶時的默認設置,好比指定用戶的UID和GID的範圍,用戶的過時時間、是否須要建立用戶主目錄等等。
下面是rhel5下的/etc/login.defs文件,簡單介紹以下:
MAIL_DIR        /var/spool/mail
當建立用戶時,同時在目錄/var/spool/mail中建立一個用戶mail文件
PASS_MAX_DAYS   99999
#指定密碼保持有效的最大天數
PASS_MIN_DAYS   0
表示自從上次密碼修改以來多少天后用戶才被容許修改口令
PASS_MIN_LEN    5
指定密碼的最小長度
PASS_WARN_AGE   7
表示在口令到期前多少天系統開始通知用戶口令即將到期
UID_MIN                   500
指定最小UID爲500 ,也就是說添加用戶時,用戶的UID 從500開始
UID_MAX                 60000
指定最大UID爲60000
GID_MIN                   500
指定最小GID爲500,也就是添加組時,組的GID從500開始。
GID_MAX                 60000
指定最大GID爲60000
CREATE_HOME     yes
此項是指定是否建立用戶主目錄,yes爲建立,no爲不建立。
3./etc/default/useradd文件
當咱們經過useradd命令不加任何參數建立一個用戶後,用戶默認的主目錄通常位於/home下,默認使用的shell是/bin/bash,這是爲何呢,看看/etc/default/useradd這個文件的內容就徹底明白了。
[root@localhost ~]# more /etc/default/useradd
# useradd defaults file
GROUP=100  
HOME=/home  #此項表示將新建用戶的主目錄放在/home目錄下
INACTIVE=-1 #此項表示是否啓用賬號過時禁用,-1表示不啓用
EXPIRE=     #此項表示賬號過時日期,不設置表示不啓用
SHELL=/bin/bash  #此項指定了新建用戶的默認shell類型
SKEL=/etc/skel  #此項用來指定用戶主目錄默認文件的來源,也就是說新建用戶主目錄下的文件都是從這個目錄下複製而來的
CREATE_MAIL_SPOOL=no
/etc/default/useradd文件定義了新建用戶的一些默認屬性,好比用戶的主目錄、使用的shell等等,經過更改此文件,能夠改變建立新用戶的默認屬性值。
改變此文件有兩種方法,一種是經過文本編輯器方式更改,另外一種是經過useradd命令來更改。這裏介紹一下第二種方法:
Useradd命令加「-D」參數後,就能夠修改配置文件/etc/default/useradd,使用的通常格式爲:
useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
每一個選項詳細含義以下:
 -g default_group
表示新建用戶的起始組名或者GID,組名必須爲已經存在的用戶組名稱,GID也必須是已經存在的用戶組GID。與/etc/default/useradd文件中「GROUP」行對應。
 -b default_home
指定新建用戶主目錄的上級目錄,也就是全部新建用戶都會在此目錄下建立本身的主目錄。與/etc/default/useradd文件中HOME行對應。
 -s default_shell
指定新建用戶默認使用的shell,與/etc/default/useradd文件中「SHELL」行對應。
 -f default_inactive
指定用戶賬號過時多長時間後就永久停用,與/etc/default/useradd文件中「INACTIVE」行對應。
 -e default_expire_date
指定用戶賬號的過時時間。與/etc/default/useradd文件中「EXPIRE」行對應。
例子:
useradd –D不加任何參數時,顯示/etc/default/useradd文件的當前設置
[root@localhost ~]# useradd -D  
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
若是要修改添加用戶時的默認shell爲/bin/csh,能夠這麼操做:
[root@localhost ~]# useradd -D -s /bin/csh
[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/csh
SKEL=/etc/skel
4./etc/skel目錄
在建立一個新用戶後,會在新用戶的主目錄下看到相似.bash_profile, .bashrc, .bash_logout等文件,這些文件是怎麼來的呢,若是我想讓新創建的用戶在主目錄下默認擁有本身指定的配置文件,該如何設置呢?
/etc/skel目錄就是解決這個問題的,/etc/skel目錄定義了新建用戶在主目錄下默認的配置文件,更改/etc/skel目錄下的內容就能夠改變新建用戶默認主目錄的配置文件信息。sql

用戶管理工具  shell

一.添加、切換、刪除用戶組命令groupadd/newgrp/groupdel
1.groupadd命令
用來新建一個用戶組。語法格式爲:
groupadd [-g -o] gid  group
各個選項具體含義以下:
-g:指定新建用戶組的GID號,該GID號必須惟一,不能和其它用戶組的GID號重複。
-o:通常與-g選項同時使用,表示新用戶組的GID能夠與系統已有用戶組的GID相同。
例如:
建立一個linuxfans的用戶組和一個fanslinux用戶組,GID分別爲1020和1030
[root@localhost ~]# groupadd -g 1020 linuxfans
[root@localhost ~]# groupadd -g 1030 fanslinux
[root@localhost ~]# more /etc/group|grep  linuxfans
linuxfans:x:1020:
[root@localhost ~]# more /etc/group|grep  fanslinux
fanslinux:x:1030:
2.newgrp命令
若是一個用戶同時屬於多個用戶組,那麼用戶能夠在用戶組之間切換,以便具備其餘用戶組的權限,newgrp主要用於在多個用戶組之間進行切換,語法格式爲:
newgrp <用戶組>
 例子:下面經過實例講述newgrp的用法:
首先創建了3個用戶組group一、group2和group3.
[root@localhost ~]# groupadd group1
[root@localhost ~]# groupadd group2
[root@localhost ~]# groupadd group3
下面建立了一個用戶user1,同時指定user1的主用戶組爲group1,附加用戶組爲group2和group3
[root@localhost ~]# useradd -g group1 -G group2,group3 user1
[root@localhost ~]# more /etc/group|grep user1
group2:x:501:user1
group3:x:502:user1
下面是對用戶user1設置密碼
[root@localhost ~]# passwd user1
Changing password for user user1.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
下面是切換到user1用戶下,經過newgrp切換用戶組進行的一系列操做,從中能夠看出newgrp的做用。
[root@localhost ~]# su - user1
[user1@localhost ~]$ whoami
user1
[user1@localhost ~]$ mkdir user1_doc
[user1@localhost ~]$ newgrp group2
[user1@localhost ~]$ mkdir user2_doc
[user1@localhost ~]$ newgrp group3
[user1@localhost ~]$ mkdir user3_doc
[user1@localhost ~]$ ll
total 12
drwxr-xr-x  2 user1 group1 4096 Oct 24 01:18 user1_doc
drwxr-xr-x  2 user1 group2 4096 Oct 24 01:18 user2_doc
drwxr-xr-x  2 user1 group3 4096 Oct 24 01:19 user3_doc
[user1@localhost ~]$
3.groupdel命令
表示刪除用戶組,語法格式爲:
groupdel [羣組名稱]
當須要從系統上刪除用戶組時,可用groupdel指令來完成這項工做。若是該用戶組中仍包括某些用戶,則必須先刪除這些用戶後,而後才能刪除用戶組。
例如:刪除linuxfans這個用戶組
[root@localhost ~]# groupdel  linuxfans
二. 添加、修改和刪除用戶命令useradd/usermod/userdel 
1.useradd創建用戶的過程
useradd不加任何參數建立用戶時,系統首先讀取添加用戶配置文件/etc/login.defs和/etc/default/useradd,根據這兩個配置文件中定義的規則添加用戶,而後會向/etc/passwd和/etc/group文件添加用戶和用戶組記錄,同時/etc/passwd和/etc/group對應的加密文件也會自動生成記錄,接着系統會自動在/etc/default/useradd文件設定的目錄下創建用戶主目錄,最後複製/etc/skel目錄中的全部文件到新用戶的主目錄中,這樣一個新的用戶就創建完成了。
2.useradd的使用語法
useradd語法的通常格式爲:
useradd  [-u uid [-o]] [-g group] [-G group,...]
                [-d home] [-s shell] [-c comment]
                [-f inactive] [-e expire ] name
各個選項具體含義以下:
 -u uid:即用戶標識號,此標識號必須惟一。
 -g group:指定新建用戶登陸時所屬的默認組,或者叫主組。此羣組必須已經存在。
 -G group:指定新建用戶的附加組,此羣組必須已經存在。附加組是相對與主組而言的,當一個用戶同時是多個組中的成員時,登陸時的默認組成爲主組,而其它組稱爲附加組。
 -d home:指定新建用戶的默認主目錄,若是不指定,系統會在/etc/default/useradd文件指定的目錄下建立用戶主目錄。
 -s shell:指定新建用戶使用的默認shell,若是不指定,系統以/etc/default/useradd文件中定義的shell做爲新建用戶的默認shell。
 -c comment:對新建用戶的說明信息。
 -f inactive:指定賬號過時多長時間後永久停用。當值爲0時賬號則馬上被停權。而當值爲-1時則關閉此功能,預設值爲-1
 -e expire:指定用戶的賬號過時時間,日期的指定格式爲MM/DD/YY。
 name:指定須要建立的用戶名。
3.usermod的使用語法
 usermod用來修改用戶的帳戶屬性信息,使用語法以下:
usermod  [-u uid [-o]] [-g group] [-G group,...]
                [-d 主目錄 [-m]] [-s shell] [-c 註釋] [-l 新名稱]
                [-f 失效日期] [-e 過時日期][-L|-U] Name
各個選項具體含義以下:
 -u uid:指定用戶新的UID值,此值必須爲惟一的ID值,除非用-o選項。
 -g group:修改用戶所屬的組名爲新的用戶組名,此用戶組名必須已經存在。
 -G group:修改用戶所屬的附加組。
 -d 主目錄:修改用戶登陸時的主目錄。
 -s shell:修改用戶登陸系統後默認使用的shell
 -c 註釋:修改用戶的註釋信息。
 -l 新名稱:修改用戶賬號爲新的名稱。
 -f 失效日:賬號過時多少天后永久禁用。
 -e 過時日:增長或修改用戶帳戶的過時時間。
 -L:鎖定用戶密碼,使密碼無效。
 -U:解除密碼鎖定。
 Name:要修改屬性的系統用戶。
4.userdel的使用語法
Userdel用來刪除一個用戶,若指定「-r」參數不但刪除用戶,同時刪除用戶的主目錄以及目錄下的全部文件。語法格式爲:
userdel [-r][用戶賬號]
5.應用舉例
1)添加一個用戶mylinux,指定所屬的主用戶組爲fanslinux,附加用戶組爲linuxfans,同時指定用戶的默認主目錄爲/opt/mylinux
[root@localhost ~]# useradd -g fanslinux -G linuxfans -d /opt/mylinux mylinux
[root@localhost ~]# more /etc/passwd|grep mylinux
mylinux:x:523:1030::/opt/mylinux:/bin/bash
[root@localhost ~]# more /etc/group|grep mylinux
linuxfans:x:1020:mylinux
 2)添加一個用戶test_user,指定UID爲686,默認的shell爲/bin/csh,讓其歸屬爲用戶組linuxfans和fanslinux,同時添加對此用戶的描述,
[root@localhost ~]# useradd  -u 686 -s /bin/csh  -G linuxfans,fanslinux  -c "This is test user" test_user
[root@localhost ~]# more /etc/passwd|grep test_user
test_user:x:686:686:This is test user:/home/test_user:/bin/csh
[root@localhost ~]# more /etc/group|grep test_user  
fanslinux:x:1030:test_user
linuxfans:x:1020:mylinux,test_user
test_user:x:686:
 3)修改用戶test_user的主用戶組爲新建的組test_group1,同時修改test_user的附加組爲linuxfans和root,最後修改test_user的默認登陸shell爲/bin/bash
[root@localhost ~]# groupadd test_group1  #添加一個新的用戶組
[root@localhost ~]# more /etc/group|grep test_group1 #顯示新增用戶組的信息
test_group1:x:1031:
[root@localhost ~]# usermod -g test_group1 -G linuxfans,root -s /bin/bash test_user
[root@localhost ~]# more /etc/passwd|grep test_user   #從輸出可知,用戶的屬性已經更改                                        
test_user:x:686:1031:This is test user:/home/test_user:/bin/bash
[root@localhost ~]# more /etc/group|grep test_user   #從輸出可知,用戶組的屬性也同步更改   
root:x:0:root,test_user
linuxfans:x:1020:mylinux,test_user
test_user:x:686:
4)如何鎖定、解除用戶密碼
下面首先對test_user和mylinux用戶設置密碼
[root@localhost ~]# passwd  test_user
Changing password for user test_user.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd  mylinux
Changing password for user mylinux.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
下面的操做是經過su命令切換到mylinux用戶下,而後在mylinux下再次切換到test_user用戶下,這裏的切換用戶是爲了說明一個問題:從超級用戶root切換到普通用戶下,是不須要輸入普通用戶密碼的,系統也不會去驗證密碼。但普通用戶之間切換是須要密碼驗證的。
[root@localhost ~]# su – mylinux  #經過su命令切換到mylinux用戶下
[mylinux@localhost ~]$ whoami      #用whoami命令查看當前用戶
mylinux
[mylinux@localhost ~]$ su - test_user  #這裏是從mylinux用戶下切換到test_user用戶下,須要輸入密碼
Password: 
[mylinux@localhost ~]$ whoami          #成功切換到test_user用戶下
test_user
接下來,在root用戶下執行usermod鎖定test_user的密碼,測試test_user是否還能登陸,從下面能夠看出,密碼鎖定後,出現登陸失敗。
[root@localhost ~]# usermod -L test_user  #鎖定test_user用戶的密碼
[root@localhost ~]# su - mylinux  
[mylinux@localhost ~]$ whoami
mylinux
[mylinux@localhost ~]$ su - test_user  #這裏輸入的密碼是正確的,可是提示密碼錯誤,由於密碼被鎖定了
Password: 
su: incorrect password
[mylinux@localhost ~]$ whoami
mylinux
最後對test_user解除密碼鎖定,登陸正常。
[root@localhost ~]# usermod -U test_user  #解除密碼鎖定
[root@localhost ~]# su – mylinux
[mylinux@localhost ~]$ whoami
mylinux
[mylinux@localhost ~]$ su - test_user
Password: 
[test_user@localhost ~]$ whoami  #密碼鎖定解除後,test_user用戶能夠登陸系統
test_user安全

文件與權限的設定bash

 

所謂的文件權限,是指對文件的訪問權限,包括對文件的讀、寫、刪除、執行等,在linux下,每一個用戶都具備不一樣的權限,普通用戶只能在本身的主目錄下進行寫操做,而在主目錄以外,普通用戶只能進行查找、讀取操做,如何處理好文件權限和用戶之間的關係,是本節講述的重點。
一 查看文件的權限屬性
使用ls命令就能夠查看文件的以及目錄的權限信息,不帶任何參數的ls命令只顯示文件名稱,經過「ls –al」能夠顯示文件或者目錄的權限信息,看下面的輸出:
[root@localhost oracle]# ls -al
total 92
drwxr-xr-x   3 oracle oinstall  4096 Oct 30  2006 admin
drwxr-xr-x   2 oracle oinstall  4096 Oct 23 18:22 bin
-rwxr-xr-x   1 root   root      3939 Mar 20  2008 .createtablespace.pl
drwxr-xr-x   3 oracle oinstall  4096 Oct 30  2006 flash_recovery_area
drwxr-xr-x   2 oracle oinstall  4096 Jun 25 15:18 install
drwx------   2 oracle oinstall 16384 Jun 25 01:10 lost+found
drwxr-xr--   3 oracle oinstall  4096 Oct 30  2008 oradata
drwxr-xr-x   6 oracle oinstall  4096 Oct 30  2006 oraInventory
drwxr-xr-x   3 oracle dba       4096 Oct 28  2006 product
 爲了能更詳細的介紹上面輸出中每一個屬性的含義,下圖列出了oradata文檔每列表明的含義:
 服務器

下面經過具體的實例講述每列表明的含義。
1.第一列顯示文檔類型與執行權限,有十個字符組成,分爲4個部分,下面將文檔oradata權限分解,以下圖所示
 oracle

接着對每一個部分解釋以下:
 文檔類型部分:
當爲「d」時,表示目錄;當爲「l」時表示軟連接;當爲「-」時表示文件;當爲「c」時表示串行端口字符設備文件;當爲「b」時表示可供存儲的塊設備文件。由此可知,oradata是一個目錄。
在接下來的三個部分中,三個字符爲一組,每一個字符的含義爲:「r」表示只讀,即read;「w」表示可寫,即write;「x」表示可執行,即execute;「-」表示無此權限,即爲空。
 User部分:
第二部分是對文檔全部者(user)權限的設定,「rwx」表示用戶對oradata目錄有讀、寫和執行的全部權限。
 Group部分:
第三部分是對文檔所屬用戶組(group)權限的設定,「r-x」表示用戶組對oradata目錄有讀和執行的權限,可是沒有寫的權限。
 Others部分:
第四部分是對文檔擁有者以外的其它用戶權限的設定,「r--」表示其它用戶或用戶組對oradata目錄只有讀的權限。
文檔的操做權限是能夠指定和更改的,經過chmod命令便可更改文件或者目錄的權限,這個將在下節講述。
2.第二列顯示的是文檔的連結數,這個連結數就是硬連接的概念,即多少個文件指向同一個索引節點,舉例以下:
[root@localhost ~]#ls -al
-rw-r--r--   1 root root 60151 Oct 25 01:01 install.log
[root@localhost ~]#ln install.log  install.log1
[root@localhost ~]#ls –al  install.log
-rw-r--r--   2 root root 60151 Oct 25 01:01 install.log
[root@localhost ~]#ln install.log  install.log2
[root@localhost ~]#ls –al  install.log
-rw-r--r--   3 root root 60151 Oct 25 01:01 install.log
從上面能夠看出,install.log文件原始的連結數是1,而後作了兩個硬連接操做,install.log文件的鏈接數變爲3,這就是鏈接數的含義。
3.第三列顯示了文檔所屬的用戶和用戶組,也就是文檔是屬於哪一個用戶以及哪一個用戶組全部,例如上面的oradata目錄,所屬的用戶爲oracle,所屬的組爲oinstall組。文件所屬的用戶和組是能夠更改的,經過chown命令就能夠修改文檔的用戶屬性。
4.第四列顯示的是文檔的大小,默認顯示的是以bytes爲單位,可是也能夠經過命令的參數修改顯示的單位,例如能夠經過「ls -sh」組合人性化的顯示文檔的大小。對於目錄,一般只顯示文件系統默認block的大小。
5.第五列顯示文檔最後一次的修改日期,一般以月、日、時、分的方式顯示,若是文檔修改時間距離如今已經很遠了,會使用月、日、年的方式顯示。
6.第六列顯示的是文檔名稱,linux下以「.」開頭的文件是隱藏文件,同理以「.」開頭的目錄是隱藏目錄,隱藏文檔只有經過ls命令的「-a」選項才能顯示。
例如上面的.createtablespace.pl文件就是一個隱藏文件。
二 利用chown改變屬主和屬組
chown就是change owner的意思,主要做用就是改變文件或者目錄的全部者,而全部者包含用戶和用戶組,其實chown就是對文件所屬的用戶和用戶組進行的一系列設置。
chown使用的通常語法爲:
[root@localhost ~]#chown [-R] 用戶名稱 文件或目錄
[root@localhost ~]#chown [-R] 用戶名稱:用戶組組名稱 文件或目錄
參數說明:
-R : 進行遞歸式的權限更改,也就是將目錄下的全部文件、子目錄都更新成爲指定的用戶組權限。經常用於變動某一目錄的狀況。
注意,在執行操做前,確保指定的用戶以及用戶組在系統中是存在的。
例子1:修改隱藏文件「.createtablespace.pl」的所屬用戶爲oracle,所屬的用戶組爲oinstall,操做以下:
[root@localhost ~]#chown oracle:oinstall .createtablespace.pl
[root@localhost ~]#ls -al  .createtablespace.pl
-rwxr-xr-x   1 oracle   oinstall      3939 Mar 20  2008 createtablespace.pl
注意,這裏要確保oracle用戶和oinstall組已經存在。
例子2:修改oradata目錄以及目錄下的全部文件的所屬用戶爲root,用戶組爲dba組,
 [root@localhost ~]#chown -R root:dba oradata
drwxr-xr--   3 root dba   4096 Oct 30  2006 oradata
三 利用chmod改變訪問權限
chmod用於改變文件或目錄的訪問權限。該命令有兩種用法。一種是包含字母和操做符表達式的字符設定法;另外一種是包含數字的數字設定法。
1. 字符設定法
使用語法爲:
chmod [who] [+ | - | =] [mode] 文件名
命令中各選項的含義以下:
 who表示操做對象,能夠是下面字母中的任何一個或者它們的組合。
 u 表示「用戶(user)」,即文件或目錄的全部者。
 g 表示「用戶組(group)」,即文件或目錄所屬的用戶組。
 o 表示「其餘(others)用戶」。 
 a 表示「全部(all)用戶」。它是系統默認值。
 操做符號含義以下:
 「+」表示添加某個權限。
 「-」表示取消某個權限。
 「=」表示賦予給定的權限,同時取消文檔之前的全部權限。
 mode表示能夠執行的權限,能夠是「r「(只讀)、「w」(可寫)和「x」(可執行),以及它們的組合。
 文件名能夠是以空格分開的文件列表,支持通配符。
2.舉例
 修改install.log文件,使其全部者具備全部權限,用戶組和其它用戶具備只讀權限:
[root@localhost ~]# ls -al install.log
-rw------  1 root root 60151 Oct 17 16:11 install.log
[root@localhost ~]# chmod u=rwx,g+r,o+r install.log    
[root@localhost ~]# ls -al install.log             
-rwxr--r--  1 root root 60151 Oct 17 16:11 install.log
 修改/etc/fstab文件的權限,使其全部者具備讀寫權限,用戶組和其它用戶沒有任何權限:
[root@localhost ~]# ll /etc/fstab          
-rwxr--r--  1 root root 1150 Oct 23 09:30 /etc/fstab
[root@localhost ~]# chmod u-x,g-r,o-r /etc/fstab      
[root@localhost ~]# ll /etc/fstab                
-rw-------  1 root root 1150 Oct 23 09:30 /etc/fstab
3.數字設定法
首先了解一下用數字表示屬性的含義,0表示沒有任何權限,1表示有可執行權限,與上面字符表示法中的「x」有相同的含義。2表示有可寫權限,與「w」對應,4表示有可讀權限,對應與「r「。
若是想讓文件的屬主擁有讀和寫的權限,能夠經過4(可讀)+2(可寫)=6(可讀可寫)的方式來實現,那麼用數字6就表示擁有讀寫權限。
使用語法:
chmod [屬主權限的數字組合] [用戶組權限的數字組合] [其它用戶權限的數字組合] 文件名
下圖展現了數字設定法的實現原理:編輯器

 

上圖數字設定法含義剖析 從圖中能夠清晰的看出,「755」組合的表明含義,第一個「7」顯示了文件全部者的權限,是經過4(r)+2(w)+1(x)=7(rwx)而獲得的。第二個「5」顯示了文件所屬組的權限,是經過4(r)+0(-)+1(x)=5(rx)而獲得的,同理最後一個「5」也有相似的含義。 舉例: 某個文件mysqltuner.pl的默認權限爲600,即「-rw-------」,表示只有此文件的全部者(User)擁有讀寫權限,其它用戶(Others)和組(Group)沒有對此文件訪問的任何權限。 首先修改此文件的權限爲644,即「-rw-r--r--」,表示此文件的全部者(User)擁有讀寫權限,而其它用戶(Others)和組(Group)僅僅擁有讀的權限,操做以下: [linux1@localhost ~]$ ls -al mysqltuner.pl  -rw------- 1 linux1 linux1 38063 Oct 26 07:49 mysqltuner.pl [linux1@localhost ~]$ chmod 644  mysqltuner.pl [linux1@localhost ~]$ ls -al mysqltuner.pl      -rw-r--r-- 1 linux1 linux1 38063 Oct 26 07:49 mysqltuner.pl 而後接着修改mysqltuner.pl文件的權限爲755,即「-rwxr-xr-x」,表示此文件的全部者(User)擁有讀寫執行權限,而其它用戶(Others)和組(Group)擁有對此文件的讀和執行權限。 [linux1@localhost ~]$ chmod 755  mysqltuner.pl  [linux1@localhost ~]$ ls -al mysqltuner.pl      -rwxr-xr-x 1 linux1 linux1 38063 Oct 26 07:49 mysqltuner.pl

相關文章
相關標籤/搜索