馬哥教育網絡21期+第三周練習博客

馬哥教育網絡21期+第三周練習博客

一.回顧第二周的學習內容

1,Linux上的文件管理類的命令:
mkdir:創建目錄:
[root@localhost ~]# mkdir /tmp/fstab2222
[root@localhost ~]# ls -l /tmp/
total 64
drwxr-xr-x.  2 root root 4096 Jul 10 19:32 aaa
-rw-r--r--.  1 root root    0 Jul 10 21:19 aaaa
drwxr-xr-x.  3 root root 4096 Jul 10 19:37 ccc
drwxr-xr-x.  2 root root 4096 Jul 10 19:37 ddd
-rw-r--r--.  1 root root    0 Jul 12 09:51 +%F-%H-%M-%S
-rw-r--r--.  1 root root  884 Jul 10 19:24 fstab111
drwxr-xr-x.  2 root root 4096 Jul 12 14:30 fstab2222

- cp [OPTION]... [-T] SOURCE DEST
- cp [OPTION]... SOURCE... DIRECTORY
- cp [OPTION]... -t DIRECTORY SOURCE...
以上注意幾點:
例如:cp src DEST....
src是文本文件:如果DEST不存在,則復制到目標文件中,并將src內容覆蓋至DEST上:

src是文本文件:如果DEST存在,則復制到目標文件中,則將目標文件內容覆蓋:

如果DEST是目錄:在DEST下新建與原文件同名的文件,并將SRC中內容填充至新文件中;

如果SRC是目錄:
    如果DEST不存在:創建目標目錄,復制SRC目錄中所有文件至DEST中;
    如果DEST存在:
        如果DEST是文件:報錯
        如果DEST是目錄:復制到此目錄中
