練習1:創建用戶Oracle,所屬附加組database和sql,ID號爲3000, 家目錄爲/home/database
groupadd database
groupadd sql (先新建兩個用戶組,問:groupadd是否可一次新建多個組?)
useradd oracle -u 3000 -d /home/database -G database,sql
id oracle (查看用戶oracle id以及組相關信息)
uid=3000(oracle) gid=3000(oracle) groups=3000(oracle),1000(database),1001(sql)
cat /etc/passwd |grep oracle (從passwd文件中篩選出oracle相關信息)
oracle:x:3000:3000::/home/database:/bin/bash
cat /etc/shadow |grep oracle (查看oracle用戶賬戶密碼相關信息) oracle:$6$bnk5PioM$8h04509U0yhpq5bkicoJYWpE1yEJlIuIhD5jg3vu.orPs2ICFqTLl.chuKFASekW4UkEilZfLrc2C57YPcCnf1:16673:0:99999:7:::
用戶管理和權限管理:
AAA認證機制(驗證、授權、計費Authencattion、Authorzation、Accounting)
A:認證機制
identity(username/password)
token
A:permission
mode
ownership
Linux用戶:UserName/password
UID:0-65535
管理員:0
普通用戶:1-60000
系統用戶:
CentOS6: 1-499
CentOS7:1-999
登錄用戶:
CentOS6: 500+
CentOS7: 1000+
Linux組:GroupName/GID
管理員組:0
普通組:
1-499, 1-999
500+, 1000+
用戶的基本組:
用戶的私有組:
用戶的附加組:
總結:任何一個組都可以添加多個用戶的,一個用戶可以同時隸屬於多個組,除自己基本組之外的都叫做附加組,默認創建一個用戶,會自動創建一個同名的組,這個同名的組就是這個用戶的基本組,且是私有組 ,私有組包含的組成員 有且只有一個!
Linux用戶和組的相關的配置文件:
/etc/passwd:用戶名、UID、基本組等信息
/etc/group:組名、GID、組內包含的用戶;
/etc/shadow:用戶密碼及相關屬性;
/etc/gshadow:組的密碼及相關屬性;
/etc/passwd:
name:password:UID:GID:GECOS:directory:shell
登錄名:x:UID:GID:comment:主目錄:用戶默認shell
/etc/shadow:
login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field
$6$YNzGOv5VyXxmDU2n$PxariU7Ag0mBlzBoNLWUjubn9OBtoLJauXIfoRqQ1FtZt058FrQKJO6QVJTUXkP4LUKPsiH7ejWo8bg6c4RrC1
6:加密算法
單向加密:
提取數據指紋;
md5, sha1, sha224, sha256, sha384, sha512
雪崩效應:
定長輸出:
相對於Unix元年;
1970年1月1號;
/etc/group
group_name:password:GID:user_list
密碼的複雜性策略:
1、使用數字、小寫字母、大寫字母、特殊字符四類中至少三類;
2、足夠長;
3、使用隨機密碼;
4、定期更換;
(注:以下部分借鑑 JY1506403-45+fz8770(上海:方旨)同學博客,並徵得對方同意)
用戶和組管理的相關命令:
useradd、usermod、passwd、userdel
groupadd、groupmod、gpasswd、groupdel
chage, chsh, chfn
id, w, who, whoami
su
useradd:創建用戶
useradd [options] LOGIN
useradd -D [options]
-r: 創建系統用戶
-u UID: 指定UID;
-g GID: 指定用戶所屬基本組,此組必須事先存在
-c 'COMMENT':
-d /PATH/TO/SOMEWHERE:指定用戶的主目錄路徑;此位置不能事先存在,否則,其用戶相關配置文件將被複制;/etc/skel
-s SHELL:設定用戶的默認shell;
cat /etc/shells
-G GID,...:指定所屬的附加組;
-M: 不給用戶創建家目錄;
示例:
[root@Blackghost ~] useradd tank #添加用戶
[root@Blackghost ~] useradd -r zhangy #添加系統用戶
[root@Blackghost ~] useradd -d /home/zhangying zhangying #添加用戶,並且指定,home目錄
[root@Blackghost ~] useradd -g mytest -d /home/hao hao #添加用戶,指定組,並且設定home目錄(此home目錄不能事先存在)
[root@Blackghost ~] useradd -e 04/05/13 fxxk #添加用戶,並給用戶設置有效期
練習:創建用戶Oracle,所屬附加組database和sql,ID號爲400, 家目錄爲/home/database;
[root@Blackghost ~] useradd -u 400 -G database,sql -d /home/database oracle
groupadd:創建組
groupadd [OPTIONS] GROUPNAME
-g GID: 指明組ID;
-r: 創建系統組;
示例:
添加一個用戶組[root@Blackghost ~] groupadd mytest添加一個用戶組,並指定GID[root@Blackghost ~] groupadd -g 444 test
id:查看用戶相關的id信息
id [OPTION]... [USER]
-u: UID
-g: GID
-G: Groups
-n: NAME
示例:
[root@localhost ~]# id #顯示當前用戶的信息
uid=0(root) gid=0(root) 組=0(root)
[root@localhost ~]# id zhangy #顯示zhangy的信息
uid=999(zhangy) gid=999(zhangy) 組=999(zhangy)
su:switch user, 切換用戶或以其它用戶的身份執行命令
切換方式:
su USERNAME: 非完全切換;非登錄式切換
su - USERNAME或su -l USERNAME: 完全切換;登錄式切換
僅以指定用戶的身份執行指定的命令:
su - USERNAME -c 'COMMAND'
示例:
[root@Blackghost ~] su zhangying #切換用戶,原用戶環境變量
[root@Blackghost ~] su - zhangying #切換用戶,新用戶環境變量
[zhangying@Blackghost ~] su -c ls root #切換用戶執行命令,執行後返回原用戶
usermod:用戶屬性修改
usermod [OPTION]... LOGIN
-u UID
-g GID
-G GID[,GID,...]:修改用戶所屬的附加組;同時使用-a選項爲追加附加組;
-s SHELL
-c 'COMMENT'
-d HOME: 修改用戶的家目錄爲新位置時,用戶原來的文件是不會被移動至新家;-m選項可實現同時將其遷至新的家目錄;
-l LOGIN:
-L:lock user
-U: unlock user
示例:
[root@Blackghost ~] usermod -d /home/bak/ zhangying #更改用戶home目錄
[root@Blackghost ~] usermod -e 05/06/13 zhangying #給用戶加個有效期
1、將 newuser2 添加到組 staff 中# usermod -G staff newuser22、修改 newuser 的用戶名爲 newuser1# usermod -l newuser1 newuser3、鎖定賬號 newuser1# usermod -L newuser14、解除對 newuser1 的鎖定# usermod -U newuser1
passwd:給用戶添加密碼
passwd [OPTION] [UserName]
-l: lock user
-u: unlock user
-n mindays: 最短使用期限;
-x maxdays:默認爲99999天;
-w warndays:
-i inactivedays:
--stdin:從標準輸出接收用戶密碼;
echo 'centos' | passwd --stdin centos
示例:
[root@Blackghost ~] passwd zhangying #給zhangying修改密碼
userdel:刪除用戶
userdel [-r] USERNAME
-r:刪除用戶的同時刪除其家目錄;
groupmod: 組屬性修改
groupmod [OPTION] GROUPNAME
-n GROUP_NAME
-g GID
示例:
[root@Blackghost ~] userdel fxxk #刪除用戶
[root@Blackghost ~] userdel -r hao #刪除用戶,並且刪除用戶home目錄
gpasswd:設定組密碼
用法:gpasswd[-a user][-d user][-A user,...][-M user,...][-r][-R]groupname
參數:
-a:添加用戶到組
-d:從組刪除用戶
-A:指定管理員
-M:指定組成員和-A的用途差不多
-r:刪除密碼
-R:限制用戶登入組,只有組中的成員纔可以用newgrp加入該組
gpasswd groupname:如系統有個peter賬戶,該賬戶本身不是groupname羣組的成員,使用newgrp需要輸入密碼即可
示例:
[root@localhost ~]# gpasswd -A peter test2 #將peter設爲test2組管理員
[root@localhost ~]# gpasswd -a peter test2 #將用戶peter加入到test2組
[root@localhost ~]# gpasswd -d peter test2 #將用戶peter從test2組中移出
newgrp:切換基本組爲指定的組
示例:
[zhangy@localhost ~]# newgrp www #登錄到www羣組
說明:newgrp指令類似login指令,當它是以相同的帳號,另一個羣組名稱,再次登入系統。欲使用newgrp指令切換羣組,您必須是該羣組的用戶,否則將無法登入指定的羣組。單一用戶要同時隸屬多個羣組,需利用交替用戶的設置。若不指定羣組名稱,則newgrp指令會登入該用戶名稱的預設羣組。
groupdel:刪除組
示例:
[root@Blackghost ~] groupdel test #刪除組test
chage:修改用戶賬號及密碼的屬性
chage [OPTION]... LOGIN
參數意思:
-m 密碼可更改的最小天數。爲零時代表任何時候都可以更改密碼。
-M 密碼保持有效的最大天數。
-W 用戶密碼到期前,提前收到警告信息的天數。
-E 帳號到期的日期。過了這天,此帳號將不可用。
-d 上一次更改的日期
-I 停滯時期。如果一個密碼已過期這些天,那麼此帳號將不可用。
-l 例出當前的設置。由非特權用戶來確定他們的密碼或帳號何時過期。
示例:
1
[root@localhost ~]# chage -l zhangy #查看用戶密碼設定情況
最近一次密碼修改時間 : 4月 27, 2013
密碼過期時間 : 從不
密碼失效時間 : 從不
帳戶過期時間 : 從不
兩次改變密碼之間相距的最小天數 :-1
兩次改變密碼之間相距的最大天數 :-1
在密碼過期之前警告的天數 :-1
[root@localhost ~]# chage -M 90 zhangy #密碼有效期90天
[root@localhost ~]# chage -d 0 zhangy #強制用戶登陸時修改口令
[root@localhost ~]# chage -d 0 -m 0 -M 90 -W 15 zhangy #強制用戶下次登陸時修改密碼,並且設置密碼最低有效期0和最高有限期90,提前15天發警報提示
2
# chage -E '2014-09-30' test # test這個賬號的有效期是2014-09-30
其它命令:
chfn:改 變 你 的 finger 訊 息
chsh:用於 改變 用戶的 登錄 shell. 如果 沒有在 命令行上 指定 shell, chsh 能夠 做出 提示.
finger:用戶信息查找
whoami:打印與當前生效的用戶 ID 關聯的用戶名。與 id -un 相同。
who:顯示當前已登錄的用戶信息
用法:who [選項]... [ 文件 | 參數1 參數2 ]
示例:
[root@localhost ~]# who #顯示目前登入系統的用戶信息
tank tty1 2013-05-10 08:29
tank pts/0 2013-05-10 08:29 (192.168.56.1)
[root@localhost ~]# who -a #顯示目前登入系統的用戶詳細信息
系統引導 2013-05-10 08:11
運行級別 2 2013-05-10 08:11
登錄 tty4 2013-05-10 08:11 814 id=4
登錄 tty5 2013-05-10 08:11 825 id=5
登錄 tty2 2013-05-10 08:11 842 id=2
登錄 tty3 2013-05-10 08:11 845 id=3
登錄 tty6 2013-05-10 08:11 852 id=6
tank - tty1 2013-05-10 08:29 01:08 1395
tank + pts/0 2013-05-10 08:29 . 1493 (192.168.56.1)
[root@localhost ~]# who -q #列出所有已登錄用戶的登錄名與用戶數量
tank tank
# 用戶數=2
[root@localhost ~]# who -u #列出已登錄的用戶
tank tty1 2013-05-10 08:29 01:08 1395
tank pts/0 2013-05-10 08:29 . 1493 (192.168.56.1)
[root@localhost ~]# who -r #查看已登錄的用戶的級別
運行級別 2 2013-05-10 08:11
[root@localhost ~]# who -b #上次系統啓動時間
系統引導 2013-05-10 08:11
w:顯示目前登入系統的用戶信息。
語法:w [-fhlsuV][用戶名稱]
-f 開啓或關閉顯示用戶從何處登入系統。
-h 不顯示各欄位的標題信息列。
-l 使用詳細格式列表,此爲預設值。
-s 使用簡潔格式列表,不顯示用戶登入時間,終端機階段作業和程序所耗費的CPU時間。
-u 忽略執行程序的名稱,以及該程序耗費CPU時間的信息。
示例:
[root@localhost ~]# w #示目前登入系統的用戶信息
09:30:39 up 1:19, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
tank tty1 08:29 1:01m 1.04s 0.91s -bash
tank pts/0 192.168.56.1 08:29 0.00s 1.70s 0.13s sshd: tank [priv]
用戶對文件的訪問權限有三種:
r, w, x
文件:
r: 可使用文件查看工具查看其內容;
w: 可使用文件編輯工具編輯其內容;
x: 可向內核請求將此文件運行爲進程;
目錄:
r: 可使用ls命令列出目錄中的文件或子目錄列表;
w: 可在此目錄中創建或刪除文件;
x:可使用‘ls -l’列出目錄文件及子目錄的詳細屬性信息;可使用cd命令切換工作目錄爲指定目錄;
文件的權限主要針對三類對象進行定義:
ownuer: u, 屬主;
group: g, 屬組;
other: o, 其它;
某類用戶對某文件的訪問權限:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
664:rw-rw-r--
rwxr-x---: 750
權限管理: chmod
所屬關係管理: chown, chgrp
文件遮罩碼:umask