寫在前面:
本博客詳解命令如下:
useradd, userdel,usermod, passwd, chage, groupadd, groupdel, groupmod, gpasswd ,newgrp, chsh, id, su, chmod, chowm, chgrp, umask, install, mktemp
用戶,組,權限管理
用戶標示:userID=UID
用16位二進制標示:0-65535
管理員:0
普通用戶:1-65535
系統用戶:1-499(centos6),1-999(centos7)
登陸用戶:500-60000(centos6),1000-60000(centos7)
名稱解析:名稱轉換,根據名稱解析庫進行/etc/passwd 即username <–> UID
進程以其發起者的身份運行,進程對文件的訪問權限,取決于發起此進程的用戶的權限
為了讓后臺進程或服務進程以非管理員的身份運行,通常需要維持創建多個普通用戶,這類用戶從不用登陸系統
組標示:groupID=GID
組類別1:
管理員組:0
普通用戶組:1-65535
系統用戶組:1-499(centos6),1-999(centos7)
登陸用戶組:500-60000(centos6),1000-60000(centos7)
名稱解析:groupname<–>GID,解析庫:/etc/group
組類別2
用戶基本組
用戶附加組
組類別3
私有組:組名同用戶,且只包含一個用戶
公共組:組內包含了多個用戶
用戶信息的存儲位置:
/etc/passwd:用戶信息庫
具體查看/etc/passwd的方法:
[root@yph7 ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
[root@yph7 ~]# man 5 passwd
具體內容如下:
name:passwd:UID:GID:GECOS:directory:shell
name :用戶名
passwd:加密的密碼,或者占位符x
UID:用戶ID
GID:用戶所屬組的ID
GECOS:注釋信息
dircotory:用戶的家目錄
shell:用戶的默認shell
下行是以用戶breeze為例查看得的信息
breeze:x:1004:1004::/home/breeze:/bin/bash
/etc/shadow:
可用 命令“man 5 shadow”查看詳細解釋信息
此文件保存用戶的密碼的相關信息:以冒號隔開。下面以用戶breeze的密碼為例:
breeze:$6$9lM/L.1L$NIV.GqNo5KnzuWsPu5dTQQuESC/MW6fgBzbss7YdbcWDx8Q6OBYZ9nPbnmib7UR9tH0G3U6WLcHbt.wsrk9oc/:16778:0:99999:7:5:88888:
用戶名:breeze
加密后的密碼:
$6$9lM/L.1L$NIV.GqNo5KnzuWsPu5dTQQuESC/MW6fgBzbss7YdbcWDx8Q6OBYZ9nPbnmib7UR9tH0G3U6WLcHbt. wsrk9oc/
前兩個$之間的6表示加密碼類型。6表示sha512sum方式加密。第二第三個$之間的9lM/L.1L表示加密 時添加的隨機數salt。最后面的一串代碼表示加密后的密碼串
上一次修改密碼的時間:16778,指自從1970年01月01號到上次修改密碼之間的天數
最短使用期限:0表示不限制
最長使用期限:99999 表示不限時間
警告期:7 表示在密碼過期前7天開始警告你修改密碼
非活動期限:5 表示密碼過期5之內不修改密碼不能再登陸系統,到時只能找管理員解鎖
賬戶過期期限:指從1970-01-01號開始,88888天后過戶過期。此不同密碼過期,賬戶過期就不能再登陸
保留字段:此字段暫時沒定義信息
/etc/group:
存放組的相關信息。
可用 命令“man 5 group”查看詳細解釋信息
group_name:passwd :GID:user_list
group_name:組的名字
passwd:組的密碼
GID:組ID
user_list:該組的用戶成員,以此組為附加組的用戶用戶列表
/etc/gshadow:
可用 命令“man 5 gshadow”查看詳細信息
存放組的相關信息,下面以組mygroup為例:
mygroup:$6$0.CRmuyJ$3nns…..xWLDZqla/:mysql5:mysql5,mysql6
組名:mygrp
密碼:$6$0.CRmuyJ$3nns…..xWLDZqla/ 為該組加密后的組密碼,由于過長,中間省略了一部分
管理員:mysql5為該組的管理員
組成員:mysql5和mysql6兩個用戶以該組為附加組
再次強調一遍:這四個文件的內容代表什么意思,請用"man 5 [] "查看
用戶密碼使用策略:
1、使用隨機密碼
2、最短長度大于等于8位
3、至少使用大、小寫字母,數字,標點四類符號中的三類
4、定期更換。
加密算法:
對稱加密:加密和解密使用同一個密碼
非對稱加密:加密和解密使用一對秘鑰
公鑰:public key
私鑰:private key
單向加密:只能加密不能解密,提取數據特征碼(用人做出指紋,不能拿指紋做出一個完整的人)
定長輸出:長度都一樣
雪崩效應:原密碼微小變化引起加密后密碼的絕大多數改變
下面兩個例子是演示兩種單向加密的雪崩效應,密碼就變動一個字符,整個加密后密碼幾乎完全不同!
[root@yph7 tmp]# echo "stupidbid." | md5sum
b111ba6095eecab556928fb090e67bfc –
[root@yph7 tmp]# echo "stupidbird?" | md5sum
617ce59960c4a4069abca8a12591f89f –
[root@yph7 tmp]# echo "stupidbird?" | sha512sum
d55dd8d9e41e90430fb06e5d1cf71ace340c3b641a0a97abecc50590c96aae238662723ee61605ca2ca2bb90627b140e8ab5c6f83188ff61f5022809c47ec5fd –
[root@yph7 tmp]# echo "stupidbird." | sha512sum
f86276b82bd1403dbc38abf01f1b57895b942961f468b00380cb8aa438f838514aea59033c9f46ed72931a998ed81921140def986db842260dd94698b69ce328 –
單向加密工具:
1、md5sum:128位,message digest,
2、sha1sum:secure hash algorithm 160位
3、sha224sum:224 bits
4、sha256sum:256 bits
5、sha384sum: 384 bits
6、sha512sum: 512 bits
敲sha然后TAB鍵查看有哪些,數字代表多少位
在計算前加salt,加隨機數:即使兩個人密碼一樣,由于加了隨機數,密碼代碼仍幾乎不同
這個隨機數會被系統記住以便用戶登錄時比對碼文
下面演示一些相關的命令:
useradd:create a new useror update default new user information useradd breeze
-u,–uid UID:指定UID
[root@yph7 tmp]# useradd -u 2001 hadoop
[root@yph7 tmp]# id hadoop
uid=2001(hadoop) gid=2001(hadoop) 組=2001(hadoop)
-g,–gid group:指定基本組,寫ID和組名都可以,但必須事先存在
[root@yph7 tmp]# useradd -g 2001 mysql
[root@yph7 tmp]# id mysqle
uid=2002(mysqle) gid=2001(hadoop) 組=2001(hadoop)
[root@yph7 tmp]# useradd -g breeze mysql3
[root@yph7 tmp]# id mysql3
uid=2004(mysql3) gid=1004(breeze) 組=1004(breeze)
-G,–groups group1,group2…:附加組,每個組都用逗號隔開,沒有中間的空格,組必須存在
[root@yph7 tmp]# useradd -G 2002,2003 mysql5
[root@yph7 tmp]# id mysql5
uid=2005(mysql5) gid=2005(mysql5) 組=2005(mysql5),2002(mygroup),2003(hisgroup)
[root@yph7 tmp]# useradd -G mygroup,hisgroup mysql6
[root@yph7 tmp]# id mysql6
uid=2006(mysql6) gid=2006(mysql6) 組=2006(mysql6),2002(mygroup),2003(hisgroup)
-c,–comment“comment”:注釋信息
[root@yph7 tmp]# useradd -c "I am foolvbird" mydql4
[root@yph7 tmp]# tail -1 /etc/passwd
mydql4:x:2007:2007:I am foolvbird:/home/mydql4:/bin/bash
-d,–home home_dir:以指定的路徑為用戶的家目錄;通過復制/etc/skel此目錄并重命名實現;
指定的家目錄路徑如果事先存在,則不會為用戶復制環境配置文件;
/etc/skel中有用戶家目錄中需要的隱藏文件,一般每個用戶家目錄中都有,是創建用戶時
自動把skel目錄復制過去,并更名為用戶家目錄的。但如果設定已存在的目錄為用戶家目錄,
則不會復制這些隱藏文件,原目錄的數據不會丟失
[root@yph7 tmp]# ls -a /etc/skel
. .. .bash_logout .bash_profile .bashrc .mozilla
[root@yph7 tmp]# ls -a /home/breeze
. .. .bash_logout .bash_profile .bashrc .mozilla
[root@yph7 tmp]# ls /tmp/oracle1/
a_c a_d b_c b_d
[root@yph7 tmp]# useradd -d /tmp/oracle1 oracle1
-useradd:警告:此主目錄已經存在。
不從 skel 目錄里向其中復制任何文件。
[root@yph7 tmp]# ls /tmp/oracle1
a_c a_d b_c b_d
-s, –shell SHELL:指定用戶默認shell,可用的shell列表存儲在/etc/shells
[root@yph7 tmp]# useradd -s /sbin/nologin mysql7
[root@yph7 tmp]# tail -n 1 /etc/passwd
mysql7:x:2009:2009::/home/mysql7:/sbin/nologin
/sbin/nologin是不允許登陸的系統用戶的shell
-r, –system:創建系統用戶
-M,–no-create-home:不創為用戶建用戶主目錄,即使系統在 /etc/login.defs 中的設置 (CREATE_HOME) 為 yes。
-f,–inactive:密碼過期后,賬戶被徹底禁用之前的天數,0表示立即禁用,-1表示不用此功能,默認為-1
注意:創建用戶是的諸多默認設置配置文件/etc/login.defs
-D,–defaults:顯示創建用戶的默認配置
[root@yph7 tmp]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes 每創建一個用戶默認創建一個郵筒/var/spool/mail下
–D options:修改配置信息
–e,-f,-g,-s,
修改結果保存于/etc/default/useradd中
如果要修改這些配置信息,就用如下方式
[root@yph7 tmp]# useradd -D -s /bin/tcsh
[root@yph7 tmp]# useradd mysql8
[root@yph7 tmp]# tail -n 1 /etc/passwd
mysql8:x:2010:2010::/home/mysql8:/bin/tcsh
[root@yph7 tmp]# ls /var/spool/mail
bree flimmer gentoo mageedu mysql2 mysql5 mysql7 mysqle rpc
breeze flivfox hadoop mydql4 mysql3 mysql6 mysql8 oracle1 slackware
usermod: modify a user account id 查看
-u, –uid :修改用戶的ID
[root@yph7 tmp]# id hadoop
uid=2001(hadoop) gid=2001(hadoop) 組=2001(hadoop)
[root@yph7 tmp]# usermod -u 2051 hadoop
[root@yph7 tmp]# id hadoop
uid=2051(hadoop) gid=2001(hadoop) 組=2001(hadoop)
-g,–gid :修改用戶基本組
[root@yph7 tmp]# usermod -g breeze hadoop; id hadoop
uid=2051(hadoop) gid=1004(breeze) 組=1004(breeze)
-G,–groups:修改附加組,原來的附加組會被覆蓋
[root@yph7 tmp]# usermod -G flivfox hadoop ;id hadoop
uid=2051(hadoop) gid=1004(breeze) 組=1004(breeze),1005(flivfox)
[root@yph7 tmp]# usermod -G flimmer hadoop;id hadoop
uid=2051(hadoop) gid=1004(breeze) 組=1004(breeze),1006(flimmer)
-a,–append:附加,只能與-G一同使用,追加附加組,且一次只能增加一個
usermod -a -G
[root@yph7 tmp]# usermod -a -G flivfox hadoop ;idhadoop
uid=2051(hadoop) gid=1004(breeze) 組=1004(breeze),1005(flivfox),1006(flimmer)
注意:-a必須寫在-G 前面,
-c,–comment 修改注釋信息
[root@yph7 tmp]# usermod -c "I am a stupid bird"mysql8
mysql8:x:2010:2010:I am a stupid bird:/home/mysql8:/bin/tcsh
-d,–home DIR:修改家目錄,但用戶原有文件不會移動至新目錄,而且用戶仍然受新家目錄權限的限制
[root@yph7 ~]# useradd gentoo
[root@yph7 ~]# ll -d /tmp/gentoo
drwxr-xr-x. 2 root root 6 Dec 13 17:16 /tmp/gentoo
[root@yph7 ~]# usermod -d /tmp/gentoo gentoo
[root@yph7 ~]# su -c "cd;pwd" gentoo
/tmp/gentoo
[root@yph7 ~]# ls -a /tmp/gentoo
. ..
[root@yph7 ~]# ls -a /home/gentoo
. .. .bash_logout .bash_profile .bashrc .mozilla
-m,–move-home:與-d起使用,把原家目錄剪切至新家目錄,新家目錄事先不能存在
[root@yph7 ~]# ll /var/tmp/
drwxr-xr-x. 2 abrt abrt 6 Mar 24 2015 abrt
[root@yph7 ~]# usermod -m -d /var/tmp/gentoo gentoo
[root@yph7 ~]# ls -a /var/tmp/gentoo
. .. .bash_logout .bash_profile .bashrc .mozilla
[root@yph7 ~]# ll -a /home/gentoo
ls: cannot access /home/gentoo: No such file or directory
-l,–login NEW_LOGIN:修改用戶名
[root@yph7 tmp]# usermod -l oracle2 mysql8
[root@yph7 tmp]# id oracle2
uid=2010(oracle2) gid=2010(mysql8) 組=2010(mysql8)
-s,–shell SHELL:修改用戶的默認shell;
[root@yph7 tmp]# tail -1 /etc/passwd
oracle2:x:2010:2010:I am a stupid bird:/home/mysql8:/bin/tcsh
[root@yph7 tmp]# usermod -s /bin/bash oracle2
[root@yph7 tmp]# tail -n 1 /etc/passwd
oracle2:x:2010:2010:I am a stupid bird:/home/mysql8:/bin/bash
-L,–lock:鎖定用戶密碼,禁止登陸,即在用戶原來的密碼字符串之前添加一個"!";
[root@yph7 ~]# usermod -L oracle2
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:!$6$UNmW9Hyl$TLLieo9TNV5UTTKnu4itP3gZvax.tz66uPw/BjBg6GzpXr2x/Ir5ggtPrhniod5PzJRh6bE1FSvkqzCpRhcKC.:16781:0:99999:7:::
-U,–unlock:解鎖用戶密碼,去掉!
[root@yph7 ~]# usermod -U oracle2
[root@yph7 ~]# tail -n 1 /etc/shadow
oracle2:$6$UNmW9Hyl$TLLieo9TNV5UTTKnu4itP3gZvax.tz66uPw/BjBg6GzpXr2x/Ir5ggtPrhniod5PzJRh6bE1FSvkqzCpRhcKC.:16781:0:99999:7:::
userdel:– delete a user accountand related files
刪除用戶默認刪除基本組
-r,–remove:刪除用戶時一并刪除用戶家目錄
[root@yph7 ~]# ls /home
bree flimmer gentoo mageedu mysql2 mysql5 mysql7 mysqle
[root@yph7 ~]# userdel -r mysql7 ;id mysql7
id: mysql7: no such user
[root@yph7 ~]# ls /home
bree flimmer gentoo mageedu mysql2 mysql5 mysqle
練習1:創建用戶gentoo,UID為4001,基本組為gentoo,附加組為distro(GID為5000)和peguin(GID為5001);
[root@yph7 tmp]# groupadd -g 5000 distro
[root@yph7 tmp]# groupadd -g 5001 peguin
[root@yph7 tmp]# tail -2 /etc/group
distro:x:5000:
peguin:x:5001:
[root@yph7 tmp]# useradd -u 4001 -G distro,peguin gentoo
[root@yph7 tmp]# id gentoo
uid=4001(gentoo) gid=4001(gentoo)groups=4001(gentoo),5000(distro),5001(peguin)
練習2:創建用戶fedora,其注釋信息為"Fedora Core",默認shell為/bin/tcsh;
[root@yph7 tmp]# useradd -c "Fedora Core" -s/bin/tcsh fedora
[root@yph7 tmp]# tail -1 /etc/passwd
fedora:x:4002:4002:Fedora Core:/home/fedora:/bin/tcsh
練習3:修改gentoo用戶的家目錄為/var/tmp/gentoo;要求其原有文件仍能被用戶訪問;
練習4:為gentoo新增附加組;
[root@yph7 tmp]# groupadd netadmin
[root@yph7 tmp]# usermod -a -G netadmin gentoo
[root@yph7 tmp]# id gentoo
uid=4001(gentoo) gid=4001(gentoo)groups=4001(gentoo),5000(distro),5001(peguin),5002(netadmin)
passwd:– update user'sauthentication tokens
(1)passwd直接修改自己的密碼
[flimmer@yph7 ~]$ passwd
Changing password for user flimmer.
Changing password for flimmer.
(current) UNIX password:
(2)passwd username ,管理員修改其他用戶密碼
[root@yph7 ~]# passwd hadoop
Changing password for user hadoop.
New password:
-l,-u:lock,unlock鎖定和解鎖用戶密碼
[root@yph7 ~]# passwd -l oracle2
Locking password for user oracle2.
passwd: Success
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:!!$6$UNmW9Hyl$TLLieo9TNV5UTTKnu4itP3gZvax.tz66uPw/BjBg6GzpXr2x/Ir5ggtPrhniod5PzJRh6bE1FSvkqzCpRhcKC.:16781:0:99999:7:::
[root@yph7 ~]# passwd -u oracle2
Unlocking password for user oracle2.
passwd: Success
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:$6$UNmW9Hyl$TLLieo9TNV5UTTKnu4itP3gZvax.tz66uPw/BjBg6GzpXr2x/Ir5ggtPrhniod5PzJRh6bE1FSvkqzCpRhcKC.:16781:0:99999:7:::
-d:–delete清除用戶密碼
[root@yph7 ~]# passwd -d oracle2
Removing password for user oracle2.
passwd: Success
[root@yph7 ~]# tail -1 /etc/shadow
oracle2::16781:0:99999:7:::
此時oracle2不用輸入密碼就能登錄
[flimmer@yph7 ~]$ su – oracle2
[oracle2@yph7 ~]$
-e –expire:使期滿,必須修改密碼才能登錄
[root@yph7 ~]# passwd -e oracle2
Expiring password for user oracle2.
passwd: Success
然后該用戶就無法登錄了,只有先修改密碼
[oracle2@yph7 ~]$ su – oracle2
密碼:
您需要立即更改密碼(root 強制)
為 oracle2 更改STRESS 密碼。
(當前)UNIX 密碼:
-i,–inactive DAYS:非活動期限,不改密碼不能登錄,超期限就鎖定
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:$6$Odji/iFz$OfTrucTm……..rfJ.:16781:0:99999:7:::
[root@yph7 ~]# passwd -i 10 oracle2
Adjusting aging data for user oracle2.
passwd: Success
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:$6$Odji/iFz$OfTrucTm……..rfJ.:16781:0:99999:7:10::
-n,–minimum DAYS,最小使用期限
-x,–maximum DAYS最大使用期限
[root@yph7 ~]# passwd -n 3 -x 30 oracle2
Adjusting aging data for user oracle2.
passwd: Success
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:$6$Odji/iFz$OfTrucTm……..rfJ.:16781:3:30:7:10::
-w,–warning DAYS,提前多少天警告,警告期限
[root@yph7 ~]# passwd -w 5 oracle2
Adjusting aging data for user oracle2.
passwd: Success
[root@yph7 ~]# tail -1 /etc/shadow
oracle2:$6$Odji/iFz$OfTrucTm……..rfJ.:16781:9:30:5:10::
–stdin
echo "string" | passwd –stdin breeze 只輸入一次就能修改密碼成 mageedu
[root@yph7 ~]# echo "mageedu" | passwd –stdin oracle2 &> /dev/null ;echo $?
0
[root@yph7 ~]#
-S,–state:This will output a short information about thestatus of the password for a given account
可用來代替/etc/shadow查看密碼狀態
[root@yph7 tmp]# passwd -S redhat
redhat LK 2015-12-13 0 99999 7 9 (Password locked.)
[root@yph7 tmp]# tail -1 /etc/shadow
redhat:!!:16782:0:99999:7:9::
[root@yph7 tmp]# echo "redhat" | passwd –stdinredhat
Changing password for user redhat.
passwd: all authentication tokens updated successfully.
[root@yph7 tmp]# passwd -S redhat
redhat PS 2015-12-13 0 99999 7 9 (Password set, SHA512 crypt.)
[root@yph7 tmp]# tail -1 /etc/shadow
redhat:$6$kN……x1:16782:0:99999:7:9::
chage:– change userpassword expiry information更改密碼和過期信息 16778:0:99999:7:::
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ…………..E06d.Ape0:16781:0:99999:7:::
-d,–lastday:指定密碼上一次最后修改的日期,可用date和days表示,結果為距離1970-01-01多少天
[root@yph7 ~]# chage -d 1998-12-12 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ………..E06d.Ape0:10572:0:99999:7:::
[root@yph7 ~]# chage -d 15000 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ………..E06d.Ape0:15000:0:99999:7:::
-m,–mindaysa:密碼至少使用多久,0表示無限制
[root@yph7 ~]# chage -m 5 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ…………E06d.Ape0:15000:5:99999:7:::
-M,–maxdays:密碼最多使用多久
[root@yph7 ~]# chage -M 30 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ…………E06d.Ape0:15000:5:30:7:::
-W,–warning:密碼過期前多少天開始警告
[root@yph7 ~]# chage -W 9 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ………….E06d.Ape0:15000:5:30:9:::
-E,–expiredate:密碼有效期到什么時候,可以是date和days,0立即過期。-1禁用此功能,永不過期
倒數第二個屬性
[root@yph7 ~]# chage -E 2050-12-12 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ…………..E06d.Ape0:15000:5:30:9::29565:
[root@yph7 ~]# chage -E 88888 oracle1
[root@yph7 ~]# tail -1 /etc/shadow
oracle1:$6$Szaon4OI$weQ…………..E06d.Ape0:15000:5:30:9::88888:
groupadd: – create a new group
[root@yph7 ~]# groupadd stupid
[root@yph7 ~]# tail -1 /etc/group
stupid:x:2053:
-g GID:指定GID,默認上一個組加1
[root@yph7 tmp]# groupadd -g 2999 foolbird
[root@yph7 tmp]# tail -1 /etc/group
foolbird:x:2999:
-r:創建系統組
[root@yph7 tmp]# groupadd -r deepin
[root@yph7 tmp]# tail -1 /etc/group
deepin:x:991: –>組id為991 系統組id在1-999
groupdel:– delete a group刪除組
[root@yph7 tmp]# groupdel awkuid
[root@yph7 tmp]# tail -1 /etc/group
foolbird:x:2999:
groupmod: – modify a groupdefinition on the system
-g GID:修改GID
[root@yph7 tmp]# groupmod -g 3333 foolbird
[root@yph7 tmp]# tail -1 /etc/group
foolbird:x:3333:
-n new_name:修改組名
[root@yph7 tmp]# groupmod -n awkuid foolbird
[root@yph7 tmp]# tail -1 /etc/group
awkuid:x:3333:
gpasswd: administer /etc/group and /etc/gshadow
給組加密碼
[root@yph7 ~]# gpasswd apache
Changing the password for group apache
New Password:
-a,–addUSERNAME:向組中添加用戶
[root@yph7 ~]# id flimmer
uid=1006(flimmer) gid=1006(flimmer) groups=1006(flimmer)
[root@yph7 ~]# gpasswd -a flimmer apache
Adding user flimmer to group apache
[root@yph7 ~]# id flimmer
uid=1006(flimmer) gid=1006(flimmer)groups=1006(flimmer),2011(apache)
[root@yph7 ~]# tail -1 /etc/group
stupid:x:2053:
[root@yph7 ~]# gpasswd -a flimmer stupid
正在將用戶“flimmer”加入到“stupid”組中
[root@yph7 ~]# tail -1 /etc/group
stupid:x:2053:flimmer
-d,–deleteUSERNAME:從組中一出移除用戶
[root@yph7 tmp]# gpasswd -d flimmer stupid
Removing user flimmer from group stupid
[root@yph7 tmp]# tail -1 /etc/group
stupid:x:2053:
[root@yph7 ~]# gpasswd -d flimmer apache
Removing user flimmer from group apache
[root@yph7 ~]# id flimmer
uid=1006(flimmer) gid=1006(flimmer) groups=1006(flimmer)
[root@yph7 ~]#
newgrp [-] GROUP:– log in to a new group臨時切換基本組,id查看,exit退回原來基本組,因為創建文件權限屬于基本組的
-:會模擬用戶重新登錄以實現重新初始化其工作環境
切換到不同的基本組,創建的文件的屬主是不同的,
基本組不是誰都能進的,所以加密碼
[breeze@yph7 ~]$ id -ng
breeze
[breeze@yph7 ~]$ ll
總用量 0
[breeze@yph7 ~]$ touch text;ll
總用量 0
-rw-rw-r–. 1 breeze breeze 0 12月 13 00:33 text
[breeze@yph7 ~]$
[breeze@yph7 ~]$ newgrp apache
密碼:
[breeze@yph7 ~]$ id -ng
apache
[breeze@yph7 ~]$ touch txt;ll
總用量 0
-rw-rw-r–. 1 breeze breeze 0 12月 13 00:33 text
-rw-r–r–. 1 breeze apache 0 12月 13 00:34 txt
[breeze@yph7 ~]$ exit
exit
[breeze@yph7 ~]$ id -ng
breeze
但用id和id breeze查看到的基本組是不同的
[breeze@yph7 ~]$ id
uid=1004(breeze) gid=2011(apache) 組=1004(breeze),2011(apache) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[breeze@yph7 ~]$ id breeze
uid=1004(breeze) gid=1004(breeze) 組=1004(breeze)
id: – print real and effective user and group IDs顯示用戶真實,有效ID
[root@yph7 ~]# id hadoop
uid=2051(hadoop) gid=1004(breeze)groups=1004(breeze),1005(flivfox),1006(flimmer)
-u,–user:僅顯示有效UID
[root@yph7 ~]# id -u hadoop
2051
-g,–group:基本組ID
[root@yph7 ~]# id -g hadoop
1004
-G,–groups:所屬:所有組ID
[hadoop@yph7 ~]$ id -G
1004 1005 1006
-n,–name:顯示組名而非ID
[hadoop@yph7 ~]$ id -nG hadoop
breeze flivfox flimmer
[hadoop@yph7 ~]$ id -nu
hadoop
[hadoop@yph7 ~]$ id -ng
breeze
[hadoop@yph7 ~]$ id -nG
breeze flivfox flimmer
su: switch user
登陸式切換:會重新讀取目標用戶的配置文件來重新初始化
su – breeze
su -l breeze
非登陸式切換:不會重新讀取目標用戶的配置文件來重新初始化
su breeze 所在目錄可能是上個用戶的家目錄,而不是自己的
[flimmer@yph7 ~]$ su breeze
密碼:
[breeze@yph7 flimmer]$
-c,command:僅以指定用戶的身份執行命令,而不是登陸
su -c "whoami" breeze su -c "ls /tmp" breeze
[root@yph7 ~]# su -c "whoami" breeze
breeze
[root@yph7 ~]#
[root@yph7 ~]# su -c "touch /home/breeze/{text,txt};ls -l/home/breeze" breeze
total 0
-rw-r–r–. 1 breeze breeze 0 Dec 13 00:52 text
-rw-r–r–. 1 breeze breeze 0 Dec 13 00:52 txt
管理員切換普通用戶不用密碼
幾個其他命令:chsh,chfn,finger,
finger breeze chsh 了解就行
[root@yph7 ~]# chsh mysql5 更改shell
Changing shell for mysql5.
New shell [/bin/bash]: /bin/tcsh
Shell changed.
[root@yph7 ~]# chfn hadoop 改寫注釋信息
Changing finger information for hadoop.
名稱 [hadoop]: hadoop
辦公 [fuck]: whitewall
辦公電話 [10086]: 10086
住宅電話 [110]: 110
Finger information changed.
[root@yph7 ~]# cat /etc/passwd
………………..
hadoop:x:2051:1004:hadoop,whitewall,10086,110:/home/hadoop:/bin/bash
………………..
權限管理:
進程安全上下文:
進程文件訪問權限應用模型:
進程的屬主與文件屬主是否相同,如果相同,則應用屬主權限
否則,檢查文件的屬主是否屬于文件的屬組,如果是,則應用屬主權限
否則,應用other權限
文件:
r:可獲取文件數據
w:可修改文件數據
x:可將此文件運行為進程
目錄:
r:可使用ls獲取文件列表
w:可修改此目錄下文件列表,創建、刪除文件
x:可cd至此目錄中,可以ls -l獲取文件詳細信息
w不能隨便給,r,x一般都給
— 000 0; –x 001 1; -w- 010 2; r– 100 4
常用:
rw-rw-r– 664
rwxrwxr-x 775
rwxr-x— 750
rwxr-xr-x 755
三類用戶:
u:屬主
g:屬組
o:其它用戶
a: 所有用戶,包含u,g和o
chmod: – change file mode bits
(1)mode表示法:便于操作所有權限位rwx
賦值表示法:u g o a
ug=r,o=
[root@yph7 tmp]# ll -d /tmp/gentoo
d———. 2 flimmer breeze 27 Dec 13 18:31 /tmp/gentoo
[root@yph7 tmp]# chmod ug=rx,o= /tmp/gshadow
[root@yph7 tmp]# ll -d /tmp/gshadow
-r-xr-x—. 1 root root 1033 Dec 14 00:29 /tmp/gshadow
授權表示法:便于操作某一位權限
ug+rx,o-
[root@yph7 tmp]# chmod u-x,o+rx /tmp/gshadow
[root@yph7 tmp]# ll -d /tmp/gshadow
-r–r-xr-x. 1 root root 1033 Dec 14 00:29 /tmp/gshadow
(2)八進制表示法:
chmod 775 /etc/text
–reference改成與某文件一樣
chmod –reference=/var/log/message /etc/text
[root@yph7 ~]# ll /tmp
-rw-r–r–. 1 breeze breeze 0 Dec 13 18:15 txt
-rwxrwxrwx. 1 root root 0 Dec 13 03:08yum.1
[root@yph7 ~]# chmod –reference=/tmp/txt /tmp/yum.1
[root@yph7 ~]# ll /tmp
-rw-r–r–. 1 breeze breeze 0 Dec 13 18:15 txt
-rwxrwxrwx. 1 root root 0 Dec 13 03:08yum.1
-R,–recursive:遞歸修改(一般只用+、–法修改)
chmod -R g+r /tmp/sysconfig
[root@yph7 ~]# ll /tmp
drwxrwxrwx. 2 root root 6 Dec 13 17:16gentoo
drwxrwxrwx. 2 root root 6 Dec 12 20:06 ta
[root@yph7 ~]# ll -d /tmp
drwxrwxrwx. 10 root root 4096 Dec 13 18:15 /tmp
[root@yph7 ~]# chmod -R go-w /tmp
[root@yph7 ~]# ll -d /tmp
drwxr-xr-x. 10 root root 4096 Dec 13 18:15 /tmp
[root@yph7 ~]# ll /tmp
drwxr-xr-x. 2 root root 6 Dec 13 17:16gentoo
drwxr-xr-x. 2 root root 6 Dec 12 20:06 ta
chown: – change file owner and group
修改文件的屬主
drwxr-xr-x. 8 root root 111 Dec 13 18:32 /tmp
[root@yph7 tmp]# chown breeze /tmp;ll -d /tmp
drwxr-xr-x. 8 breeze root 111 Dec 13 18:32 /tmp
修改文件屬主和組,冒號也可用
[root@yph7 tmp]# chown flimmer.hadoop /tmp
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 flimmer hadoop 111 Dec 13 18:32 /tmp
修文件改的屬組
[root@yph7 tmp]# chown .stupid /tmp
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 flimmer stupid 111 Dec 13 18:32 /tmp
-R,–recursive:遞歸修改,連帶修改目錄里所有文件
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 flimmer hadoop 111 Dec 13 18:32 /tmp
[root@yph7 tmp]# ll /tmp
drwxr-xr-x. 2 root root 27 Dec 13 18:31 gentoo
-rw-r–r–. 1 breeze breeze 0 Dec 13 18:15 txt
[root@yph7 tmp]# chown -R gentoo:apache /tmp
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 gentoo apache 111 Dec 13 18:32 /tmp
[root@yph7 tmp]# ll -R /tmp
/tmp:
total 0
drwxr-xr-x. 2 gentoo apache 27 Dec 13 18:31 gentoo
-rw-r–r–. 1 gentoo apache 0 Dec 13 18:15 txt
/tmp/gentoo:
total 0
-rw-r–r–. 1 gentoo apache 0 Dec 13 18:31 text
-rw-r–r–. 1 gentoo apache 0 Dec 13 18:31 yum
–reference:指定與某文件相同的相關屬性
[root@yph7 tmp]# chown -R –reference=/home/flimmer /tmp
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 flimmer flimmer 111 Dec 13 18:32 /tmp
[root@yph7 tmp]# ll /tmp
total 0
drwxr-xr-x. 2 flimmer flimmer 27 Dec 13 18:31 gentoo
-rw-r–r–. 1 flimmer flimmer 0 Dec 13 18:15 txt
chgrp: – change group ownership修改組
[root@yph7 tmp]# chgrp oracle1 /tmp
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 flimmer oracle1 111 Dec 13 18:32 /tmp
-R;–recursive:遞歸修改,連帶修改里面所有的目錄和文件
–reference:指定與某文件相同的相關屬性
[root@yph7 tmp]# chgrp -R –reference=/home/breeze /tmp
[root@yph7 tmp]# ll -d /tmp
drwxr-xr-x. 8 flimmer breeze 111 Dec 13 18:32 /tmp
[root@yph7 tmp]# ll /tmp
total 0
drwxr-xr-x. 2 flimmer breeze 27 Dec 13 18:31 gentoo
-rw-r–r–. 1 flimmer breeze 0 Dec 13 18:15 txt
注意:普通用戶僅可修改屬主為自己的文件的權限
[breeze@yph7 ~]$ ll
-rw-rw-r–. 1 breeze breeze 0 12月 13 06:18 text
[breeze@yph7 ~]$ chmod 777 text;ll
總用量 0
-rwxrwxrwx. 1 breeze breeze 0 12月 13 06:18 text
思考:用戶對目錄有寫權限,但對目錄下的文件沒有寫權限時,能否修改此文件內容?能否刪除此文件?
模擬之;
[root@yph7 tmp]# ll -d /tmp
drwxrwxrwt. 9 root root 4096 Dec 13 06:32 /tmp
[root@yph7 tmp]# chown root:root /tmp/yum.1
[root@yph7 tmp]# ll tmp/yum.1
-rwxr-xr-x. 1 root root 0 Dec 13 03:08 /tmp/yum.1
切換到breeze
[breeze@yph7 tmp]$ head -2 /etc/shells | tee /tmp/yum.1
tee: /tmp/yum.1: 權限不夠
/bin/sh
/bin/bash
[breeze@yph7 tmp]$ rm -rf /tmp/yum.1
rm: 無法刪除"/tmp/yum.1":不允許的操作
這種情況下正常是可以刪除文件但不能修改文件的。但上面演示好像不順利,原因如下:
用root設置下權限777就好了后來發現上面的的/tmp權限為t,不是x,這是特殊權限,用戶只能刪除自己的文件,而不能刪除其他人的
[root@yph7 tmp]# chmod 777 /tmp
[breeze@yph7 tmp]$ ll -d /tmp
drwxrwxrwx. 9 root root 4096 12月 13 07:00 /tmp
[breeze@yph7 tmp]$ ll /tmp/yum.2
———-. 1 root root 19 12月 13 07:00 /tmp/yum.2
[breeze@yph7 tmp]$ rm -rf /tmp/yum.2
[breeze@yph7 tmp]$ ll /tmp/yum.2
ls: 無法訪問/tmp/yum.2:沒有那個文件或目錄
umask:文件權限反向掩碼,遮罩碼
文件:666-umask
目錄:777-umask
注意:之所以文件用666去減,表示文件默認不能擁有執行權限,如果減得的結果中有執行權限,則需要加1
umask: 023
666-023=644 rw–w–wx
777-023=754
對于文件:666:rw-rw-rw- 023:—-w–wx 減后:rw-r–r–:644
umask命令:
umask:查看當前umask
umas kMASK:設置umask
[flimmer@yph7 ~]$ umask
0002
[flimmer@yph7 ~]$ umask 023;umask
0023
注意:此類設定僅對當前shell有效
練習:完成以下任務
1、新建系統組mariadb,新建系統用戶mariadb, 屬于mariadb組,要求其沒有家目錄,且shell為/sbin/nologin;嘗試root切換至用戶,查看其命令提示符;
[root@yph7 tmp]# groupadd -r mariadb
[root@yph7 tmp]# tail -1 /etc/group
mariadb:x:991:
[root@yph7 tmp]# useradd -r -M -g mariadb -s /sbin/nologinmariadb
[root@yph7 tmp]# tail -1 /etc/passwd
mariadb:x:994:991::/home/mariadb:/sbin/nologin
[root@yph7 tmp]# id mariadb
uid=994(mariadb) gid=991(mariadb) groups=991(mariadb)
[root@yph7 tmp]# ls /home
bree fedora flivfox hadoop mageedu mysql10 mysql3 mysql6 mysqle slackware
breeze flimmer gentoo magebird mydql4 mysql2 mysql5 mysql8 oracle1
[root@yph7 tmp]# su – mariadb
su: warning: cannot change directory to /home/mariadb: No suchfile or directory
This account is currently not available.
如果組事先存在,添加與組同名的用戶默認添加不成功的
刪除用戶默認刪除基本組
2、新建GID為5000的組mageedu,新建用戶gentoo,要求其家目錄為/users/gentoo,密碼同用戶名;
[root@yph7 tmp]# groupadd -g 5000 mageedu
groupadd: GID '5000' already exists
[root@yph7 tmp]# cat /etc/group
…….
distro:x:5000:
……..
[root@yph7 tmp]# groupmod -g 4006 distro –>修改組id
[root@yph7 tmp]# groupadd -g 5000 mageedu
[root@yph7 tmp]# tail -1 /etc/group
mageedu:x:5000:
[root@yph7 tmp]# mkdir /users
[root@yph7 users]# useradd -d /users/gentoo gentoo
[root@yph7 users]# tail -1 /etc/passwd
gentoo:x:4006:5003::/users/gentoo:/bin/bash
[root@yph7 users]# echo "gentoo" | passwd –stdingentoo
Changing password for user gentoo.
3、新建用戶fedora,其家目錄為/users/fedora,密碼同用戶名;
[root@yph7 users]# useradd -d /users/fedora fedora
Creating mailbox file: File exists
[root@yph7 users]# tail -1 /etc/passwd
fedora:x:4007:4007::/users/fedora:/bin/bash
[root@yph7 users]# echo "fedora" | passwd –stdinfedora
Changing password for user fedora.
passwd: all authentication tokens updated successfully.
4、新建用戶www, 其家目錄為/users/www;刪除www用戶,但保留其家目錄;
[root@yph7 users]# useradd -d /users/www www
[root@yph7 users]# tail -1 /etc/passwd
www:x:4008:4008::/users/www:/bin/bash
[root@yph7 users]# userdel www;cd /users/www;pwd
/users/www
[root@yph7 www]# id www
id: www: no such user
5、為用戶gentoo和fedora新增附加組mageedu;
[root@yph7 www]# id -nG gentoo;id -nG fedora
gentoo
fedora
[root@yph7 www]# usermod -aG mageedu gentoo
[root@yph7 www]# usermod -aG mageedu fedora
[root@yph7 www]# id -nG gentoo;id -nG fedora
gentoo mageedu
fedora mageedu
6、復制目錄/var/log至/tmp/目錄,修改/tmp/log及其內部的所有文件的屬組為mageedu,并讓屬組對目錄本身擁有寫權限;
[root@yph7 www]# cp -r /var/log /tmp/
[root@yph7 tmp]# chown -R .mageedu /tmp/log
[root@yph7 tmp]# chmod g+w /tmp/log
[root@yph7 tmp]# ll -d /tmp/log
drwxrwxr-x. 14 root mageedu 4096 Dec 13 22:08 /tmp/log
install命令:copyfiles and set attributes復制文件并設置屬性(不能復制目錄)
-m,–mode=MODE:設定目標文件權限,默認755
[root@yph7 tmp]# install -m 632 /tmp/yum.log /tmp/yum ;ll
-rw–wx-w-. 1 root root 0 12月 12 05:08 yum
-rw——-. 1 root root 0 12月 8 19:08 yum.log
-o,–owner=OWNER:設定目標文件屬主
[root@yph7 tmp]# install -o flimmer /tmp/yum.log /tmp/yum.1 ;ll
-rwxr-xr-x. 1 flimmer root 0 12月 12 05:16 yum.1
-g,–group=GROUP:設定目標文件屬組
[root@yph7 tmp]# install -g flimmer /tmp/yum.log /tmp/yum.2;ll
-rwxr-xr-x. 1 root flimmer 0 12月 12 05:19 yum.2
-d,–directory:創建目錄
[root@yph7 tmp]# install -d /tmp/config
mktemp: create atemporary file or directory創建臨時文件或目錄(一段時間后會自動清除)
mktemp [OPTION]… [TEMPLATE]
[root@yph7 ~]# mktemp /tmp/a.XXXXXXXX
/tmp/a.L9fheln9
-d,–dirctory:創建臨時目錄,也要用x
[root@yph7 tmp]# mktemp -d /tmp/XXXXXXXX
/tmp/wf0txj7U
-u,–dry-run:虛擬創建文件,表面創建好了,其實沒有。測試服務器是否能正常運行
[root@yph7 tmp]# mktemp -u /tmp/config.XXXXXX
/tmp/config.DAObQW
[root@yph7 tmp]# ls 結果發現沒有這個文件
通過變量取隨機數
[root@yph7 ~]# myfile=$(basename `mktemp /tmp/XXXXXXXXX )
[root@yph7 ~]# echo "$myfile"
ja9FD8QSf
注意:會將創建的臨時文件名直接返回,可通過命令引用保存起來
原創文章,作者:flivfox,如若轉載,請注明出處:http://www.www58058.com/10119
內容詳實有料,樣式太亂了