linux用戶,組及權限管理

 

寫在前面:

本博客詳解命令如下:

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為該組的管理員

組成員:mysql5mysql6兩個用戶以該組為附加組

再次強調一遍:這四個文件的內容代表什么意思,請用"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,加隨機數:即使兩個人密碼一樣,由于加了隨機數,密碼代碼仍幾乎不同

這個隨機數會被系統記住以便用戶登錄時比對碼文

下面演示一些相關的命令:

 

 

useraddcreate 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 group1group2…:附加組,每個組都用逗號隔開,沒有中間的空格,組必須存在

[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:創建用戶gentooUID4001,基本組為gentoo,附加組為distro(GID5000)peguin(GID5001);

[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-ulock,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:指定密碼上一次最后修改的日期,可用datedays表示,結果為距離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:密碼有效期到什么時候,可以是datedays,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:    –>id991 系統組id1-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

 

但用idid 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

 

管理員切換普通用戶不用密碼

幾個其他命令:chshchfn,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,go

 

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

對于文件:666rw-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、新建GID5000的組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、為用戶gentoofedora新增附加組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

(0)
flivfoxflivfox
上一篇 2015-12-19
下一篇 2015-12-19

相關推薦

  • find詳解(Blog 2)

    find與locate特性、find命令

    Linux干貨 2017-11-08
  • 權限管理練習題

    權限管理練習題:     1、當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作?         不能cd到該目錄下,不能ls -l訪問目錄里面文件元數據的信息    &nbsp…

    Linux干貨 2016-08-04
  • Linux正則表達式及文件查找

    1、顯示當前系統上root、fedora或者user1用戶的默認shell. #? ?grep? -E? ?“^(root|fedora|user1)”? ?/etc/passwd | cut -d: -f1,7     2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,…

    2017-10-22
  • shell-語句總結

    shell腳本語法總結 過程式編程語言: 順序執行 選擇執行 循環執行 shell默認是順序執行,如果有判斷或循環語句則執行判斷或循環。 條件判斷 if     單分支         if 判斷條件:then  &nb…

    Linux干貨 2016-08-21
  • OpenSSL

    三個組件: openssl: 多用途的命令行工具; libcrypto: 加密解密庫; libssl:ssl協議的實現; PKI:Public Key Infrastructure CA RA CRL 證書存取庫  建立私有CA: OpenCA openssl  證書申請及簽署步驟: 1、生成申請請求; 2、RA核驗; 3、CA簽署; 4…

    Linux干貨 2015-03-21
  • Linux正則表達式

    正則表達式

    2017-12-24

評論列表(1條)

  • stanley
    stanley 2015-12-19 20:31

    內容詳實有料,樣式太亂了

欧美性久久久久