☆★☆★這里的其實已經使用alias命名別名的方法進行了命令別名了:
[root@localhost ~]# alias
alias cp='cp -i'
[root@localhost ~]# cat ~/.bashrc 
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias grep='grep --color'
# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi
此上是對當前用用戶永久生效,如想對全局生效則需要修改/etc/profile.d/*.sh

rmdir:刪除目錄命令
如要刪除含有內容的目錄:建議使用rm -rf強制刪除命令:此條命令慎用!

mv:移動或剪切
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
常用選項:
    -i:交互式
    -f:強制

rm:刪除命令
rm [OPTION]... FILE... 
常用選項:
-i: 交互式
-f: 強制刪除
-r: 遞歸

glob文件通配符:
*:任意長度字符:
?:任意單個字符:
[]:匹配內的任意單個字符:
[^]:匹配內以外的任意字符:
[:space;]:表示空白字符:
[:digit:]:任意數字-->[0-9]:
[:lower:]任意小寫字母:
[:upper:]任意大寫字母;
[:alpha:]任意大小寫字母;
[:alnum:]任意數字或字母;
[:punct:]標點符號;

stat查看數據源文件:
[root@localhost tmp]# stat /etc/
 File: `/etc/'
Size: 12288         Blocks: 24         IO Block: 4096   directory
Device: 802h/2050d  Inode: 1179649     Links: 114
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-07-12 09:54:41.916999187 -0400
Modify: 2016-07-10 20:55:06.585989155 -0400
Change: 2016-07-10 20:55:06.585989155 -0400

二.第三周博客及其作業:

1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。

[root@localhost tmp]# who | cut -d' ' -f1 | sort -u
root
wostop

取出最后登錄到當前系統的用戶的相關信息。

[root@localhost tmp]# w | tail -n1
wostop   pts/4    192.168.1.3      14:45    1:11m  0.01s  0.01s -bash

取出當前系統上被用戶當作其默認shell的最多的那個shell。

[root@localhost ~]# cat /etc/passwd | cut -d':' -f7 |sort| uniq -c | sort -n | tail -n1
 29 /sbin/nologin

將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。

[root@localhost ~]# sort -t':' -k3 -n /etc/passwd | tail -n1 | tr 'a-z' 'A-Z' > /tmp/maxusers.txt

取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。

ifconfig |grep '^[[:space:]]\{1,\}inet' | cut -d':' -f3 | cut -d' ' -f1
☆★☆★此上為如果當前主機有多個地址,包括loopback地址都能抓出來?。。?!☆★☆★

[root@localhost ~]#   ifconfig |grep '^[[:space:]]\{1,\}inet' | head -n1 | cut -d':' -f3 | cut -d' ' -f1
192.168.1.255

列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。

ls /etc/*.conf | tr 'a-z' 'A-Z' >> /tmp/etc.conf1

ls /etc/*.conf | tr 'a-z' 'A-Z' | tee /tmp/etc.conf

顯示/var目錄下一級子目錄或文件的總個數。

[root@localhost ~]# ls -l /var/ |wc -l
22

取出/etc/group文件中第三個字段數值最小的10個組的名字。

[root@localhost ~]# cat /etc/group | sort -t':' -k3 -n | tail -n10 | cut -d':' -f1
abrt
fuse
pulse-access
pulse
rtkit
desktop_user_r
desktop_admin_r
wostop
user1
nfsnobody

將/etc/fstab和/etc/issue文件的內容合并為同一個內容后保存至/tmp/etc.test文件中。

cat /etc/fstab /etc/issue >> /tmp/etc.test
cat /etc/fstab /etc/issue &>> /tmp/etc.test

找出ifconfig命令結果中1-255之間的數值;

[root@localhost ~]# ifconfig | grep '[0-9]\{1,\}[/./][0-9]\{1,\}[/./][0-9]\{1,\}[/./][0-9]\{1,\}'
      inet addr:192.168.1.5  Bcast:192.168.1.255  Mask:255.255.255.0
      inet addr:127.0.0.1  Mask:255.0.0.0

找出ifconfig命令結果中的IP地址;

[root@localhost ~]# ifconfig | grep 'inet addr:[1-9]\{1,\}[/./][0-9]\{1,\}[/./][0-9]\{1,\}[/./][1-9]\{1,\}' 
      inet addr:192.168.1.5  Bcast:192.168.1.255  Mask:255.255.255.0
      inet addr:127.0.0.1  Mask:255.0.0.0

 ifconfig | grep -o 'inet addr:[1-9]\{1,\}[/./][0-9]\{1,\}[/./][0-9]\{1,\}[/./][1-9]\{1,\}'
**inet addr:192.168.1.5**
**inet addr:127.0.0.1**

☆★☆★此處請老師幫忙看一下,我是否匹配對??!

請總結描述用戶和組管理類命令的使用方法并完成以下練習:

用戶和組管理
Linux用戶:USERNAME/UID
    管理員:root,0
    普通用戶:1-65535
    系統用戶:1-499

Linux組:Gropuname/GID
    管理員組:root 0
    普通組:
        系統組:1-499(CentOS6),1-999(CentOS7)
        普通組:500+(CentOS6),1000+(CentOS7)

Linux安全上下文:
    運行中的程序:進程 (process)

    以進程發起者的身份運行:
        root:cat
        tom:cat

進程所能夠訪問的所有資源的權限取決于進程的發起者的身份;

Linux組的類別:
    用戶的基本組(主組):
    此外用戶也可以擁有額外組:


Linux用戶和組相關的配置文件:
    /etc/passwd:用戶及其屬性信息(名稱,UID,基本組ID等等)
    /etc/group:組及其屬性信息:
    /etc/shadow:用戶密碼及其相關屬性:
    /etc/gshadow:組密碼及其相關屬性:在用戶完成基本組切換時使用
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash

[root@localhost ~]# cat /etc/group 
root:x:0:

[root@localhost ~]# cat /etc/shadow
root:$6$FcyUxvmkdOBFwgZe$hiQvqaZUBrya755brzKaSPaFXh0.3oKlsOo2UvcAr8UIZPsZocBda2y10qPADitakgpQYe0jP3DfReWVRl

[root@localhost ~]# cat /etc/gshadow
root:::


/etc/passwd:
name:password:UID:GID:GECOS:directory:shell

用戶名:密碼:UID:GID:GECOS:主目錄:默認shell


/etc/group:
group_name:password:GID:user_list

組名:組密碼:GID:以當前組為附加組的用戶列表(分隔符為逗號)

/etc/shadow
用戶名:加密了的密碼:最近一次更改密碼的日期:密碼的最小使用期限:最大密碼使用期限:密碼警告時間段:密碼禁用期:賬戶過期日期:保留字段

相關命令

**用戶創建:useradd**
useradd [options] LOGIN
-u UID: [UID_MIN, UID_MAX], 定義在/etc/login.defs
-g GID:指明用戶所屬基本組,可為組名,也可以GID;
-c "COMMENT":用戶的注釋信息;
-d /PATH/TO/HOME_DIR: 以指定的路徑為家目錄;
-s SHELL: 指明用戶的默認shell程序,可用列表在/etc/shells文件中;
-G GROUP1[,GROUP2,...[,GROUPN]]]:為用戶指明附加組;組必須事先存在;
-r: 創建系統用戶
CentOS 6: ID<500
CentOS 7: ID<1000
默認值設定:/etc/default/useradd文件中

練習:創建用戶gentoo,附加組為distro和linux,默認shell為/bin/csh,注釋信息為"Gentoo Distribution"; 
useradd gentoo -G distro,linux -s /bin/csh -c "Gentoo Distribution"

**組創建:groupadd**
groupadd [OPTION]... group_name

-g GID: 指明GID號;[GID_MIN, GID_MAX]
-r: 創建系統組;
CentOS 6: ID<500
CentOS 7: ID<1000
查看用戶相關的ID信息:id
    id [OPTION]... [USER]
    -u: UID
    -g: GID
    -G: Groups
    -n: Name    

切換用戶或以其他用戶身份執行命令:su
su [options...] [-] [user [args...]]

**切換用戶的方式:**
su UserName:非登錄式切換,即不會讀取目標用戶的配置文件;
su - UserName:登錄式切換,會讀取目標用戶的配置文件;完全切換;

☆★☆★Note:root su至其他用戶無須密碼;非root用戶切換時需要密碼;☆★☆★

**用戶屬性修改:usermod**
    usermod [OPTION] login
    -u UID: 新UID
    -g GID: 新基本組
    -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項,表示append;
    -s SHELL:新的默認SHELL;
    -c 'COMMENT':新的注釋信息;
    -d HOME: 新的家目錄;原有家目錄中的文件不會同時移動至新的家目錄;若要移動,則同時使用-m選項;
    -l login_name: 新的名字;
    -L: lock指定用戶
    -U: unlock指定用戶
    -e YYYY-MM-DD: 指明用戶賬號過期日期;
    -f INACTIVE: 設定非活動期限;

**給用戶添加密碼:passwd**
passwd [OPTIONS] UserName: 修改指定用戶的密碼,僅root用戶權限
    passwd: 修改自己的密碼;
    常用選項:
        -l: 鎖定指定用戶
        -u: 解鎖指定用戶
        -n mindays: 指定最短使用期限
        -x maxdays:最大使用期限
        -w warndays:提前多少天開始警告
        -i inactivedays:非活動期限;
        --stdin:從標準輸入接收用戶密碼;
        echo "PASSWORD" | passwd --stdin USERNAME
        Note: /dev/null, bit buckets
        /dev/zero, 

**刪除用戶:userdel**
    userdel [OPTION]... login
        -r: 刪除用戶家目錄;

**組屬性修改:groupmod**
    groupmod [OPTION]... group
        -n group_name: 新名字
        -g GID: 新的GID;

**組刪除:groupdel**
    groupdel GROUP


**組密碼:gpasswd**
    gpasswd [OPTION] GROUP
        -a user: 將user添加至指定組中;
        -d user: 刪除用戶user的以當前組為組名的附加組
        -A user1,user2,...: 設置有管理權限的用戶列表

**newgrp命令:臨時切換基本組;**
    如果用戶本不屬于此組,則需要組密碼;

**修改用戶屬性:chage**
    chage [OPTION]... LOGIN
        -d LAST_DAY
        -E, --expiredate EXPIRE_DATE
        -I, --inactive INACTIVE
        -m, --mindays MIN_DAYS
        -M, --maxdays MAX_DAYS
        -W, --warndays WARN_DAYS

請總結描述用戶和組管理類命令的使用方法并完成以下練習:

(1)、創建組distro,其GID為2016;

[root@localhost ~]# groupadd -g 2016 distro
[root@localhost ~]# cat /etc/group | grep "^distro" 
distro:x:2016:

(2)、創建用戶mandriva, 其ID號為1005;基本組為distro;

[root@localhost ~]#useradd -u 1005 -g distro mandriva

[root@localhost ~]# cat /etc/passwd /etc/group | grep "2016"
mandriva:x:1005:2016::/home/mandriva:/bin/bash
distro:x:2016:

#### (3)、創建用戶mageia,其ID號為1100,家目錄為/home/linux; #### [root@localhost ~]# useradd -u 1100 -d /home/linux mageia

[root@localhost ~]# cat /etc/passwd | grep "^mageia"
mageia:x:1100:1100::/home/linux:/bin/bash

(4)、給用戶mageia添加密碼,密碼為mageedu;

[root@localhost ~]# useradd mageia ||echo "mageedu" |  passwd --stdin mageia
useradd: user 'mageia' already exists
Changing password for user mageia.
passwd: all authentication tokens updated successfully.

(5)、刪除mandriva,但保留其家目錄;

[root@localhost ~]# cd /home/
[root@localhost home]# ls
gentoo  linux  lost+found  mandriva  user1  wostop
[root@localhost home]# userdel mandriva
[root@localhost home]# ls
gentoo  linux  lost+found  mandriva  user1  wostop

(6)、創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;

[root@localhost ~]# useradd -u 2002 -g distro -G peguin shackware

root@localhost ~]# cat /etc/passwd /etc/group | grep "shackware"
shackware:x:2002:2016::/home/shackware:/bin/bash
peguin:x:2017:shackware

(7)、修改slackware的默認shell為/bin/tcsh;

[root@localhost ~]# usermod -s /bin/tcsh shackware
[root@localhost ~]# cat /etc/passwd | grep "^shackware"
shackware:x:2002:2016::/home/shackware:/bin/tcsh

(8)、為用戶slackware新增附加組admins;

[root@localhost ~]#  usermod -a -G admins shackware
[root@localhost ~]# id shackware
uid=2002(shackware) gid=2016(distro) groups=2016(distro),2018(admins)

(9)、為slackware添加密碼,且要求密碼最短使用期限為3天,最長為180天,警告為3天;

[root@localhost ~]# echo 'mageedu' | passwd --stdin shackware
Changing password for user shackware.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd -n 3 -x 180 -w 3 shackware
Adjusting aging data for user shackware.
passwd: Success

(10)、添加用戶openstack,其ID號為3003, 基本組為clouds,附加組為peguin和nova;

[root@localhost ~]# useradd -u 3003 -g clouds -G peguin,nova openstack 
[root@localhost ~]# id openstack
uid=3003(openstack) gid=2019(clouds) 組=2019(clouds),2017(peguin),2020(nova)

(11)、添加系統用戶mysql,要求其shell為/sbin/nologin;

[root@localhost ~]# useradd -s /sbin/nologin mysql
[root@localhost ~]# cat /etc/passwd | grep "^mysql"
mysql:x:3004:3004::/home/mysql:/sbin/nologin

(12)、使用echo命令,非交互式為openstack添加密碼。

[root@localhost ~]# echo 'mageedu' | passwd --stdin openstack<--更改用戶 openstack 的密碼 。
Changing password for user openstack.
passwd: all authentication tokens updated successfully.

原創文章,作者:wostop,如若轉載,請注明出處:http://www.www58058.com/24102

(0)
wostopwostop
上一篇 2016-07-16
下一篇 2016-07-16

相關推薦

  • 運維面試題和答案

    1、簡述TCP三次握手四次揮手過程及各過程中客戶端和服務器端的狀態。 #三次握手 客戶端向服務器端發送SYN包,客戶端進入SYN_SEND狀態 服務器端收到客戶端發送的包返回ACK+SYN包,服務器端進入SYN_RECV狀態 客戶端收到服務器端返回的包再發回ACK包,客戶端進入ESTABLISHED狀態,服務器端收到包也進入ESTABLISHED狀態 客戶端…

    Linux干貨 2016-06-10
  • Ansible

    Ansible簡介 ansible是一種基于python語言開發的輕量級自動化運維工具,它可以自動化批量完成主機服務配置管理,軟件部署,執行特定命令等工作 ansible的核心組件有ansible core(核心代碼),host inventory(要管理的主機),core modules(核心模塊),custom modules(用戶可以自定義模塊),pl…

    Linux干貨 2016-11-14
  • 第一周課程練習

    1、描述計算機的組成及其功能。 計算機由硬件、操作系統、軟件三大部分組成。 硬件包括核心CPU(大腦處理中心)、必備電源(心臟動力來源)、硬盤(倉庫)內存(中轉站)、主板(協調)、網卡、聲卡、顯卡、風扇、光驅、顯示器、鼠標、鍵盤、麥克風音箱,閃存、藍牙等。  計算機五大組成部分及功能。   運算器:     …

    Linux干貨 2016-08-15
  • 常用RAID級別介紹

    RAID是什么         磁盤陣列(Redundant Arrays of Independent Disks,RAID),磁盤陣列是將多個價格便宜的磁盤按照一定的組合方式組成具有高容量的磁盤組,按照不同的組合方式可以達到不同的效果,如:可以提升磁盤的存取效率,可提高磁盤的…

    Linux干貨 2016-02-14
  • 幽默:程序員的進化

    高中時期 view plaincopy to clipboardprint? 10 PRINT "HELLO WORLD"   20 END 大學新生 view plaincopy to clipboardprint? …

    Linux干貨 2016-05-17
  • 系統管理之Selinux詳解

    SELinux: SELinux概念SELinux配置啟用SELinux管理文件安全標簽管理端口標簽管理SELinux布爾值開關管理日志查看SELinux幫助 SELinux概述 SELinux: Secure Enhanced Linux, 是美國國家安全局「NSA=The National Se…

    Linux干貨 2016-09-21

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-07-17 20:40

    寫的很好,排版也很漂亮,在仔細看看ip地址匹配的問題,加油

欧美性久久久久