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,不同組的取值范圍如下(和用戶取值范圍相同)
?
2.按基本組和附加組
基本組:用戶在創建的時候,都會默認創建一個與其名字相同的基本組
附加組:一個用戶可以屬于一個基本組后,也可以添加其他的組中,這個其他組就稱為這個用戶的附加組
?
3.按用戶數目
私有組:組名通用戶名,且只包含一個用戶
公用組:組內包含著多個用戶
?
下面我們來說一下系統是怎么識別這個用戶是合法用戶的,用戶在登錄的時候,必須要鍵入用戶名和密碼,系統會把用戶提供密碼與系統中配置文件中的密碼對比(當然這里不是簡簡單單的明文對比),如果相同則允許登入,否則不允許。管理員在定義用戶密碼的時候后最好要遵循以下定義標準(雖然linux允許用戶設置弱類型密碼):
1.使用隨機的密碼
2.最短長度不要低于8位
3.應該使用大寫字母、小寫字母、數字和標點符號四類字符中至少三類
4.定期更換
我們都知道,定義的密碼都是明文的,那么保存在配置文件中是以明文的嗎?那肯定不是的,密碼一般都會被算法加密,在centos中有以下加密算法,密碼被加密成的bit位也不一樣,越長說明安全性越高,加密等級為(1-6),在加密前還會添加上一段隨機數進行加密,centos默認以sha512加密:
可以使用命令對一段明文加密:
[root@localhost ~]# echo "Frank" | sha512sum d373aa36ac1061fab63c4a8ee098102476de1ff1bdff11be3629c54ccb14a35d27f658a4745a61ec183fbbd1077561a5bfcba5ead0fa4b32e2e63492e8fed3ea -
?
用戶和組的相關配置文件
/etc/passwd
我們先看一下這個文件:
[root@localhost ~]# cat /etc/passwdroot: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/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown: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/passwdmy_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 12drwx------. 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 99999PASS_MIN_DAYS 0PASS_MIN_LEN 5PASS_WARN_AGE 7# # Min/max values for automatic uid selection in useradd # UID_MIN 1000UID_MAX 60000# System accounts SYS_UID_MIN 201SYS_UID_MAX 999# # Min/max values for automatic gid selection in groupadd # GID_MIN 1000GID_MAX 60000# System accounts SYS_GID_MIN 201SYS_GID_MAX 999..... CREATE_HOME yes UMASK 077ENCRYPT_METHOD SHA512
?也可使用useradd -D顯示創建用戶的默認配置
[root@localhost home]# useradd -D GROUP=100HOME=/home INACTIVE=-1EXPIRE=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
常用選項:
與useradd類型,這里就不在多說了
?
?userdel
NAME:刪除一個用戶和其相關的文件
SYNOPSIS:userdel [options] LOGIN
常用選項:
-r:刪除用戶時一并刪除其家目錄,默認不刪除
[root@localhost home]# userdel no_group [root@localhost home]# ll /home/total 0drwx------. 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]# passwdChanging 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 fileGROUP=100HOME=/home INACTIVE=-1EXPIRE=99999SHELL=/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:密碼過期的恕限時間
以上親測(除-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 ~]$ iduid=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 frank1000[root@localhost home]# id -g frank1000[root@localhost home]# id -G frank1000
?
?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:
首先我們來了解一下,在命令中使用以下字母代表相應用戶類型
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:
舉個例子:
[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
[root@localhost read]# umask0022
對于新建文件的權限為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:
和cp的用法類似,這里不再敖述,新的用法是install -d 可以創建目錄
常用選項:
-m:設置目標文件的屬性,默認屬性為755
-o:設置目標文件的屬主
-g:設置目標文件的屬組
[root@localhost read]# install -o frank -g frank /etc/fstab /tmp/[root@localhost read]# ll /tmp/total 48drwxr-xr-x. 2 root root 6 Jul 7 02:44 07070244drwxr-xr-x. 2 root root 6 Jul 7 02:45 07070245drwxr-xr-x. 2 root root 6 Jul 7 02:53 07070253drwxr-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.XXXcase.rMB [root@localhost tmp]# mktemp case.XXXXXcase.HeqBH [root@localhost tmp]# mktemp case.XXXXXcase.MatKC
常用選項:
-d:創建臨時目錄
[root@localhost tmp]# mktemp -d case.XXXXXcase.TGRtu
?那今天就寫到這里了,如果有誤之處,還望各位大佬多多指教。
?