用戶是必須的嗎?python
用戶:標識計算機上的資源的歸屬 密碼:對用戶的身份作驗證
登陸的時候計算機如何作身份驗證?mysql
在計算機內部預先有一個數據庫,在數據庫中保存用戶名和對應的密碼,用戶登陸時候經過比對數據庫來檢查用戶和密碼是否正確
什麼是數據庫?
用來保存數據的文件,數據庫管理軟件(oracle mysql sqlserver db2)linux
保存帳號和密碼的數據庫文件算法
/etc/passwd <<<< 保存系統中的所有的用戶名 /etc/shadow <<<< 保存各個用戶的密碼 /etc/group <<<< 保存系統中的所有用戶組名 /etc/gpasswd <<<< 保存各個用戶組的密碼
windows下新建用戶sql
計算機-管理-本地用戶和組-用戶-新建 (用戶名 密碼) 計算機-管理-本地用戶和組-組-新建(用戶組)添加用戶 windows下有用戶和組,linux中一樣有用戶和,linux中一個用戶也能夠同屬多個組,100個用戶受權的話須要受權100次,直接把用戶加到組中,直接受權組
用戶和用戶組shell
用戶:登陸系統的用戶名 用戶組:多個用戶的合集
用戶組的做用數據庫
方便爲多個用戶批量受權
用戶身份標識vim
計算機爲每個用戶設置一個惟一的數字,當計算機識別用戶的時候,經過 該數字來識別的,數字就是UID(User IDentifier)
用戶組身份標識windows
GID
注意:爲用戶賦權的時候,實際上是針對uid賦權的
例子:zs--uid=601
賦權:zs能夠訪問文件a.txt
本質:讓uid爲601的用戶能夠訪問a.txt安全
/etc/passwd文件詳解
cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin 文件的做用 這個文件中保存了系統中的所有用戶,每行是一個用戶 每一個用戶的信息包括7部分,以下 第一段:用戶名 第二段:用戶密碼佔位符,爲了安全將密碼放在另一個文件中 (/etc/shadow) 第三段:用戶的UID 第四段: 用戶所在組的GID(該組是用戶的基本組) 第五段:用戶的描述信息(能夠隨便寫) 第六段:用戶的家目錄 第七段:用戶的shell類型 常見的shell類型 1:/bin/bash <<<< 默認是該shell的時候,能夠登陸系統 2:/sbin/nologin <<<改shell的用戶是沒法登陸系統的 例子:統計有多少用戶 [root@localhost ~]# cat /etc/passwd | wc -l 例子:統計當前系統中有多少用戶能夠登陸系統 [root@localhost ~]# grep "/bin/bash$" /etc/passwd root:x:0:0:root:/root:/bin/bash zhangsan:x:500:500::/home/zhangsan:/bin/bash lisi:x:502:502::/home/lisi:/bin/bash zs:x:503:503::/home/zs:/bin/bash [root@localhost ~]# grep "/bin/bash$" /etc/passwd |wc -l 4
用戶的分類
管理員 UID 0 特色:默認只有一個,就是root root不受任何權限的約束 系統用戶 UID 1-499 特色:在安裝完成linux以後或者安裝了某個程序執行自動生成 的用戶,這類用戶是默認狀況不能登陸系統的,這類用戶存在的 目的是爲了運行特定的服務(程序、進程) 默認系統用戶也沒有家目錄 普通用戶 UID 500+ 特色:須要運行命令 useradd來建立 普通用戶的權限很是小,一般僅僅能在本身的家目錄下進行操做 該類用戶的家目錄/home下和用戶同名的目錄
用戶組的分類
用戶的基本組(用戶的主組) 在/etc/passwd中第四個字段(GID)所指向的組就是用戶的基本組 用戶的附件組 注意:一個用戶能夠屬於多個組。同一時間,只能有一個是主組,其餘的就是附加組,除了主組以外的其餘組就是該用戶的附加組 補充:在用useradd建立普通用戶的時候,默認狀況下,會建立一個組,組名和用戶名 相同,該組默認就是該用戶的基本組(主組) useradd bajie tail /etc/passwd cat /etc/group 補充:linux的文件屬性 屬主:文件的屬主(誰建立的文件,文件的屬主就是誰) 屬組:設置文件對於一個特定用戶組所具備的權限,這個組就是該文件的屬組 注意:屬組、屬主默認都只有一個 若是一個用戶既不是屬主,也不是屬組的組內用戶,那麼該用戶就是"其餘用戶"
三類用戶
屬主 屬組的組內用戶 其餘用戶
建立用戶
useradd命令 做用:新建用戶 格式:useradd [options]用戶名 選項: -c "string" 設置新用戶的描述信息 -d "/path/to/dir" 設置用戶的家目錄 -e 月月/日日/年年:指定帳號的過時日期 -g GID:指定用戶的主組ID號或名稱 -G GID,GID,GID:指定用戶的附加組的ID號或名稱 -m 在建立用戶的時候,若是用戶家目錄不存在,則自動建立(該選項 自動使用) -M 不自動建立用戶家目錄 -r 建立系統用戶 用此選項建立的用戶有如下特色 一、默認用戶無家目錄 二、默認用戶uid<500 三、默認用戶的shell是bash 四、用戶能夠登陸系統 -s shType:指定用戶的shell類型 經常使用的shell /bin/bash /sbin/nologin -u UID 指定用戶的uid -u UID -o 指定讓新用戶使用一個現有的ID [root@localhost ~]# useradd -c "i am tom" tom [root@localhost ~]# tail /etc/passwd tom:x:505:505:i am tom:/home/tom:/bin/bash useradd zhangsan 建立用戶zhangsan tail /etc/passwd 查看用戶是否存在 id 用戶名 能夠查看用戶是否存在 例子:新建用戶jerry,要求主組爲gp01,附加組爲gp02 和gp03 [root@localhost ~]# useradd -g gp01 -G gp02,gp03 jerry [root@localhost ~]# tail /etc/passwd [root@localhost ~]# tail /etc/group 例子:建立一個用戶kity,要求將其建立爲系統用戶(無家目錄,uid<500,不能登陸系統) useradd -r -s /sbin/nologin kity 例子:新建用戶2222並指定UID爲600 useradd -u 600 2222 tail /etc/passwd lll:x:507:509::/home/lll:/bin/bash 2222:x:600:600::/home/2222:/bin/bash 例子:新建用戶dog,要求其uid爲660,主組爲gp02,附加組爲gp01,gp03,家目錄在/tmp/dog,指定shell類型爲bin/bash useradd -u 660 -g gp02 -G gp01,gp03 -d /tmp/dog -s /bin/bash dog groupadd命令 做用:新建用戶組 格式:groupadd [選項]組名 選項:-g:指定用戶組的組id [root@localhost ~]# groupadd gp01 [root@localhost ~]# groupadd gp02 [root@localhost ~]# groupadd gp03 [root@localhost ~]# tail /etc/group gp01:x:506: gp02:x:507: gp03:x:508:
id命令
做用:顯示指定用戶的id信息 格式:id[選項]用戶名 選項: -u:顯示用戶的UID -g:顯示用戶的主組的ID -G:顯示用戶的所有租的ID列表 id -g hhhhh useradd [root@localhost ~]# useradd -u 670 -g gp01 -Ggp02,gp03 hhhhh [root@localhost ~]# id hhhhh uid=670(hhhhh) gid=506(gp01) groups=506(gp01),507(gp02),508(gp03) [root@localhost ~]# id -G hhhhh 506 507 508 [root@localhost ~]# id -g hhhhh 506 [root@localhost ~]# id -u hhhhh 670
passwd命令
做用:修改用戶的密碼(給用戶設置密碼) 格式:passwd[選項]用戶名 注意: 1:passwd 用戶 修改指定用戶的密碼 2:passwd 修改當前用戶的密碼 3:默認狀況只有root用戶,才能修改其餘用戶的密碼,普通用戶只能修改本身的密碼 選項: -l:鎖定用戶(只有root才能進行鎖定操做) -u:解鎖用戶 --stdin:從表示輸出來讀取內容,爲用戶設置密碼(shell腳本中使用)
影子文件 /etc/shadow
做用:保存密碼 root:$6$HhL6V5BM$f29xu.FUgGnQqNtmqLGAyOy/fLMlF/JepDTfgoaqvC4.b7wiVmMc7i3HRDMVNdYQACOK9d3.wsgbZi1hPAEoj/:17997:0:99999:7::: 第一個字段:login name :系統中存在的用戶名 第二個字段:encrypted password :這裏存放的是加密後的密碼(單向加密) 1:若是密碼段中出現!或*,那麼就不能用此密碼登陸系統 2:若是密碼段爲空,則表示空密碼,可是系統每每禁止使用空密碼登陸 3:若是密碼開頭是*,表示密碼被鎖定了 第三個字段:date of last password change:密碼上次修改的日期,這裏所寫的是舉例 1970-1-1所通過的天數。 (1)若是該字段爲0,會要求用戶在下次登陸的時候修改密碼 (2)該文件不能爲空 第四個字段:minimum password age ,兩次修改密碼的最短期 一、爲空或者爲0,表示沒有最短期限制 第五個字段:maximum password age:密碼的最長有效期 一、若是字段爲空或者99999,表示不限制最長有效期 二、若是最長時間小於最短期,則禁止該用戶修改密碼 第六個字段:password warning period 指定在密碼到期前N天發送報警信息 一、若是爲0,表示不會自動發送報警信息 二、在此期間內,用戶能夠正常登錄系統 第七個字段:password inactivity period:密碼的非活動時間 一、在此期間登錄系統的時候,必須先修改密碼才能登錄系統。 二、若是在此階段仍然沒有修改密碼,那麼就真的登錄不上了(找管理員處理) 第八個字段:account expiration date:用戶的過時日期 一、表示方式也是用距離1970.1.1所通過的天數 二、該字段爲空,表示該字段永不過時 三、0表示用戶被禁用 第九個字段:reserved field :還沒有使用 注意: 密碼過時:修改密碼能夠繼續使用 帳戶過時:帳戶不再能登陸系統 /etc/passwd <<<用戶基本信息 ,useradd新建用戶,用戶的信息保存在這裏 /etc/group <<<用戶組信息,groupadd新建用戶組,用戶組的信息保存在這裏。 /etc/shadow <<<用戶的密碼文件,passwd的時候,其實就是修改這個文件中的內容
userdel命令
做用:刪除用戶 格式: userdel [options] 用戶名 選項: -r :在刪除用戶的同時,刪除用戶的家目錄
chsh命令
做用:修改用戶的shell類型 格式:chsh[-s type]username (本質上就是修改/etc/passwd中的內容)
chfn命令
做用:修改用戶的註釋信息
usermod命令
做用:修改用戶的基本信息(/etc/passwd) 格式:usermod [options]username 選項: -g GID:修改基本組 -G GID: 修改附加組 -u UID:修改uid值 -C string:修改用戶的描述 -d /path/dir:修改用戶的家目錄 -s SHELL:修改用戶的shell類型 -l newName:修改用戶的名稱 -L 鎖定用戶 -U 解鎖用戶
su命令
做用:切換用戶 格式:[options]用戶 選項 -[l]:切換用戶,而且繼承用戶的環境變量 -c 命令:在不切換用戶狀況下,以指定用戶的身份來執行命令
注意:
su切換用戶後返回,須要執行命令exit
例子:以root身份執行mkdir命令
$ su - -c "mkdir /abc1" root
生產環境的注意事項:
在生產環境中,若是員工離職,一般是禁用用戶,在短期內是不會刪除用戶的,更不會刪除用戶的家目錄以及家目錄中的文件。
禁用用戶
修改shell類型/sbin/nologin 在密碼前加上! 設置帳戶的過時時間爲0(密碼文件的第八段)
權限
r:讀 能夠執行cat、head、more、less等命令讀取文件中的內容,也能夠用vi打開並讀取文件中的內容 w:寫 能夠用vi或者重定向等操做文件中寫入內容或者修改其中的內容 x:執行 能夠執行文件(把程序轉換成進程)
目錄的權限
r:能夠執行ls命令來查看目錄下的文件有哪些 w:能夠在目錄下執行文件的建立和刪除等操做 x:能夠執行cd命令
用戶的角色有三類
屬主用戶(u)user 屬組用戶(g)group 其餘用戶(o)other 所有用戶(a)all
文件的權限位一共有10位
第一位:表示文件的類型
-:通常文件 d:目錄 l:連接文件 s:套接字文件 第二到第四位:表示文件的屬主所具備的權限 第五到第七位:表示文件的屬組的組內用戶所具備的權限 第八到第十位,表示系統中的其餘用戶所具備的權限 注意: 一、每一類用戶的權限的順序都是:讀權限、寫權限、執行權限 二、若是用戶有對應的權限,就出現字符,若是沒有對應的權限就用-表示。 例子:[root@localhost tmp]# ls -l 1.txt -rw-r--r-- 1 root bin 149 Apr 16 18:22 1.txt 文件的屬主權限:可讀可寫 文件的屬組用戶權限:只讀權限 其餘用戶的權限:只讀權限
chown命令
做用:修改文件的屬主 格式:chown userName [-R]fileNAme 選項: -R 在修改目錄的時候,將目錄和目錄中的文件都一併修改 例子:將文件a.txt的屬主改成zhangsan chown zhangsan a.txt 例子:將目錄yunwei和yunwei中的文件的屬主都修改成zhangsan chown -R zhangsan yunwei
chgrp命令
做用:修改文件的屬組 例子:將文件a.txt的屬組改成tom chgrp tom a.txt 例子:將文件a.txt的屬主改成zhangsan ,屬組改成tom chown zhangsan.tom a.txt 或者 chown zhangsan:tom a.txt 注意: 修改屬主或者屬組的時候,那個用戶名和組名是存在的,不然報錯。
chmod命令
做用:修改文件的權限 格式:chmod 權限 -R fileName 選項:-R 方式: +:增價某項權限 -:去除權限 =:將權限修改成指定的類型(和原來的權限無關) 例子:修改文件a.txt的權限 去除屬主的寫權限 將屬組的權限設置爲讀和寫 給其餘用戶添加寫權限 chmod u-w,g=rw,0+w a.txt 例子:給所有用戶都添加上執行權限 chmod ugo+x a.txt 或者 chmod a+x a.txt 或者 chmod +x a.txt 例子:去除其餘用戶的所有權限 chmod o= a.txt chmod o-rwx a.txt
基於數字表示文件的權限
r:4 w:2 x:1 --- 000 0 --x 001 1 -w- 010 2 -rx 011 3 r-- 100 4 r-w 101 5 rw- 110 6 rwx 111 7 例子:將文件a.txt的屬主改成可讀可寫,屬組改成可讀,其餘用戶沒有任何權限 #chmod 640 a.txt
建立用戶的原理
和用戶相關的文件 一、/etc/passwd 二、/etc/shadow 三、/etc/group 四、/etc/skel <<<<用戶家目錄的模版 五、/etc/login.defs <<<<控制新建用戶的默認屬性 六、/etc/defaults/useradd <<<<控制新建用戶的默認屬性 七、/var/spool/mail/用戶名
新用戶的家目錄若是生成
一、將/etc/skel目錄複製home下,更名爲和用戶名相同 二、將該目錄的屬主和屬組改成用戶名 三、將該目錄的權限設改成700 假設新建一個用戶laosun #cp r /etc/skel /home/laosun #chown -R laosun.laosun /home/laosun #chmod -R 700 /home/laosun MAIL_DIR /var/spool/mail 指定新建用戶的郵件文件的默認位置 (默認郵件文件的名稱和用戶名相同) PASS_MAX_DAYS 99999 新用戶的密碼最長有效期 PASS_MIN_DAYS 0 修改密碼最短間隔時間 PASS_MIN_LEN 5 普通用戶密碼的最短長度 PASS_WARN_AGE 7 密碼到期前警告時間 UID_MIN 500 新建普通用戶的默認UID最小值 UID_MAX 60000 新建普通用戶的默認UID最大值 GID_MIN 500 新建普通用戶的默認GID最小值 GID_MAX 60000 新建普通用戶的默認GID最大值 CREATE_HOME yes 是否默認建立用戶家目錄 UMASK 077 反向掩碼值(用來控制新建文件和目錄的默認權限值) USERGROUPS_ENAB yes 當用戶組中沒有用戶了,是否刪除用戶組 ENCRYPT_METHOD SHA512 指定加密算法 SHA512 MD5
加密後的密碼由三部分構成
$6$qSBbNTqA$ESH1UDekytAKPw4olQNulWQv/uZxOJETUQOcB $加密算法$隨機字符串$加密後的數據 說明: 加密算法: 一、表示MD5加密 六、SHA512加密 vim /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home <<<<<默認普通用戶的家目錄的位置 INACTIVE=-1 <<<<<設置新用戶帳號是否過時。-1表示不啓用 EXPIRE= <<<<<設置新建帳戶的過時日期,空白表示不啓用 SHELL=/bin/bash <<<<<設置新建用戶的默認shell類型 SKEL=/etc/skel <<<<<指定新建用戶的家目錄模版目錄 CREATE_MAIL_SPOOL=yes <<<<<設置是否給新建的用戶建立用戶郵件
新建用戶
useradd passwd
完成的操做
一、/etc/passwd 添加一行 二、/etc/shadow 添加一行 三、/etc/group 添加一行 四、建立用戶家目錄 五、建立用戶郵件文件
例子:建立用戶timi,要求uid 777,主組hadoop (800)
附加組 python (850) hbase(860) 家目錄 /home/timi 描述 i am timi 密碼設置爲123 最少使用3天才能修改,最長使用30天,到期 前5天發送報警,非活動時間2天。 實現步驟: 一、建立用戶基本信息(/etc/passwd) vim /etc/passwd timi:x:777:800:i am timi:/home/timi:/bin/bash 二、檢查用戶 id timi 三、使用openssl來生成密碼 格式:openssl -1 --salt "string" 說明: -1 表示md5加密算法 --salt表示在加密的時候摻入雜誌(提高安全性) [root@localhost ~]# openssl passwd -1 -salt "abc123" Password: $1$abc123$uE7.dLhrmG/qKHqAIlwPi. 四、修改密碼文件 timi:$1$abc123$uE7.dLhrmG/qKHqAIlwPi.:18005:3:30:5:2:: 五、建立用戶組 vim /etc/group hadoop:x:800: python:x:850:timi habse:x:860:timi 六、建立用戶家目錄 # cp -r /etc/skel /home/timi # cd /home/ # chown -R timi.hadoop /home/timi/ # chmod -R --reference=*** timi ***已經存在於/home中 (把timi的權限參照改成***的權限) 七、建立用戶郵件 cd /var/spool/mail/ ls touch timi chmod 660 timi chown timi.mail timi 八、測試用戶是否能夠正常使用 補充: #useradd guizi useradd 警告:此主目錄已經存在。 不從sekl目錄裏向其中複製任何文件。 <<<<<1 正在建立信箱文件,文件已存在 <<<<<2 新建用戶出現這個錯誤信息,就表示 一、表示用戶的家目錄已經存在 二、表示用戶的郵件文件已經存在