linux系統是多用戶(Multi-users)和多任務(Multi-tasks)的,這樣的目的是為了一臺linux主機可以給很多用戶提供服務同時運行多種服務,但是我們是怎麼區分每個用戶呢?作為一個管理員我對linux系統許可權有哪些?作為一個普通的用戶又可以對linux系統有哪些操作呢?這裡就牽扯到 ...
linux系統是多用戶(Multi-users)和多任務(Multi-tasks)的,這樣的目的是為了一臺linux主機可以給很多用戶提供服務同時運行多種服務,但是我們是怎麼區分每個用戶呢?作為一個管理員我對linux系統許可權有哪些?作為一個普通的用戶又可以對linux系統有哪些操作呢?這裡就牽扯到了linux的用戶類別和許可權管理。本次博客就用戶和許可權管理作出詳細的解釋。
用戶和組類型
在linux系統中,有著用戶和組著兩個概念,用戶是被包含在組裡面的。
用戶可以分為以下2中類別:
管理員:也就是我們常說的root
普通用戶:分為系統用戶(為了能夠讓有些後臺進程或服務類進程以非管理員的身份運行,通常需要為此創建多個普通用戶,這類用戶從不用登錄系統)和登錄用戶
作為合法居民都應該有自己的ID號,在linux中,用戶也有自己的用戶標識的UID,是由16bits的二進位數字來標識的,所以取值範圍為0-65535.不同類型的用戶取值範圍如下:
管理員:0
普通用戶:
系統用戶:1-499(centos6),1-999(centos7)
登錄用戶:500-60000(centos6),1000-60000(centos7)
組按不同的分類可以分為以下3中類型的組:
1.按管理員組合普通用戶組
管理員組:對系統有著管理許可權的組
普通用戶組:和普通用戶對應也有著系統組和登錄組
組也有著自己的GID,不同組的取值範圍如下(和用戶取值範圍相同)
管理員組:0 普通用戶組: 系統用戶組:1-499(CentOS6), 1-999(CentOS7) 登錄用戶組:500-60000(CentOS6), 1000-60000(CentOS7)
2.按基本組和附加組
基本組:用戶在創建的時候,都會預設創建一個與其名字相同的基本組
附加組:一個用戶可以屬於一個基本組後,也可以添加其他的組中,這個其他組就稱為這個用戶的附加組
3.按用戶數目
私有組:組名通用戶名,且只包含一個用戶
公用組:組內包含著多個用戶
下麵我們來說一下系統是怎麼識別這個用戶是合法用戶的,用戶在登錄的時候,必須要鍵入用戶名和密碼,系統會把用戶提供密碼與系統中配置文件中的密碼對比(當然這裡不是簡簡單單的明文對比),如果相同則允許登入,否則不允許。管理員在定義用戶密碼的時候後最好要遵循以下定義標準(雖然linux允許用戶設置弱類型密碼):
1.使用隨機的密碼
2.最短長度不要低於8位
3.應該使用大寫字母、小寫字母、數字和標點符號四類字元中至少三類
4.定期更換
我們都知道,定義的密碼都是明文的,那麼保存在配置文件中是以明文的嗎?那肯定不是的,密碼一般都會被演算法加密,在centos中有以下加密演算法,密碼被加密成的bit位也不一樣,越長說明安全性越高,加密等級為(1-6),在加密前還會添加上一段隨機數進行加密,centos預設以sha512加密:
1 md5:128bits 2 sha:160bits 3 sha224:224bits 4 sha256:256bits 5 sha384:384bits 6 sha512:512bits可以使用命令對一段明文加密:
[root@localhost ~]# echo "Frank" | sha512sum d373aa36ac1061fab63c4a8ee098102476de1ff1bdff11be3629c54ccb14a35d27f658a4745a61ec183fbbd1077561a5bfcba5ead0fa4b32e2e63492e8fed3ea -
用戶和組的相關配置文件
/etc/passwd
我們先看一下這個文件:
[root@localhost ~]# cat /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 sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin ......(省略) tcpdump:x:72:72::/:/sbin/nologin claire:x:1001:1001::/home/claire:/bin/bash
會看到一行從左到右被冒號分割成了7個部分,下麵就這七個部分作出解釋,我們以最後一行為例:
1.claire,也就是用戶名啦
2.x,密碼占位符,密碼不是沒有保存在這個文件下,後面會講
3.1001,UID,也就是用戶ID
4.1001,GID,也就是組ID
5.空的,這裡一般是註釋信息,可能是用戶的全稱
6./home/claire,用戶的家目錄
7./bin/bash,用戶登錄的預設shell
我們可以看到前面為UID為0的為管理員root,那些UID小於等於999的,如bin為1,是系統用戶,他的預設shell為/nologin,也就是不允許登錄的。
/etc/shadow
我們先來看一下這個文件:
[root@localhost ~]# cat /etc/shadow root:$6$0CIKvP15hvSin5V5$oc.amWyL11jfB1pYxYiaGNfyN8HVq2s0iaVW0KiUd5RrS2SwKmWhTTqUzJ5uNnHi7.pc3OEqO/BMeLIFPOnpJ.::0:99999:7::: bin:*:17110:0:99999:7::: daemon:*:17110:0:99999:7::: adm:*:17110:0:99999:7::: lp:*:17110:0:99999:7::: sync:*:17110:0:99999:7::: .....(省略) tcpdump:!!:17348:::::: claire:$6$ZZ5ZKnr4$UI7/gW2z6rtmZygBpH81V8MawY7oLgPTaU65w.zmNyi8Bd9rWVgLQPuZtB1.Q6p6T5KOcd9wnCEJapqcAKCLj.:17357:0:99999:7:::
會看到一行被冒號分為了9個部分,我們還是以claire為例子來說明:
1.claire,用戶名
2.用戶被加密後的密碼,第一個$和$之間的為加密等級,"6"為sha512(前面說過咯),第二個$和第三個$之間為隨機數(也被稱為加salt),之後為加密後的密文,當密碼前有"!"或者"*"代表這個用戶被禁用了
3.用戶最近修改密碼的日期,用天數表示,表示從1970年1月1日到被修改那天之間的天數,可以通過以下方法將天數換算成具體的日期:
[root@localhost ~]# date -u -d "1970-01-01 UTC $((17357 * 86400 )) seconds" Mon Jul 10 00:00:00 UTC 2017
4.密碼最短使用天數,"0"表示可以隨時修改密碼,如果為"3",那麼表示用戶只有在最近一次修改的三天之後才能修改改密碼
5.密碼最長使用天數,"99999"就不需要修改了,對你來說也就是永久的了
6.密碼告警時間,也就是你密碼最長使用天數的,前多少天提醒你,如果的你的密碼最長使用天數為100天,密碼告警時間為7,那麼在 94天的時候,就會提示用戶改修改密碼了
7.密碼過期的恕限時間,如果這裡的值為2,當你在告警時間結束之後,仍然沒有修改密碼,那麼在2天內,你還可以使用這個密碼登錄
8.賬號失效時間,也是基於1970年1月1日的天數,當用戶到了這個時間的時候,就無法在使用了,這一項一般會被使用在收費服務的系統中,當超過這個時間的時候,賬戶就不能使用了。
9.保留位,未來有可能會使用
/etc/group
我們還是先看一下這配置文件下有什麼
[root@localhost ~]# cat /etc/group root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4: ......(省略) slocate:x:21: tcpdump:x:72: claire:x:1001:
每一行被冒號從左至右分割成了4個部分,還是以最後一行來說明:
1.claire:預設創建一個用戶,就會自己創建一個與其同名的組
2.x,組密碼占位符,密碼也不是放在這裡的哦
3.1001,GID,組ID
4.是一個以逗號分隔的用戶列表,以此組為附加組的用戶的用戶列表
/etc/gshadow
先打開文件看一下:
[root@localhost ~]# cat /etc/gshadow root::: bin::: daemon::: sys::: ...... avahi:!:: slocate:!:: tcpdump:!:: claire:!::
每一行被冒號從左至右分割成了4個部分,還是以最後一行來說明:
1.claire:預設創建一個用戶,就會自己創建一個與其同名的組
2.如果為"!"或者是"*",那麼其他用戶就不需要密碼就可以加入到這個組中,如果組是設置的密碼,則為一串密文,如果是空,則表示只有該組的成員可以獲得組的許可權
3.用戶組管理員,是一個以逗號分隔的用戶列表,用戶組管理員可以修改密碼和組成員,也很組裡其他成員擁有相同的許可權
4.成員,是一個以逗號分隔的用戶列表,以此組為附加組的用戶的用戶列表,應該要和/etc/group下的用戶列表一樣
用戶和組管理常用命令
作為一個管理員,我們可以增刪用戶、增刪組、修改用戶和組屬性,下麵我們就來介紹常用的用戶和組管理命令。
groupadd
NAME:創建一個新的組
SYNOPSIS:groupadd [options] group
常用選項:
-g GID:指定GID,預設是上一個組的GID+1
-r:創建系統組
舉例如下:
[root@localhost ~]# groupadd my_group [root@localhost ~]# tail -2 /etc/group claire:x:1001: my_group:x:1002: #預設上一個組號加一,註意必須是同類型的組,這裡都位登錄用戶組 [root@localhost ~]# groupadd -g 1500 cloud #指定GID為1500 [root@localhost ~]# tail -2 /etc/group my_group:x:1002: cloud:x:1500: #GID被指定為1500 [root@localhost ~]# groupadd -r my_sys #創建系統用戶組 my_sys [root@localhost ~]# tail -2 /etc/group cloud:x:1500: my_sys:x:983: #系統用戶組的GID為983
groupmod
NAME:修改組的屬性
SYNOPSIS:groupmod [options] GROUP
常用選項:
-g GID:修改GID
-n new_name:修改組名
舉例如下:
[root@localhost ~]# tail -3 /etc/group my_group:x:1002: cloud:x:1500: my_sys:x:983: [root@localhost ~]# groupmod -g 1003 cloud #修改GID為1003 [root@localhost ~]# tail -3 /etc/group my_group:x:1002: cloud:x:1003: my_sys:x:983: [root@localhost ~]# groupmod -n my_system my_sys #將組名my_sys修改為my_system [root@localhost ~]# tail -3 /etc/group my_group:x:1002: cloud:x:1003: my_system:x:983:
groupdel
NAME:刪除一個組
SYNOPSIS:groupdel [options] GROUP
舉例如下:
[root@localhost ~]# tail -3 /etc/group my_group:x:1002: cloud:x:1003: my_system:x:983: [root@localhost ~]# groupdel my_system #刪除系統組my_system [root@localhost ~]# tail -3 /etc/group claire:x:1001: my_group:x:1002: cloud:x:1003:
useradd
NAME:創建一個用戶或者更新用戶的信息
SYNOPSIS:useradd [options] LOGIN
useradd -D
useradd -D [options]
常用選項:
-u:--uid UID:指定UID
-g:--gid GROUP:指定基本組,此組得事先存在
-G:--groups GROUP1[,GROUP2,...[,GROUPN]]]:指定用戶所屬的附加組,多個組之間用逗號分隔
-c:--comment COMMENT:指明註釋信息
-d:--home HOME_DIR:指定的路徑為用戶的家目錄:通過複製/etc/skel此目錄並重命名實現,指定的家目錄路徑如果事先存在,則不 會為用戶複製環境配置文件
-s:--shell SHELL:指定用戶的預設shell,可用所有的shell存放在/etc/shells下
-r:--system:創建系統用戶
舉個例子
創建一個組ID為1200,基本組為cloud(已存在),附加組為"my_group",註釋信息為"my_test",家目錄為"/home/my_home",shell為csh,用戶名為my_test的用戶
[root@localhost ~]# useradd -u 1200 -g cloud -G my_group -c "my_test" -d /home/my_home -s /bin/csh my_test [root@localhost home]# id my_test id命令後面會講到 uid=1200(my_test) gid=1003(cloud) groups=1003(cloud),1002(my_group) [root@localhost home]# [root@localhost home]# tail -1 /etc/passwd my_test:x:1200:1003:my_test:/home/my_home:/bin/csh [root@localhost home]# tail -3 /etc/group claire:x:1001: my_group:x:1002:my_test cloud:x:1003: [root@localhost home]# ll -a /home/my_home/ total 12 drwx------. 3 my_test cloud 78 Jul 10 06:23 . drwxr-xr-x. 5 root root 48 Jul 10 06:23 .. -rw-r--r--. 1 my_test cloud 18 Aug 2 2016 .bash_logout -rw-r--r--. 1 my_test cloud 193 Aug 2 2016 .bash_profile -rw-r--r--. 1 my_test cloud 231 Aug 2 2016 .bashrc drwxr-xr-x. 4 my_test cloud 39 Jul 1 07:56 .mozilla
註意:創建用戶時的預設設定配置文件為/etc/login.defs如:
PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 # # Min/max values for automatic uid selection in useradd # UID_MIN 1000 UID_MAX 60000 # System accounts SYS_UID_MIN 201 SYS_UID_MAX 999 # # Min/max values for automatic gid selection in groupadd # GID_MIN 1000 GID_MAX 60000 # System accounts SYS_GID_MIN 201 SYS_GID_MAX 999 ..... CREATE_HOME yes UMASK 077 ENCRYPT_METHOD SHA512
也可使用useradd -D顯示創建用戶的預設配置
[root@localhost home]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
修改預設的屬性
useradd -D
選項:
-b,--base-dir:家目錄
-e,--expiredate:賬號失效時間
-f,--inactive:密碼過期的恕限時間
-g,--gid:在創建新的用戶的時候,一般都會自動創建與其同命的組,當在創建用戶的時候使用了-N/--no-user-group,也就是不創建組或者在/etc/login.defs里的USERGROUPS_ENAB變數被設置成了no,就會將預設指定的組(預設為組100,user)指定改用戶的組。
[root@localhost ~]# useradd -N no_group [root@localhost ~]# id no_group uid=1201(no_group) gid=100(users) groups=100(users)
-s,--shell:用戶登錄的shell
usermod
NAME:修改一個用戶的屬性
SYNOPSIS:usermod [options] LOGIN
常用選項:
-u, --uid UID:修改用戶的ID為此處指定的新UID; -g, --gid GROUP:修改用戶所屬的基本組; -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋; -a, --append:與-G一同使用,用於為用戶追加新的附加組; -c, --comment COMMENT:修改註釋信息; -d, --home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置; -m, --move-home:只能與-d選項一同使用,用於將原來的家目錄移動為新的家目錄; -l, --login NEW_LOGIN:修改用戶名; -s, --shell SHELL:修改用戶的預設shell; -L, --lock:鎖定用戶密碼;即在用戶原來的密碼字元串之前添加一個"!"; -U, --unlock:解鎖用戶的密碼;與useradd類型,這裡就不在多說了
userdel
NAME:刪除一個用戶和其相關的文件
SYNOPSIS:userdel [options] LOGIN
常用選項:
-r:刪除用戶時一併刪除其家目錄,預設不刪除
[root@localhost home]# userdel no_group [root@localhost home]# ll /home/ total 0 drwx------. 3 claire claire 78 Jul 10 03:35 claire drwx------. 2 frank frank 62 Jun 30 10:17 frank drwx------. 3 my_test cloud 78 Jul 10 06:23 my_home drwx------. 3 1201 users 78 Jul 10 06:49 no_group
passwd
NAME:修改用戶的認證信息
SYNOPSIS: passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
僅適用passwd,修改用戶自己的密碼,要輸入2次,輸入密碼的密碼為隱藏狀態
[root@localhost home]# passwd Changing password for user root. New password: Retype new password: passwd: all authentication tokens updated successfully.
passwd USERNAME:修改指定用戶的密碼,一般只用管理員root才可以修改
常用選項:
-l,-u:鎖定和解鎖用戶
-d:清除用戶密碼
-e DATE:賬戶失效時間,日期,也可以使用1970年1月1日到現在的天數,試過不可用,如果兄弟試了可用,麻煩告知,可以通過設置/etc/default/useradd的EXPIRE的day數,預設不設置,當設置為"99999"時,創建賬戶Never_user預設賬戶失效時間就被設為了"99999",也可以使用後面的命令chage,後面再說!
[root@localhost home]# cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE=99999 SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@localhost home]# useradd Never_user [root@localhost home]# tail -1 /etc/shadow #用戶失效時間被設置為了99999 Never_user:!!:0:0:99999:7::99999:
-i DAYS:密碼過期的恕限時間
-n DAYS:密碼的最短使用期限; -x DAYS:密碼的最長使用期限; -w DAYS:警告期限;以上親測(除-e之外)均可設置,
--stdin:標準輸入,避免重覆輸入2次密碼
使用方法:
[root@localhost home]# echo "Never_user" | passwd --stdin Never_user Changing password for user Never_user. passwd: all authentication tokens updated successfully. [root@localhost home]# tail -1 /etc/shadow Never_user:$6$vogq3txX$7pcR5l4sb6YMRbE9CK2gNg2ZR12tCeqdgMWb3vmhlZmcnw2hfgjozcSellI7w7QLTHoQpuik1EGFkAn.74py30:17357:0:99999:7::99999:
gpasswd
NAME:可以設置組密碼
SYNOPSIS:gpasswd [option] group
常用選項:
-a USERNAME:向組中添加用戶
-d USERNAME:從組中移除用戶
比如我們將用戶"Never_user"添加到組"cloud"中
[root@localhost home]# gpasswd -a Never_user cloud Adding user Never_user to group cloud [root@localhost home]# tail -3 /etc/group my_group:x:1002:my_test cloud:x:1003:Never_user Never_user:x:1201: [root@localhost home]#
newgrp
NAME:臨時切換基本組
SYNOPSIS:newgrp [-] [group]
常用選項:
-:會模擬用戶重新登錄以實現初始化其工作環境,返回以前的狀態,是用exit退出
#我們切換到Never_user下,Never_user基本組為Never_user和cloud [Never_user@localhost ~]$ id uid=1201(Never_user) gid=1201(Never_user) groups=1201(Never_user),1003(cloud) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [Never_user@localhost ~]$ touch test.txt [Never_user@localhost ~]$ ll #我們可以看見創建的文件的組為Never total 0 -rw-rw-r--. 1 Never_user Never_user 0 Jul 10 08:07 test.txt [Never_user@localhost ~]$ newgrp - cloud #切換為組cloud [Never_user@localhost ~]$ [Never_user@localhost ~]$ touch test1.txt #test1文件的用戶組為cloud [Never_user@localhost ~]$ ll total 0 -rw-r--r--. 1 Never_user cloud 0 Jul 10 08:07 test1.txt -rw-rw-r--. 1 Never_user Never_user 0 Jul 10 08:07 test.txt
chage
NAME:修改用戶密碼的過期信息
SYNOPSIS:chage [options] LOGIN
常用選項:
-d:修改最後一次修改密碼時間
-E:修改用戶失效時間
-I:修改密碼過期怒限時間
-W:修改告警天數
-m:修改密碼最小使用天數
-M:修改密碼最長使用天數
舉個例子:修改Never_user賬戶失效的時間為2017年07月30日
[root@localhost home]# chage -E 2017-07-30 Never_user [root@localhost home]# tail -1 /etc/shadow #2017年07月30日,自動轉換為了從1970年1月1日到2017年07月30日的天數 Never_user:$6$vogq3txX$7pcR5l4sb6YMRbE9CK2gNg2ZR12tCeqdgMWb3vmhlZmcnw2hfgjozcSellI7w7QLTHoQpuik1EGFkAn.74py30:17357:0:99999:7::17377:
id
NAME:顯示真的和有效的用戶和組ID
SYNOPSIS:id [OPTION]... [USER]
常用選項:
-u: 僅顯示有效的UID
-g: 僅顯示用戶的基本組ID
-G:僅顯示用戶所屬的所有組的ID
[root@localhost home]# id frank uid=1000(frank) gid=1000(frank) groups=1000(frank) [root@localhost home]# id -u frank 1000 [root@localhost home]# id -g frank 1000 [root@localhost home]# id -G frank 1000
su
NAME:切換用戶
SYNOPSIS:su [options...] [-] [user [args...]]
登錄式時切換,會通過讀取目標用戶的配置文件來重新初始化
su - USERNAME
非登錄式時切換,不會讀取目的用戶的配置文件進行初始化
su USERNAME
管理員可以無密碼切換至其他任何用戶
-c 'COMMADN':僅以指定用戶的身份運行此處制定的命令
[root@localhost home]# su -c "whoami" Never_user Never_user
許可權的定義
我們先任意看一下目錄下的文件:
[root@localhost ~]# ll /etc/default/ total 12 -rw-r--r--. 1 root root 254 Jun 30 10:19 grub -rw-r--r--. 1 root root 1756 Nov 4 2016 nss -rw-r--r--. 1 root root 124 Jul 10 07:20 useradd
每一行的最左位為文件的類型,-代表普通文件,那麼接下來的9為又是什麼呢?
左三位:定義了owner(屬主)的許可權,也就是user的
中三位:定義了group(屬組)的許可權
右三位:定義了others(其他人)的許可權
進程以其發起者的身份運行,進程對文件的訪問許可權,取決於發起此進程的用戶的許可權;當使用一個進程對一個文件進行操作的時候,會對比進行的發起者是不是和文件的屬主一致,如果一致,則應用屬主的許可權,如果不一致,則對比進程的發起者是不是屬於文件的屬組,如果屬於則執行屬組的許可權,如果都不是,則只能應用其他人的許可權。用戶也只能修改那些屬主是自己的那些文件。
那麼rwx分別代表什麼呢?
r:readable,可讀
w:writable,可寫
x:excutable,可執行
rwx對文件和目錄的操作是不同的:
對文件:
r:可獲取該文件的數據
w:可修改文件的數據
x:該文件可以執行
對目錄:
r:可以使用ls命令回去其下的所有文件的列表,如果只有r,則只能看到目錄下的文件名列表
w:可修改此文件目錄下的文件列表,就是可以刪除和創建文件,前提必須有x的許可權,如果只有w,不能幹任何事
x:且可使用ls -l來獲取所有文件的詳細屬性信息,前提必須是有r的許可權,如果只有x,只能cd到目錄下
許可權與二進位和八進位的對應關係表
許可權的管理命令
chmod
NAME:change file mode bits,修改文件的許可權
SYNOPSYS:
1. chmod [OPTION]... MODE[,MODE]... FILE... 2.chmod [OPTION]... OCTAL-MODE FILE... 3.chmod [OPTION]... --reference=RFILE FILE... 下麵來介紹一下這三種方式,每種方式適合不同的場景 1. chmod [OPTION]... MODE[,MODE]... FILE...首先我們來瞭解一下,在命令中使用以下字母代表相應用戶類型
u:屬主
g:屬組
o:其他人
a:所有
(1)可以直接將rwx直接賦值給相應的用戶類型,比如:u=rwx,g=x,o= ,空代表該位沒有許可權
舉個例子:
[root@localhost ~]# cd /tmp/read/ [root@localhost read]# ll total 4 -rw-r--r--. 1 root root 4 Jul 10 09:49 read.txt [root@localhost read]# chmod u=rwx,g=rw,o= /tmp/read/read.txt [root@localhost read]# ll total 4 -rwxrw----. 1 root root 4 Jul 10 09:49 read.txt
(2)直接操作一類用戶的一個許可權位
舉個例子:[root@localhost read]# ll total 4 -rwxrw----. 1 root root 4 Jul 10 09:49 read.txt [root@localhost read]# chmod u-x /tmp/read/read.txt [root@localhost read]# ll total 4 -rw-rw----. 1 root root 4 Jul 10 09:49 read.txt
2.chmod [OPTION]... OCTAL-MODE FILE...
直接指定八進位
舉個例子:
[root@localhost read]# chmod 777 /tmp/read/read.txt [root@localhost read]# ll total 4 -rwxrwxrwx. 1 root root 4 Jul 10 09:49 read.txt
3.chmod [OPTION]... --reference=RFILE FILE...
參考其他文件的許可權
[root@localhost read]# chmod --reference=/etc/passwd /tmp/read/read.txt [root@localhost read]# ll total 4 -rw-r--r--. 1 root root 4 Jul 10 09:49 read.txt
常用選項:
-R:--recursive:遞歸修改
chown
只有管理員可以修改文件的屬主和屬組
NAME:修改文件的屬主和屬組
SYNOPSIS:
chown [OPTION]... [OWNER][:[GROUP]] FILE... chown [OPTION]... --reference=RFILE FILE...舉個例子:
[root@localhost read]# ll total 4 -rw-r--r--. 1 root root 4 Jul 10 09:49 read.txt [root@localhost read]# chown frank:frank ./read.txt [root@localhost read]# ll total 4 -rw-r--r--. 1 frank frank 4 Jul 10 09:49 read.txt
常用選項:
-R:如果修改目錄,也想遞歸修改下麵的文件,則是用該參數
chgrp
NAME:修改屬組 SYNOPSIS: chgrp [OPTION]... GROUP FILE... chgrp [OPTION]... --reference=RFILE FILE... 其實直接使用chown就可以了 這裡補充一個內容就是umask,當我們創建一個普通文件或者目錄文件的時候,都會有預設的許可權,那麼這個預設許可權是怎麼定義的呢? 預設umask(只看後三位):[root@localhost read]# umask 0022
對於新建文件的許可權為666-umask=644=rw-r--r--
[root@localhost read]# touch test.txt [root@localhost read]# ll total 4 -rw-r--r--. 1 frank frank 4 Jul 10 09:49 read.txt drwxr-xr-x. 2 root root 6 Jul 10 10:36 test -rw-r--r--. 1 root root 0 Jul 10 10:37 test.txt
對於新建目錄的許可權為777-umask=755=rwxr-xr-x
[root@localhost read]# mkdir ./test [root@localhost read]# ll total 4 -rw-r--r--. 1 frank frank 4 Jul 10 09:49 read.txt drwxr-xr-x. 2 root root 6 Jul 10 10:36 test
可以使用umask MASK來設置umask,當然只對當前Shell進程有效
補充命令:
install
NAME:複製文件並設置屬性,也可以創建目錄,不能複製目錄和遞歸複製
SYNOPSYS:
install [OPTION]... [-T] SOURCE DEST install [OPTION]... SOURCE... DIRECTORY install [OPTION]... -t DIRECTORY SOURCE... install [OPTION]... -d DIRECTORY...和cp的用法類似,這裡不再敖述,新的用法是install -d 可以創建目錄
常用選項:
-m:設置目標文件的屬性,預設屬性為755
-o:設置目標文件的屬主
-g:設置目標文件的屬組
[root@localhost read]# install -o frank -g frank /etc/fstab /tmp/ [root@localhost read]# ll /tmp/ total 48 drwxr-xr-x. 2 root root 6 Jul 7 02:44 07070244 drwxr-xr-x. 2 root root 6 Jul 7 02:45 07070245 drwxr-xr-x. 2 root root 6 Jul 7 02:53 07070253 drwxr-xr-x. 2 root root 6 Jul 7 01:18 a_c drwxr-xr-x. 2 root root 6 Jul 7 01:18 a_d drwxr-xr-x. 2 root root 6 Jul 7 01:18 b_c drwxr-xr-x. 2 root root 6 Jul 7 01:18 b_d drwxr-xr-x. 2 root root 279 Jul 9 00:57 conf.d -rwxr-xr-x. 1 frank frank 5 Jul 10 10:44 fstab -rw-r--r--. 1 root root 126 Jul 9 01:22 fstab1.out
mktemp
NAME:創建臨時的文件或者目錄文件,會直接返迴文件名稱
SYNOPSIS: mktemp [OPTION]... [TEMPLATE]
TEMPLATE為:name.XXXX name可以自定義,XXXX必須為大寫的X且最少三位
[root@localhost tmp]# mktemp case.XXX case.rMB [root@localhost tmp]# mktemp case.XXXXX case.HeqBH [root@localhost tmp]# mktemp case.XXXXX case.MatKC
常用選項:
-d:創建臨時目錄
[root@localhost tmp]# mktemp -d case.XXXXX case.TGRtu
那今天就寫到這裡了,如果有誤之處,還望各位大佬多多指教。