马哥教育网络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.178linux.com/24102

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

相关推荐

  • 软链接与硬链接

    软链接 硬链接

    2017-11-18
  • linux 系统基础(三)–用户和组命令使用总结

    1、列出当前系统上所有已经登录的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@node2 ~]# who   root     pts/0        2016-10-…

    Linux干货 2016-10-08
  • N27_第二周作业

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关演示。  A、copy命令        a、 单元复制:cp [OPTION]… [-T] SOURCE DEST 1、  如果dest不存在:则事先创建此文件,并复制源文件的数据流至dest中; [root@localhost /]# ls -l /tmp total 0 [r…

    2017-09-07
  • 第8天:脚本基础,btrf,raid,

    http://note.youdao.com/yws/public/redirect/share?id=61b38adef24ced4dc646a5ef8e68df18&type=false

    Linux干货 2016-08-16
  • 企业实时同步方案—-Sersync介绍

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1433109 Sersync 项目利用 Inotify 和 Rsync 技术实现对服务器数据实时同步的解决方案,其中 Inotify 用于监控 Sersync…

    Linux干货 2016-08-15
  • Linux 6.8系统安装操作过程

      首先按照好vmware 虚拟机,安装过程忽略。       虚拟机新建完毕后,在虚拟机设置框中,选择硬件cd/dvd,右侧勾选使用iso磁盘文件,点击浏览,选择所需镜像文件,点击确定按钮。      然后,单击启动虚拟机   &nbsp…

    2017-05-21

评论列表(1条)

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

    写的很好,排版也很漂亮,在仔细看看ip地址匹配的问题,加油