Linux-用戶-組-權限-shell

一、用戶和組

  • id 【username】 :查看當前用戶的信息,包括uid,gid
  • usermod 【選項】【參數】:修改用戶賬戶信息
    (1):-a(append)把用戶追加到某些組中,僅與-G選項一起使用
    (2): -c(comment )修改/etc/passwd文件第五段comment
    (3):-d(home)修改用戶的家目錄通常和-m選項一起使用
    (4):-e(expiredate )指定用戶帳號禁用的日期,格式YY-MM-DD
    (5):-f (inactive )用戶密碼過期多少天后採用就禁用該帳號,0表示密碼已過期就禁用帳號,-1表示禁用此功能,默認值是-1
    (6):-g(gid)修改用戶的gid,改組一定存在
    (7):-G(groups)把用戶追加到某些組中,僅與-a選項一起使用
    (8):-l(login)修改用戶的登錄名稱
    (9): -L(lock )鎖定用戶的密碼
    (11):-m(move-home)修改用戶的家目錄通常和-d選項一起使用
    (12):-s(shell )修改用戶的shell
    (13):-u(uid)修改用戶的uid,該uid必須唯一
    (14):-U(unlock)解鎖用戶的密碼

將用戶admin追加至組test1中
在這裏插入圖片描述

  • groupadd 【選項】【參數】添加新組
    (1)-f(force)如果組已經存在則成功退出,並且如果 GID 已經存在則取消 -g
    (2)-g(gid )GID 爲新組使用 GID
    (3)-h(help)顯示此幫助信息並推出
    (5)-K(key) KEY=VALUE 不使用 /etc/login.defs 中的默認值
    (6)-o(non)-unique 允許創建有重複 GID 的組
    (7)-p(password)PASSWORD 爲新組使用此加密過的密碼
    (8)-r(system)創建一個系統賬戶
    (9)-R(root)CHROOT_DIR chroot 到的目錄

新建組gid爲1002的組test2
在這裏插入圖片描述

  • gpasswd 【選項】【參數】管理工作組
    (1)-a:添加用戶到組
    (2)-d: 從組刪除用戶
    (3)-A:指定管理員
    (4)-M:指定組成員和-A的用途差不多;
    (5)-r:刪除密碼;
    (6)-R:限制用戶登入組,只有組中的成員纔可以用newgrp加入該組。

從test1組中刪除admin用戶,或者說將用戶admin從test1組中刪除
在這裏插入圖片描述

二、文件權限及關鍵文件字段含義

1、文件權限

  • 文件的權限分爲三類 :文件的用有人、文件的擁有組、文件的其他人操作權限。
    在這裏插入圖片描述
  • 通過ls -l命令可以查看文件的詳細內容:
    (1)第一位爲-(橫槓)表示當前查看到的內容是一個文件,爲d表示爲文件夾。
    (2)後面三位爲一組,共三組,分別表示擁有人、擁有組、其他人。
    (3)r:read w:write x:excute
    (4)最後面有一個.(點)出現,有的也可以顯示爲+(加號)號,這裏表示該文件是否還有其他權限,點表示當前文件只有當前顯示的權限,如果顯示爲加號表示該文件還有其他隱藏權限。
    (5)後面存在一個數字,該數字表示鏈接數,如果是文件則爲1,如果是文件夾,則至少爲2,顯示該文件夾當中有多少個文件。(在後續版本才加進入的一個選項)
    (6)每個文件都會有其擁有人,有其擁有組。
    (7)顯示文件大小,默認以Byte爲單位進行顯示,可通過-h修改顯示單位。
    (8)顯示當前文件的最後修改時間。
    (9)顯示文件或文件夾的名字。
  • 對於文件夾的權限來說:
    (1)如果有r權限,則可以查看該文件夾當中的內容。
    (2)如果有x權限,則可以進入該文件夾,但查看不到文件夾裏面的內容。
    (3)如果有w權限,則可以對該文件夾裏面的文件實現添加和刪除動作,對於文件夾當中文件的添加和刪除操作,不取決於文件本身的權限,而是取決於該文件上一級目錄的權限。
    權限只作用於當前這一級,不存在遞進關係。
    文件的權限修改
  • chown 【選項】【所有者】【所有組】【文件名】修改文件的擁有人(擁有組也可修改)
    (1)-c 顯示更改的部分的信息
    (2)-f 忽略錯誤信息
    (3)-h 修復符號鏈接
    (4)-R 處理指定目錄以及其子目錄下的所有文件
    (5)-v 顯示詳細的處理信息
    (6)-deference 作用於符號鏈接的指向,而不是鏈接文件本身
    在這裏插入圖片描述
  • chgrp 【選項】【所有組】【文件名】修改文件的擁有組
    (1)-c或——changes:效果類似“-v”參數,但僅回報更改的部分;
    (2)-f或–quiet或——silent:不顯示錯誤信息;
    (3)-h或–no-dereference:只對符號連接的文件作修改,而不是該其他任何相關文件;
    (4)-R或——recursive:遞歸處理,將指令目錄下的所有文件及子目錄一併處理;
    (5)-v或——verbose:顯示指令執行過程;
    (6)–reference=<參考文件或目錄>:把指定文件或目錄的所屬羣組全部設成和參考文件或目錄的所屬羣組相同;
    在這裏插入圖片描述
  • chmod 【選項】【權限說明】【文件名】
    (1)u:擁有人 g:擁有組 o:其他人------r:讀取 w:寫入 x:執行
    (2)=:設置權限 +:增加勸降 -:減少權限
    (3)r:4 w:2 x:1
    例1:chmod 777 /test/1.txt 表示修改文件1.txt的權限爲擁有人、擁有組、其他人都有rwx權限。
    例2:chmod u=rw,g+rw,o-x /text/1.txt 表示修改文件1.txt的權限爲,擁有人設定有rwx權限、擁有組在原本基礎上添加rw權限,其他人在原有基礎上減少x權限。
    在這裏插入圖片描述

