linux学习笔记004

用户管理:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值