匹配模式:元字符
文件名通配符
*匹配任意长度的任意字符
[[email protected] ~]# ls /root/D*
/root/Desktop /root/Documents /root/Downloads
?匹配单个任意字符
[[email protected] ~]# ls /root/a?b
/root/akb /root/alb
[]匹配自带范围内的任意单个字符[1-9] [a-z] [a-z0-9]a-z,0-9中单个字符
[[email protected] ~]# ls /root/a[a-z]b
/root/akb /root/alb
[[email protected] ~]# ls /root/a[1-9]b
/root/a1b /root/a3b
pa[0-9][0-9]
数字:200-290=2[1-9][1-9]
[[:upper:]] :所有大写字母
[[:lower:]] :所有小写字母
[[:alpha:]] :所有字母
[[:digit:]] :所有数字
[[:alnum:]] :所有的字母和数字
[[space]] :所有空白字符 touch /root/a\ b 文件a空格b
[[:punct:]] :所有标点符号
\转义字符
[^] :匹配范围外的任意单个字符
[^[:upper:]]
[^0-9]
查找以m,n,r,p开头,以.conf文件结尾的文件
ls [m-nr-p]*.conf
IO重定向及管理
可用于输入的设备,文件
键盘,文件系统常规文件,网卡
可用于输出的设备,文件
键盘,文件,网卡
程序的数据流有三种
输入的数据流:<------ 标准输出(stdin) 0 键盘
输出的数据流 -----> 标准输出(stdou)1 显示器
错误输出流 -----> 错误输出(stderr) 2 显示器
fd 文件描述符
标准输入:0
标准输出:1
错误输出:2
io重定向
输出重定向 > 文件或者设备 ,重定向写数据时要非常注意 echo > /dev/sdb1
[[email protected] ~]# cat /etc/issue > /dev/tty1 重定向至终端
> 覆盖输出重定向
>> 追加重定向,IO流将输入到文件或设备后追加内容。
/dev/null 数据黑洞,将输出数据重定向至/dev/null ,设备/dev/null则会将它丢弃
cat /etc/issue >| /tmp/a.txt 强制覆盖输出
错误输出流重定向 2> ,2>>
合并正常输出流和错误输出流 &> ,&>>
1 ls +dafsa &> /root/err.log
2 ls +safa > /root/err.log 2>&1 这种不能使用:2>>&1
3 ls + asdfa 2> err.log 1> err.log
输入重定向
cat < /etc/issue
tr命令 字符替换
localhost ~]# tr [a-z] [A-Z] < /etc/issue
CENTOS RELEASE 6.8 (FINAL)
KERNEL \R ON AN \M
WELCOME XIONG LINUX......
-d 删除字符 tr -d ‘xiong’ < /etc/issue
<<
[[email protected] ~]# cat << EOF
> xiong
> xiong
> EOF
xiong
xiong
[[email protected] ~]# cat > /tmp/cat.out << EOF
> xiong
> xiong
> EOF
[[email protected] ~]# cat /tmp/cat.out
xiong
xiong
[[email protected] ~]#
管道(|):将前一个命令的输出流当后一个命令的输入流
tee 将输出流数据保存,并将流副本交给下个管道命令
[[email protected] ~]# cat /etc/issue | tee /root/issue | tr ‘xiong‘ ‘jiangshuang‘
CentOS release 6.8 (Final)
Kernel \r an an \m
welcame jiang linuj......
[[email protected] ~]# cat /root/issue
CentOS release 6.8 (Final)
Kernel \r on an \m
welcome xiong linux......
权限管理
用户,组,权限管理
passwd命令对用户进行密码设置
用户登录系统时,需要对用户进行识别,这个过程就是认证的过程。
用户标识,密码 authertication 认证
autherrization 授权(chmod,chown)
监督权限使用,审计audition 3a
组:用户组,用户容器,将几个用户加入容器,并将文件权限授权给组,使用户
组内的用户能对授权文件进行操作。组也可以角色。
用户类别:有管理用户,普通用户(系统用户,登录用户)
用户标识: userid用户id uid 组id 是个二进制数字:0-65535
管理员:0
普通用户:1-65535
系统用户:1-499个 centos5,6 1-999个 centos7中
登录用户:500-6000个centos5,6 1000-6000个centos7
名称解析,
username<--->uid 根据名称解析库进行解析(/etc/passwd)
组类别1:
管理员组
普通用户组(系统组,登录组)
组标识: groupid ,gid
管理员组:0
系统组:1-499个,centos5,6, 1-999个,centos7
普通用户组
500-6000个,centos5,6 1000-6000个centos7
名称解析 :将groupname<----->gid ,/etc/group
组类别2
用户的主组
用户的附加组
组类别3
私有组:组名同用户,且只包含一个用户
公共组:组内包含了多个用户:
认证信息
通过对比事先存储的,与登录时提供的信息是否一致
password:
/etc/shadow用户密码
/etc/gshadow组的密码
[[email protected] ~]# cat -n /etc/passwd /etc/group /etc/shadow /etc/gshadow | grep xiong
36xiong:x:501:501::/home/xiong:/bin/bash
98xiong:x:501:
134xiong:$6$zbywqADi$mzSgwpfNxbCjj10deJrcZ9BnA96C9nSWtk7CjjibSKYTmM/hMSZtIdnlP7V60ys8R0rPxs1FNrbaPfEfrc1mt1:17010:0:99999:7:::
196xiong:!::
密码使用策略:
1.使用随机密码
2. 最短长度不要低于8位
3.大写字母,小写字母,数字,标点符号至少3类
4.定期更换密码
加密算法
对称加密,加密和解密使用同一个密码
非对称加密:加密和解密使用的一对密钥,公钥与私钥
单向加密:只能加密,不能解密,提取数据的特征码
定长输出,有雪崩效应
算法:md5
sha
sha224
sha256
sha384
sha512 $6$
在计算之时加上salt,添加随机数:
mageedu12345678:加密字串
mageedu12345678:生成加密子串
/etc/passwd 用户的信息库
/etc/passwd
[[email protected] ~]# tail /etc/passwd | grep xiong
xiong:x:1001:1001:注释信息(useradd -c “”可以创建):/home/xiong:/bin/bash
xiong: 用户名
x:占位符
uid:用户的uid
gid:用户所属的主组的id号
gecos:注释信息
directory:用户的家目录
shell:用户默认的shell
/etc/shadow
用户名:加密的密码:最近一次修改密码的时间:最短使用期限,最长使用期限,警告期段,有效期限:保留字段
用户名:
[[email protected] ~]# cat /etc/shadow |grep xiong
xiong:$6$iWlJ.Osu$6Ma.e092soQLmIPWzTsS8YSbYwQ9BUa4uAK9FPqiPmAFeYgNGxw7.HwrBorAsk12JCYBrW9FRX.pBG97k4lup0:17009:0:99999:7:::
$分隔
$6$ 6表示用sha512加密
$iWlJ.Osu$随机数
密码6Ma.e092soQLmIPWzTsS8YSbYwQ9BUa4uAK9FPqiPmAFeYgNGxw7.HwrBorAsk12JCYBrW9FRX.pBG97k4lup0
1700最近一次更改密码的天数,从1970年到今天
/etc/group
[[email protected] ~]# cat /etc/group | grep xiong
xiong:x:1001:
xiong:组名 x密码占位符 gid组id
user_list:该组的用户组成员,以次组为附加组的用户的用户列表
相关命令:useradd,userdel,usermod,passwd,groupadd,groupdel,groupmod,gpasswd
linux 用户与组管理
groupadd,如果不指定的话,默认为上一个组id加1
-g --gid 指定用户组的组id
[[email protected] ~]# groupadd -g 222 mygroup1
[[email protected] ~]# tail -n 2 /etc/group
mygrp:x:1002:
mygroup1:x:222:
有些进程随开机启动的,这些进程就叫做后天进程。
任何对文件的访问,都不是人在访问,都是人用ls命令启动的进程去访问文件。
进程访问资源是代表某个用户去访问资源。
-r创建系统组 cat /etc/group
:安全上下文模型:进程以其发起者的身份运行
系统组:
进程访问的文件权限,取决于发起者的权限
为了让那些后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,
这个用户从来不用等了系统:仅仅是用来让其他进程以他身份来运行,从而获取普通权限的。
[[email protected] ~]# groupadd -r -g 306 marriadb
[[email protected] ~]# tail -2 /etc/group
testid:x:2000:
marriadb:x:306:
groupmod修改组属性
-n 修改组名
[[email protected] ~]# groupmod -n xiongdb(新名字) marriadb(旧名字)
-g 修改组id
[[email protected] ~]# groupmod -g 399 xiongdb
groupdel 删除组
[[email protected] ~]# groupdel testid
useradd 创建用户
useradd docker
-u 指定用户的uid
useradd -u 3000 docker
-g 指定基本组id ,此组必须实现存在
openstack组
useradd -g openstack xiong
-c添加注释信息
useradd -c “test” user05
-G 指明用户所属的附加组,多个组之间用分号分隔 ,组必须事先存在
组 openstack,doctor,user05
useradd -G openstack,doctor,user05 xiaoxiong
[[email protected] ~]# tail -4 /etc/group
doctor:x:1045:xiaoxiong
openstack:x:3000:xiaoxiong
user05:x:3003:xiaoxiong
xiaoxiong:x:3004:
-d 指定的路径为用户的家目录,通过复制/etc/skel此目录并重命令实现的:
指定的家目录路径如果事先存在,则不会为用户复制环境配置文件
[[email protected] ~]# useradd -d /tmp/user09 user09
[[email protected] ~]# ls /tmp/
user09
指定目录时,最好目录不存在
-s 指定用户的默认shell文件,可用的所有shell列表为/etc/shells文件
[[email protected] mytest]# useradd -s /bin/csh kestone
[[email protected] mytest]# tail -1 /etc/passwd
kestone:x:3008:3008::/home/kestone:/bin/csh
-r 创建系统用 centos7中创建的,1-999为系统用户
[[email protected] mytest]# useradd -r xiong01
[[email protected] mytest]# tail -1 /etc/passwd
xiong01:x:991:398::/home/xiong01:/bin/bash
-m 强制为用户指定目录,并复/etc/skel环境等配置文件
-M 不创建主目录
[[email protected] mytest]# tail -1 /etc/passwd
xiong03:x:3009:3009::/home/xiong03:/bin/bash
[[email protected] mytest]# ls /home/ 未创建目录xiong03
doctor kestone mageedu openstack user02 user03 user05 xiaoxiong xiong
-f 非活动期限,指用户到期后,登录系统,修改密码就行,值为-1
-D 显示用户创建时,用到的创建用户信息。
[[email protected] mytest]# useradd -D
GROUP=100 私有组
HOME=/home 创建家目录位置
INACTIVE=-1 非活动期限禁用
EXPIRE= 永不过期
SHELL=/bin/bash 默认shell
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes 是否创建邮件队列,在/var/spool/mail创建邮件地址
[[email protected] mytest]# useradd -D -s /bin/csh 修改的文件是 /etc/default/useradd
[[email protected] mytest]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/csh 修改用户创建时shell,重启不会还原
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
/etc/login.defs 创建用户时一些配置文件
usermod 修改用户属性
-u 修改用户为此处的新id号
-g 修改用户所属的基本组
usermod -g openstack user09 修改用户所属的附加组,原来的附加组会被覆盖,如果想不被覆盖
则与-a配合使用
-a --append:与-G一起使用,用于为用户追加新的附加组。
-c修改注释信息
-d 修改用户的家目录,用户原有的文件不会被转移至新位置
必须与-m一起使用
-s 修改用户shell
-L lock锁定用户的密码
userdel删除用户
userdel user01 但是不会删除用户目录
userdel -r user01 删除用户,同时删除用户目录
passwd修改用户米
passwd xiong 修改xiong的密码
-l-u 锁定和解锁
-e 过期期限 ,日期
-i days 非活动期限
-n days密码的最短使用期限
-x 密码的最长期限
-w 警告期限
--stdin 通过标准输出来设置用户名密码
[[email protected] ~]# echo "111111" | passwd --stdin user05
Changing password for user user05.
passwd: all authentication tokens updated successfully.
gpasswd 组添加密码
选项
gpasswd xiong :
-a username 向组中添加用户
[[email protected] doctor]# gpasswd -a fdora netadmin
Adding user fdora to group netadmin
[[email protected] doctor]# tail -10 /etc/group
gentoo:x:4001:netadmin
fdora:x:4002:
netadmin:x:4003:fdora
[[email protected] doctor]#
-d username 重组中移除用户
netgrp user05(组)
[[email protected] ~]$ newgrp user05
[[email protected] ~]$ id
uid=3004(xiaoxiong) gid=3003(user05) groups=3003(user05),1045(doctor),3000(openstack),3004(xiaoxiong)
[[email protected] ~]$ touch a
[[email protected] ~]$ ll
total 0
-rw-r--r-- 1 xiaoxiong user05 0 Jul 28 17:30 a
[[email protected] ~]$ exit 退出组必须用
[[email protected] ~]$ id
uid=3004(xiaoxiong) gid=3004(xiaoxiong) groups=3004(xiaoxiong),1045(doctor),3000(openstack),3003(user05)
[[email protected] ~]$
newgrp xiong(组) 临时切换至组 ,如果用户组有密码,需要输入组密码
chage 命令 更改用户密码过期信息
id命令 显示用户真实有效的id
id 不加选项是显示自己的
id 加用户,显示用户的id信息
su切换用户
登录式切换,会通过重新读取目标的配置文件来重新初始化
su - 用户名 su - xiong 或者 su -l username
非登录式切换,不会读取目标用户的配置文件进行初始化
su 用户名
管理员切换至他用户,不需要用户密码,但是切换用户切换需要输入密码
-c 仅以指定用户的身份运行此处指定的命令
[[email protected] ~]# su - netadmin -c ‘whoami‘
netadmin
chsh改变bash的
chfn
pwck 检查用户密码是否有问题
gpwck 检查用户组的密码是否有异常的
权限管理
进程安全上下文:
进程对文件的访问权限应用模型
进程的属组与文件的属组是否相同,如果相同,则应用属组权限,
否则,则检查进程属组是否与文件的属组;如果是,则应用属组权限。
否则,就只能运用其他权限进程的属组与文件的属组是否相同,如果相同,则执行,如果不同则检查属组权限,如果有权限,则执行,如果没有,检查其他
用户权限,有权限则执行。)
左三位定义属组权限,中三位为属组权限,右三位为其他用户权限
r:readable 4读权限 w writeable 2写权限 x excuteable 1执行权限
文件:r:可以获取文件数据 access time
w 可修改文件的数据 touch 文件 stat 文件 modify time
x 可将此文件运行的进程 change time
文件一般没有执行文件,如果文件有执行权限,则有可能有问题。
目录 r 可用ls命令获取其下的所有文件列表,但是不获取详细信息
w 可修改此目录下的文件列表
x 可cd至此目录 ,可用ls -l 获取所有文件的详细属性信息。
权限组合机制:没有权限就用-代表
--- 000 0 没有读写,执行权限
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7 规律为,有相应权限为则为1,没有相应权限则为0
二进制 八进制
chmod命令有三种
赋值表示:直接操作一类用户的所有权限位
属主u= 属组g= 其 他用户o= 所有a=
如果想同时给u,g,o赋值则可以用‘,‘分开。如果两u,g,o相同则可写成ugo=,
如果没有权限,则不写
如:
[[email protected] ~]chmod u=rwx,g=x,o=r /root/f2
给文件f2属主加读写执行权限,给属组加执行权限,给其他用户执行权限
chmod u=rwx,g=wx,o=rx /root/2
授权表示法 :直接操作一类用户的一个权限位,属主,属组,其他用户权限相同时可连写 (ug, ugo,uo)
u+,u- u+r u+w u+x u-r u -w o-x
g+,g-
o+g-
a+a- 这个时候可以省略a chmod +w f2等同于 chmod a+w ,前面命令等同于同时加上w权限
如果
[[email protected] ~]# ll f2
-rwxr-x--x 1 root root 5 Jul 28 08:59 f2
[[email protected] ~]# chmod ugo-x f2
[[email protected] ~]# ll f2
-rw-r----- 1 root root 5 Jul 28 08:59 f2
2.八进制表示法
x 1 w 2 x4
如:
chmod 740 f2 chmod 777 f2 chmod 111 f2
3.引用性修改,参考某个文件的权限,并将这个文件的权限赋值给文件,如
chmod --reference=/var/log/messages f2
选项
-r 递归修改目录文件内的权限,一般应用到授权表示法,不建议不加思索是使用赋值和8进制法修改
从属关系管理命令
chown,chgrp
选项 -R: 递归修改
chown -R xiong:root f2 将文件修改为xiong属主,并且文件属于root组
chown -R --reference=/var/log/messges f2
chgrp 组 文件
[[email protected] ~]# chgrp xiong shadow
[[email protected] ~]# ll
total 20
drwxr-xr-x. 2 xiong xiong 4096 Jul 29 17:40 addd
-rw-------. 1 root root 56 Jul 29 12:02 dead.letter
-rw-r--r--. 1 xiong root 27 Jul 29 12:13 f2
-rw-r--r--. 1 root root 21 Jul 29 12:33 mail.txt
----------. 1 root xiong 1054 Jul 28 10:03 shadow
对目录有写权限,目录下文件没有写权限,则可以在目录里创建或删除文件,但是对
目录下的文件没有写权限
root创建文件是时,权限是为644
而普通用户创建为664
umask:文件的权限反向掩码,遮罩码
文件:
666-umask
目录: 777-umask
注意:之所以文件用66区减,表示文件默认不能拥有执行权限,
如果减得的结果又执行,则其结果需要将其加1
umask:023
666-023=643=644 减得得结果又1,则将加一边644
777-023=754
[[email protected] ~]# umask 027 设置遮罩码
[[email protected] ~]# umask
0027
[[email protected] ~]# touch umask
[[email protected] ~]# ll
-rw-r-----. 1 root root 0 Jul 29 18:28 umask
[[email protected] ~]# mkdir umaska
[[email protected] ~]# ll
-rw-r-----. 1 root root 0 Jul 29 18:28 umask
drwxr-x---. 2 root root 4096 Jul 29 18:28 umaska
linux很多设置,只对当前有效,退出系统就失效了。
install复制文件同时,设置文件的属性的
install --mode=777 /etc/fstab /root
cp复制文件是不能修改器权限的
mktemp 创建临时文件