2、關鍵文件字段

  • Linux當中,用戶信息存放於/etc/passwd文件中,可通過cat /etc/passwd命令進行查看或者通過vim編輯器進入查看文件內容。
    在這裏插入圖片描述
  1. 用戶名(login_name):是代表用戶賬號的字符串。通常長度不超過8個字符,並且由大小寫字母和/或數字組成。登錄名中不能有冒號,因爲冒號在這裏是分隔符。爲了兼容起見,登錄名中最好不要包含點字符(.),並且不使用連字符(-)和加號(+)打頭。
  2. 口令(passwd):一些系統中,存放着加密後的用戶口令字。雖然這個字段存放的只是用戶口令的加密串,不是明文,但是由於/etc/passwd文件對所有用戶都可讀,所以這仍是一個安全隱患。因此,現在許多Linux系統(如SVR4)都使用了shadow技術,把真正的加密後的用戶口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一個特殊的字符,例如“x”或者“*”,爲空則表示沒有設置密碼。
  3. 用戶標識號(UID):是一個整數,系統內部用它來標識用戶。一般情況下它與用戶名是一一對應的。如果幾個用戶名對應的用戶標識號是一樣的,系統內部將把它們視爲同一個用戶,但是它們可以有不同的口令、不同的主目錄以及不同的登錄Shell等。取值範圍是0-65535。0是超級用戶root的標識號,1-99由系統保留,作爲管理賬號,普通用戶的標識號從100開始。在Linux系統中,這個界限是500。
  4. 組標識號(GID):字段記錄的是用戶所屬的用戶組。它對應着/etc/group文件中的一條記錄。
  5. 用戶描述信息:在圖形化的登錄界面中,當配置有描述信息時,會優先顯示描述信息,不顯示用戶名,當沒有配置用戶信息時纔會顯示用戶名,爲了防止用戶名被竊取。
  6. 主目錄(home_directory):也就是用戶的起始工作目錄,它是用戶在登錄到系統之後所處的目錄。在大多數系統中,各用戶的主目錄都被組織在同一個特定的目錄下,而用戶主目錄的名稱就是該用戶的登錄名。各用戶對自己的主目錄有讀、寫、執行(搜索)權限,其他用戶對此目錄的訪問權限則根據具體情況設置。
  7. 登錄Shell(Shell):用戶登錄後,要啓動一個進程,負責將用戶的操作傳給內核,這個進程是用戶登錄到系統後運行的命令解釋器或某個特定的程序,即Shell。Shell是用戶與Linux系統之間的接口。Linux的Shell有許多種,每種都有不同的特點。常用的有sh(BourneShell),csh(CShell),ksh(KornShell)。系統管理員可以根據系統情況和用戶習慣爲用戶指定某個Shell。如果不指定Shell,那麼系統使用sh爲默認的登錄Shell,即這個字段的值爲/bin/sh。
  • Linux中密碼信息存放在shadow中,可選擇進去查看
    在這裏插入圖片描述
  1. 用戶名:表示存放的是該用戶的相關信息。
  2. 密碼信息:表示用戶是否有密碼,如果沒有配置過密碼則顯示!!,如果有密碼則顯示密碼加密過後的密文信息。
  3. 密碼最後變更的時間:顯示格式爲從unix(誕生於1969年,但是從1970.1.1開始計算)誕生開始到修改的時候一共經過了多少天。
    date +%s 表示從1970到現在一共經歷了多少天。
    echo [[(date + %s)/86400] 該公式計算從1970到現在經歷了多少天。
  4. 密碼最小存活時間:表示密碼配置後多久可以再次修改,爲空則表示隨時可以修改。
  5. 密碼最大有效期:五個9表示密碼永不過期,爲空表示密碼用不過期。
    用戶密碼:/etc/shadw 改密碼:passwd
    組密碼:/etc/gshadw 改組密碼:gpasswd admin
    newgrp admin 表示臨時登錄到組當中,可以通過id 【組名】進行查看。

三、shell

1、什麼是shell

在這裏插入圖片描述
shell是一個提供人機交互的平臺,將人的語言解析成機器語言,實現控制,然後將機器內的信息轉譯成人能夠看得懂的語言進行輸出,所以shell是內部的一套編譯器,解釋器,負責協調指令發送的一個腳本。

2、什麼是bash shell

bash shell是所有編譯shell中的一種,IBM的ksh、HP的csh、等都是Linux中比較流行的shell
shell中通配符的作用:
(1)*:表示匹配所有。
(2)?:表示有且只能匹配一個字符。
(3)[0-9]:列表匹配,表示0-9當中的數字,但只能匹配一次。
(4)[^abc]:表示排除列表中的字符,只能匹配一次。
(5)~:表示用戶的家目錄
(6)$ :表示引用變量,A=10,AAA表示引用變量A的結果;(command)引用命令執行的結果,如(hostname)command(hostname)顯示主機名,‘command’作用等同於作用。
(7){}:多選項含義
如:mkdir -p {a,b,c]/{e,f,g} 表示創建目錄a,並且在a目錄中再創建目錄e、f、g,目錄b中同理。

3、變量

1、定義變量:A=1000,定義一個變量,echo $ A,可以通過$去引用變量。
2、本地變量:僅在一個shell中有效的變量
3、環境變量:在所有的shell中都有效的變量,在所有的子shell中都有效的變量。

pstree 查看進程樹
pstree | grep bash顯示bash shell進程的樹狀結構。
變量依賴於進程產生,有父shell和子shell之間的區分。
可以通過bash命令進入不同的終端shell中,然後通過pstree | grep bash進程查看當前的shell。
例:定義變量:ABC=1000 此爲本地變量
export ABC 設定環境變量,表示將ABC執行爲環境變量
env 查看系統當中所有已經定義過的環境變量

  1. 定義本地變量:ZH=300
  2. 執行爲環境變量:export ZH
  3. 查看環境變量:env | grep ZH
  4. set 查看所有環境變量,包括本地變量和環境變量
  5. unset ZH 取消變量
    作爲環境變量也只有在當前子shell中有效,再打開的其他子shell中無效。
4、全局環境變量
  • vim /etc/profile 存放全局環境變量的文件,全局環境變量都需要寫在這個文件當中。
    全局環境變量是直接寫完存儲在硬盤中的,如果需要讀取運行,則必須加載到內存中才可,而對於本地和普通的環境變量則是直接寫在內存當中。
    source /etc/profile : 重新加載硬盤中的全局環境變量至內存中,如果對全局環境變量做了修改則需要重新加載纔會生效。
    source加載全局變量只在當前打開的終端內有效,換個終端後是無效的,可以用echo打印是否能夠打印出來進行測試,除非經過了source後然後將當前用戶註銷然後重新登錄纔可保證全局有效。
    su user1 表示非登錄到該用戶的環境變量;su - user1 表示切換用戶並且登錄到該用戶shell環境變量。
5、解決問題:實現不同用戶讀取同一個變量名字(MONEY)的值是不相同的,user1讀取爲100、user2讀取爲200、user3讀取到爲300。

此問題加深即爲爲什麼root用戶登錄顯示的提示符爲#,其他用戶登錄進去顯示爲$,這裏其實就是通過shell進行設定的。
在全局環境變量文件中新建變量:MONEY=“5000” 末尾export後面加上MONEY
加載完成後其他用戶均可讀到該環境變量,echo $MONEY 顯示結果爲5000。

  • 如果需要讓其他用戶讀取該變量時得到不同的值,操作如下。
    在每個用戶的家目錄下/home/user1/中都有一個隱藏的用戶環境變量文件:.bash-profile,可以選擇在裏面進行修改,添加變量:MONEY=“100”,末尾export後面添加變量名MONEY。
    所以實際當中,會存在一個全局環境變量對所有用戶都是生效的,但是用戶自身也會存在一個自己家目錄當中的全局環境變量。此時用戶會先讀全局環境變量,然後讀取家目錄的全局環境變量,如果兩者出現了重複的情況,則會用家目錄中的去執行去覆蓋全局下的環境變量。
5、vim /etc/bashrc 該文件也是存放環境變量的。(具體待後續)

武漢艾迪時代IT教育

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章