linux学习笔记004

    xiaoxiao2021-03-25  74

    用户管理:

    useradd,userdel, usermod, passwd, chsh,chfn, finger, id, chage

     

    /etc/passwd:                              

    用户名:密码:UID:GID:注释:家目录:默认SHELL

     

    /etc/shadow:

    用户名:密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告时间:非活动时间:过期时间:

     

     

    useradd [options]  USERNAME

            -uUID 默认

            -gGID(基本组)可以用组名和ID号

            -GGID,...(附加组)

            -c"COMMENT"

            -d/path/to/directory

            -sSHELL 没合法的shell 不能切换

            -m强制创建家目录  -k复制文件/etc/skel默认有环境配置文件

            -M不给用户创建家目录          -r:添加系统用户

     

    useradd –c “peng ” –d /home/user4 user4

    配置文件 /etc/default/useradd

    inactive密码过期了宽限的时间(-1表示宽限无数天)

    expire(过期期限没指永不过期)

     

    /etc/login.defs默认配置文件掩码是否创建家目录,密码的最短最长,密码加密方式

     

    环境变量:

            PATH

            HISTSIZE

            SHELL当前用户默认shell

           

           

    /etc/shells:指定了当前系统可用的安全shell

     

    userdel:

    userdel [option] USERNAME默认家目录不会被删去

            -r:同时删除用户的家目录

     

    id:查看用户的帐号属性信息

            -u显示uid

            -g显示gid

            -G显示附加组

            -n显示名称

     

    finger: 查看用户帐号信息

    finger USERNAME

     

    修改用户帐号属性:

    usermod

            -uUID

            -gGID

            -a-G GID:不使用-a选项,会覆盖此前的附加组;

            -c注释信息

            -d-m:复制原家目录文件到新家目录

            -sshell

            -l改登陆名

            -L:锁定帐号

            -U:解锁帐号

           

    chsh: 修改用户的默认shell

     

    chfn:修改注释信息

     

    密码管理:

    passwd [USERNAME]

            --stdin从标准输入读取密码

            -l锁定用户

            -u解锁用户

            -d:删除用户密码

     

    pwck:检查用户帐号完整性

    chage

            -d:最近一次的修改时间

            -E:过期时间

            -I:非活动时间

            -m:最短使用期限

            -M:最长使用期限

            -W:警告时间

            -m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。

     

     

    组管理:

     groupadd,groupdel, groupmod, gpasswd   

    /etc/group:

    组名:密码:GID:以此组为其附加组的用户列表

    创建组:groupadd

    groupadd

            -gGID

            -r:添加为系统组

           

    groupmod

            -gGID 修改

            -nGRPNAME 修改

     

    groupdel 删除组

     

    gpasswd:为组设定密码

     

    newgrp GRPNAME <--> exit 登陆到新的基本组属组

           

    用户和组管理练习:

    1、创建一个用户mandriva,其ID号为2002,基本组为distro(组ID为3003),附加组为linux;

    # groupadd -g 3003 distro

    # groupadd linux

    # useradd -u 2002 -g distro -G linuxmandriva

    2、创建一个用户fedora,其全名为FedoraCommunity,默认shell为tcsh;

    # useradd -c "Fedora Community"-s/bin/tcsh fedora

    3、修改mandriva的ID号为4004,基本组为linux,附加组为distro和fedora;

    # usermod -u 4004 -g linux -G distro,fedoramandriva

    4、给fedora加密码,并设定其密码最短使用期限为2天,最长为50天;

    # passwd -n 2 -x 50 fedora

    5、将mandriva的默认shell改为/bin/bash;

    usermod -s /bin/bash mandirva

    6、添加系统用户hbase,且不允许其登录系统;

    # useradd -r -s /sbin/nologin hbase  系统系统系统系统 -r

    权限管理:

    chown,chgrp, chmod, umask

    r:

    w:

    x:

     

    三类用户:

    u: 属主

    g: 属组

    o: 其它用户

     

    chown: 改变文件属主(只有管理员可以使用此命令)

    # chown USERNAME file,...

            -R:修改目录及其内部文件的属主(默认只改变目录本身属主)

            --reference=/path/to/somefilefile,...引用参考把file文件属性跟/path/to/somefile改了属主和属组

     

    chown USERNAME:GRPNAME file,...

    chown USERNAME.GRPNAME file,...

           

    # chgrp GRPNAME file,...

            -R修改目录及其内部文件的属组(默认只改变目录本身属组)

            --reference=/path/to/somefilefile,...

           

     

    chmod: 修改文件的权限

    修改三类用户的权限:

    chmod MODE file,...

            -R

            --reference=/path/to/somefilefile,...

     

    rwxr-x---

     

    修改某类用户或某些类用户权限:

    u,g,o,a

    chmod 用户类别=MODE file,...

     

    修改某类用户的某位或某些位权限:

    u,g,o,a

    chmod 用户类别+|-MODE file,...

     

     

    权限练习:

    1、新建一个没有家目录的用户openstack;

    # useradd -M openstack

    2、复制/etc/skel为/home/openstack;

    # cp -r /etc/skel /home/openstack

    3、改变/home/openstack及其内部文件的属主属组均为openstack;

    # chown -Ropenstack:openstack/home/openstack

    4、/home/openstack及其内部的文件,属组和其它用户没有任何访问权限

    # chmod -R go= /home/openstack

    su - openstack

     

    which passwd 查看命令在哪个目录

     

    手动添加用户hive, 基本组为hive (5000),附加组为mygroup

    openssl passwd -1 -salt'12345678' 创建md5密码

     

    umask:遮罩码

    666-umask

    777-umask

    022#

    002$

    # umask

    # umask 022

     

    文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1;

     

    umask: 023

    文件:666-023=643 X

    目录:777-023=754

     

    bc是计算器

    date +%s

    86400

     

     

    站在用户登录的角度来说,SHELL的类型:

    登录式shell:

            21

            su-l USERNAME

     

    非登录式shell:

            suUSERNAME

            图形终端下打开命令窗口

            自动执行的shell脚本

           

     

    bash的配置文件:

    全局配置

            /etc/profile,/etc/profile.d/*.sh, /etc/bashrc

    个人配置

            ~/.bash_profile,~/.bashrc

           

    profile类的文件:

            设定环境变量

            运行命令或脚本

     

    bashrc类的文件:

            设定本地变量

            定义命令别名

    登录式shell如何读取配置文件?

    /etc/profile -->/etc/profile.d/*.sh--> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

    非登录式shell如何配置文件?

    ~/.bashrc --> /etc/basrc -->/etc/profile.d/*.sh

    bash: 脚本解释器 

     

    chown, chgrp, chmod

            -R

            --reference=

           

    chmod:

    perm: 777, 666

    u,g,o,a =

    u,g,o,a +/-

     

    umask

    管道和重定向:>        <              >>           <<

    运算器、控制器: CPU

    存储器:RAM

    输入设备/输出设备

    程序:指令和数据

    控制器:指令

    运算器:

    存储器:

     

    地址总线:内存寻址

    数据总线:传输数据

    控制总结:控制指令

     

    寄存器:CPU暂时存储器

     

    I/O: 硬盘,

     

    程序

     

    INPUT设备:

     

    OUTPUT设备

     

     

    系统设定

            默认输出设备:标准输出,STDOUT,1

            默认输入设备:标准输入,STDIN, 0

            标准错误输出:STDERR,2

           

    标准输入:键盘

    标准输出和错误输出:显示器

     

    I/O重定向:

     

    Linux:

    >: 覆盖输出

    >>:追加输出

     

    set -C: 禁止对已经存在文件使用覆盖重定向;

            强制覆盖输出,则使用>|

    set +C: 关闭上述功能

     

     

    2>: 重定向错误输出

    2>>: 追加方式

     

     

    &>: 重定向标准输出或错误输出至同一个文件

     

     

    <:输入重定向

    <<:Here Document

     

    管道:前一个命令的输出,作为后一个命令的输入

    命令1 | 命令2 | 命令3 | ...

     

    综合练习:

    1、统计/usr/bin/目录下的文件个数;

    # ls /usr/bin | wc -l

    2、取出当前系统上所有用户的shell,要求,每种shell只显示一次,并且按顺序进行显示;

    # cut -d: -f7 /etc/passwd | sort -u

    3、思考:如何显示/var/log目录下每个文件的内容类型?

    4、取出/etc/inittab文件的第6行;

    # head -6 /etc/inittab | tail -1

    5、取出/etc/passwd文件中倒数第9个用户的用户名和shell,显示到屏幕上并将其保存至/tmp/users文件中;

    # tail -9 /etc/passwd | head -1 | cut-d:-f1,7 | tee /tmp/users tee保存到文件也输出到屏幕

    6、显示/etc目录下所有以pa开头的文件,并统计其个数;

    # ls -d /etc/pa* | wc -l

    7、不使用文本编辑器,将aliascls=clear一行内容添加至当前用户的.bashrc文件中;

    # echo "alias cls=clear">>~/.bashrc

     

    正则

    grep, egrep, fgrep 

     

    grep: 根据模式搜索文本,并将符合模式的文本行显示出来。

    Pattern: 文本字符和正则表达式的元字符组合而成匹配条件

     

    grep [options] PATTERN [FILE...]

            -i

            --color

            -v:显示没有被模式匹配到的行

            -o:只显示被模式匹配到的字符串

     

           

    *: 任意长度的任意字符

    ?: 任意单个字符

    []:

    [^]: 

     

    正则表达式:REGular EXPression, REGEXP

    元字符:

    .: 匹配任意单个字符

    []: 匹配指定范围内的任意单个字符

    [^]:匹配指定范围外的任意单个字符

            字符集合:[:digit:],[:lower:], [:upper:], [:punct:], [:space:], [:alpha:],[:alnum:]

     

    匹配次数(贪婪模式):

    *: 匹配其前面的字符任意次      

            a,b, ab, aab, acb, adb, amnb

            a*b=a出现任意次+b, a?b

            a.*b=a开头b结束中间任意都可以

     

            .*:任意长度的任意字符

    \?:匹配其前面的字符1次或0次

    \{m,n\}:匹配其前面的字符至少m次,至多n次

            \{1,\}

            \{0,3\}

     

    位置锚定:

    ^: 锚定行首,此字符后面的任意内容必须出现在行首

    $: 锚定行尾,此字符前面的任意内容必须出现在行尾

    ^$: 空白行

     

    \<或\b: 锚定词首,其后面的任意字符必须作为单词首部出现

    \>或\b: 锚定词尾,其前面的任意字符必须作为单词的尾部出现

     

    分组:

    \(\)

            \(ab\)*

            后向引用

            \1:引用第一个左括号以及与之对应的右括号所包括的所有内容

            \2:

            \3:

           

    He love his lover.

    She like her liker.

    He like his lover.

    grep '\(l..e\).*\1' test3.txt

     

    l..e

    正则匹配练习练习:

    1、显示/proc/meminfo文件中以不区分大小的s开头的行;

    grep -i '^s' /proc/meminfo

    grep '^[sS]' /proc/meminfo

    2、显示/etc/passwd中以nologin结尾的行;

    grep 'nologin$' /etc/passwd

     

    取出默认shell为/sbin/nologin的用户列表

    grep "nologin$' /etc/passwd | cut-d:-f1

     

    取出默认shell为bash,且其用户ID号最小的用户的用户名

    grep 'bash$' /etc/passwd | sort -n -t: -k3|head -1 | cut -d: -f1

     

    3、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;

    grep"^#[[:space:]]\{1,\}[^[:space:]]"/etc/inittab

     

    4、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;

    grep ':[0-9]:' /etc/inittab

     

    5、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;

    grep '^[[:space:]]\{1,\}'/boot/grub/grub.conf

     

    6、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;

    grep '^\([0-9]\).*\1$' /etc/inittab

     

    正则练习2:

    1、找出某文件中的,1位数,或2位数;

    grep '[0-9]\{1,2\}' /proc/cpuinfo

    grep --color '\<[0-9]\{1,2\}\>'/proc/cpuinfo

     

    2、找出ifconfig命令结果中的1-255之间的整数;

     

     

    3、查找当前系统上名字为student(必须出现在行首)的用户的帐号的相关信息, 文件为/etc/passwd

    grep '^student\>' /etc/passwd | cut -d:-f3

    id -u student

     

    student1

    student2

     

    练习:分析/etc/inittab文件中如下文本中前两行的特征(每一行中出现在数字必须相同),请写出可以精确找到类似两行的模式:

    l1:1:wait:/etc/rc.d/rc 1

    l3:3:wait:/etc/rc.d/rc 3

     

    grep '^l\([0-9]\):\1.*\1$' /etc/inittab

    转载请注明原文地址: https://ju.6miu.com/read-40112.html

    最新回复(0)