day 16 特殊許可權和輸出輸入符

2022-03-15 13:32:34 字數 3609 閱讀 3050

可執行的setuid作用在屬主的位置

許可權位作用於屬主的位置  可執行的許可權位 執行這條令的時候,相當於這條命令的所有者  root

大s 和 小s的區別

擁有執行許可權,設定setuid之後是小s

沒有執行許可權,設定setuid之後是大s

setuid # 的許可權是數字4開頭的

# 新增特殊許可權s

[root@mpd ~]# chmod u+s /usr/bin/passwd

[root@mpd ~]# ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 jun 10 2014 /usr/bin/passwd # 檢視檔案變紅色說明特別危險

setgid作用在屬組的位置
許可權為作用在屬組的x為    使用s表示   有大s和小s  

使用者在某個目錄下新建立的目錄或者檔案,預設的所屬組是自己的基本組

當設定setgid之後,使用者新建立的目錄或者檔案的預設所屬組不在是自己的組了

預設的組就是這個目錄的所屬組 讓多個使用者能夠共享乙個目錄

案例:

root@mpd ~]# mkdir /mysql

[root@mpd ~]# chmod g+s /mysql/

[root@mpd ~]# ll -d /mysql

drwxr-sr-x 2 root root 6 jul 24 15:13 /mysql

# 屬於這個組的在這個組下建立的檔案都可以共享相應許可權

# 跟屬組關聯

sticky粘滯位 作用在其他使用者上
許可權作用於 others 的x為    使用t表示    小t   大t 

給目錄設定, 乙個目錄所有使用者都擁有管理的許可權 777 針對此目錄設定乙個粘滯位

所有使用者都可以在這個目錄進行建立、刪除檔案的權利 但是只能管理自己的檔案 或者管理員擁有管理所有檔案的許可權 root

案例:[root@mpd ~]# mkdir /test

[root@mpd ~]# chmod o+t /test

[root@mpd ~]# ll -d /test

drwxr-xr-t 2 root root 6 jul 24 15:21 /test

三位特殊許可權總結
chmod u+s  /dir # 作用在屬主上的特殊許可權

chmod g+s /dir # 作用在屬組上的特殊許可權

chmod o+t /dir # 作用在其他使用者上的特殊許可權

# 普通使用者不能使用yum,命令,即使新增了setuid的許可權也不行 此許可權不能亂給 知道就行

# setuid的許可權是4開頭的

# setgid的許可權是2開頭的

# sticky的許可權是1開頭的

特殊屬性i 和 a
lsattr		# 顯示特殊屬性

chattr # 設定特殊屬性

a # 這個檔案只能追加內容和檢視 別的什麼都做不了 刪除 移動 複製可以

i # 什麼都操作不了

# 針對所有使用者包管理員

案例;[root@mpd ~]# mkdir /nginx

[root@mpd ~]# touch /nginx/pik /nginx/pag

[root@mpd ~]# chattr +i /nginx

[root@mpd ~]# cp /nginx/pag ./

[root@mpd ~]# rm -fr /nginx/pag

rm: cannot remove 『/nginx/pag』: permission denied

將原本要輸出到螢幕上面的內容,重定向到乙個指定的檔案中 

將原本從鍵盤上面輸入的內容,改為從命令或者檔案當中讀取

為什麼要用重定向

1. 資料非常重要,需要儲存

2. 後台程式的輸出重定向到乙個檔案中

3. 定時任務的執行結果

4. 把一些錯誤的輸出定向到空

5. 把正確和錯誤的資訊都需要儲存

stdin #標準輸入 0 # 從鍵盤上面讀取輸入的內容,

# 或者從命令及檔案中讀取輸入的內容

stdout #標準輸出 1 # 預設將正確的資訊標準輸出到螢幕上方

stderr #錯誤輸出 2 # 預設將錯誤的資訊標準輸出到螢幕上方

[root@qls ~]# cat

hello #標準輸入

hello #標準輸出

# 輸出重定向

將原本要輸出到螢幕上面的內容,重定向到乙個指定的檔案中

符號》 #標準覆蓋正確輸出重定向 # 將正確的內容覆蓋原始檔的 當檔案不存在時,會自動建立

>> #標準追加正確輸出重定向 # 將正確的內容追加到指定檔案的底部 當檔案不存在時,會自動建立

2> #標準覆蓋錯誤輸出重定向 # 將錯誤的資訊覆蓋到指定的檔案中

2>> #標準追加錯誤輸出重定向 # 將錯誤的資訊追加到檔案的底部

# 把正確的和錯誤的資訊都儲存到乙個檔案中

[root@qls ~]# ls /roott > file.txt 2>&1 # 不推薦

# 將正確的資訊和錯誤的資訊重定向到空

[root@qls ~]# ls /roottt &> /dev/null

# 把正確的和錯誤的放在不同的檔案中

[root@qls ~]# ls /rooot >> file1.txt 2>> file2.txt

# 輸入重定向

將原本從鍵盤上面輸入的內容,改為從命令或者檔案當中讀取

符號< #標準輸入重定向 #將原本從預設的鍵盤中讀取資料改為由命令或者檔案中讀取

<< #識別符號限定輸入重定向 #從鍵盤中讀取內容,直到遇到識別符號的分解符為止

案例:[root@qls ~]# grep 'root' < /etc/passwd

[root@qls ~]# grep root

[root@qls ~]# dd if=/dev/zero of=/root/test.log bs=1m count=50

[root@qls ~]# dd /root/oldboy.log bs=10m count=100

[root@qls ~]# tr 't' 't' < file1.txt

|  管道  	

連線左右兩個命令的使用 把前面的命令作為標準輸出通過管道交給後面的命令 作為標準輸入

只能把正確的資訊交給後面的命令,錯誤的資訊的不會傳遞

# 管道技術中的tee技術

需要儲存一些標準輸出的內容

-a # 追加

tee 和 重定向的區別

重定向 # 把要輸出到螢幕上面的內容重定向到指定的檔案中

tee # 把要輸出到螢幕上面的內容重定向到指定的檔案中 ,並且可以繼續輸出乙份到螢幕上面

# 管道中xargs技術

讓一些不支援管道的命令支援管道 把前面命令的執行結果以檔案的引數傳遞方式傳遞給後面的命令

day16 函式物件和閉包

二 閉包函式 函式物件指的是函式可以被當做 資料 來處理,具體可以分為四個方面的使用,我們如下 defadd x,y return x y.func add func 1,2 3 dic dic dic add 1,2 3 deffoo x,y,func return func x,y foo 1,...

day16 函式式程式設計和內建函式

程式設計的方 面向過程 找到問題的 函式式 不可變 不用變數儲存狀態 不修改變數 物件導向 高階函式 滿足倆個特性任意乙個即為高階函式 1.函式的傳入引數是乙個函式名 2.函式的返回值是乙個函式名 map函式 num l 1,2,10,5,3,7 計算該列表中數的平方值 方法一 ret for i ...

輸入和輸出運算子

通常情況下,輸出運算子第乙個形參是乙個非常量ostream物件的引用。之所以使用ostream是非常量是因為向流寫入內容會改變其狀態 而形參是引用是因為無法直接複製乙個ostream物件。第二個形參一般來說是乙個常量的引用,該常量表示想要列印的類型別。採用引用可以避免複製實參 之所以是常量是因為通常...