基本正则表达式元字符 & 用户,组的基本概念 & Linux文件系统权限

基本正则表达式元字符

1.字符匹配

.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
在这里插入图片描述
在这里插入图片描述

[root@CentOS6 dev]# grep "r..t" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@CentOS6 dev]# grep s[abcd]i /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@CentOS6 dev]# grep r[[:alpha:]] /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
jerry:x:501:501::/home/jerry:/bin/bash
ru:x:505:505::/home/ru:/bin/bash

2.匹配次数
:匹配前面字符任意次数
.
:匹配任意长度的任意字符
?:匹配前面的字符0次或者1次【带单引号】
*:匹配一次或者多次
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@CentOS6 dev]# vim file0
[root@CentOS6 dev]# grep d*g file0
dgg
dfffg
hhg
jkllilg
ddddg
[root@CentOS6 dev]# grep d.*g file0
dgg
dfffg
ddddg
[root@CentOS6 dev]# grep 'd\?g' file0
dgg
dfffg
hhg
jkllilg
ddddg
[root@CentOS6 dev]# grep d\g* file0
dgg
dfffg
rd
ddddg
diojkk
[root@CentOS6 dev]# grep d\*g file0
dgg
dfffg
hhg
jkllilg
ddddg

3.位置锚定
^:行首锚定
$:行尾锚定

^$:空行      
^[[:space:]]$:
\< \b:词首锚定

在这里插入图片描述

[root@CentOS6 ~]# grep "\<root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@CentOS6 ~]# grep "\broot" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

在这里插入图片描述

[root@CentOS6 ~]# grep "bash\b" /etc/passwd
root:x:0:0:root:/root:/bin/bash
ru:x:505:505::/home/ru:/bin/bash
add:x:506:506::/home/add:/bin/bash
gentoo:x:40009:40009::/users/gentoo:/bin/bash
fedora:x:40010:40010::/users/fedora:/bin/bash
David:x:40011:40011::/home/David:/bin/bash
Peter:x:40012:40011::/home/Peter:/bin/bash
Jack:x:40013:40012::/home/Jack:/bin/bash
Mike:x:40014:40012::/home/Mike:/bin/bash
[root@CentOS6 ~]# grep "bash\>" /etc/passwd
root:x:0:0:root:/root:/bin/bash
ru:x:505:505::/home/ru:/bin/bash
add:x:506:506::/home/add:/bin/bash
gentoo:x:40009:40009::/users/gentoo:/bin/bash
fedora:x:40010:40010::/users/fedora:/bin/bash
David:x:40011:40011::/home/David:/bin/bash
Peter:x:40012:40011::/home/Peter:/bin/bash
Jack:x:40013:40012::/home/Jack:/bin/bash
Mike:x:40014:40012::/home/Mike:/bin/bash

1、显示/etc/passwd中不以/bin/bash结尾的行 grep -v /bin/bash$ /etc/passwd
2、找出/etc/passwd中两位数
3、找出ifconfig 命令中IP地址

[root@CentOS6 dev]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@CentOS6 dev]# grep ^/bin/bash$ /etc/passwd
[root@CentOS6 dev]# grep /bin/bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
tom:x:500:500::/home/tom:/bin/bash
jerry:x:501:501::/home/jerry:/bin/bash
natasha:x:502:501::/home/natasha:/bin/bash
gentoo:x:503:502::/home/gentoo:/bin/bash
admin:x:504:504::/home/admin:/bin/bash
ru:x:505:505::/home/ru:/bin/bash
add:x:506:506::/home/add:/bin/bash
[root@CentOS6 dev]# grep -v /bin/bash$ /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

匹配/etc/passwd文件里的两位数或三位数

[root@CentOS6 ~]# grep "\<[0-9]\{2,3\}\>" /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ru:x:505:505::/home/ru:/bin/bash
add:x:506:506::/home/add:/bin/bash


匹配/etc/passwd文件里的两位数

[root@CentOS6 ~]# grep "\<[0-9]\{2\}\>" /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin


[root@CentOS6 dev]# ifconfig eth0 |grep inet | grep -v inet6 | cut -b 21-35
192.168.26.34
[root@CentOS6 dev]# ifconfig eth0 |grep inet | grep -v inet6 | cut -d" " -f 12
addr:192.168.26.34
[root@CentOS6 dev]# ifconfig eth0 |grep inet | grep -v inet6 | cut -d" " -f 12 |cut -d : -f2
192.168.26.34

4.分组和引用

\(\):将一个或多个字符捆绑在一起,当做一个整体进行处理
		\(xy\)\(zd\)ab\2  
	\1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

用户、组的基本概念

用户和组
系统上每一个进程都是由一个特定的用户发起
系统上的文件都是由特定的用户拥有
用户对系统上的文件访问时 受到权限控制
与运行中的进程相关联的用户确定该进程可访问的文件和目录

用户:
用户标识符,密码
用户的分类
管理员
普通用户

组:
用户组:就是具有相同特征的用户的集合体
用户容器

用户和组的标识符:
UID 0-65535
管理员用户:
root:0
普通用户:1-65535
系统用户
CentOS6:1-499
CentOS7:1-999
登录用户
CentOS6:500-
CentOS7:1000-
名称解析:
用户名-------UID
/etc/passwd
GID 0-65535

组类别:
用户的基本组
用户的附加组
/etc/group

认证信息: 密码 /etc/shadow /etc/gshadow

密码策略:
1、使用随机密码
2、最短长度不低于8位
3、应该使用小写字母,大写字母,数字,标点符号四类中的至少三类
4、定期更换

加密算法:
用户组管理
安全上下文:进程是以其发起者的身份运行,进程对文件的访问权限,取决于发起此进程的用户的权限

创建和删除组
groupadd
groupadd [options] group
-g GID :指定组ID,默认情况下上一个组ID+1
-r :创建一个系统组
groupmod: 修改组属性
groupmod [options] GROUP
-g: 修改组ID
-n:修改组名
groupdel:删除组
groupdel [options] GROUP
groupdel nebula

创建和删除用户
useradd 创建用户
useradd [options] LOGIN
-u:指定UID
-g:指定基本组ID,ID需要事先存在
-G:指定用户的附加组,附加组要事先存在
-c:添加注释信息
-d:指定用户的家目录,通过复制/etc/skel目录,并改名
-s:指定用户的默认shell
-r:创建系统用户
useradd -D 显示创建用户的配置
useradd -D [options] 修改默认配置
userdel 用户删除
userdel 登录名
-r:删除用户时一并删除家目录
usermod: 修改用户属性
-u:修改用户ID
-g:修改用户的基本组
-G:修改用户的附加组
-c:修改注释信息
-d:修改家目录
-m:与-d选项一起使用,用于将原来家目录的文件移动到新的家目录
-a:与-G一起使用,追加用户的附加组
-l:修改用户名
-s:修改默认shell
-L:锁定用户密码
—U:解锁用户密码

/etc/passwd
root❌0:0:root:/root:/bin/bash
用户名:密码(X占位符):用户标识符:组标识符:注释信息:主目录:登录shell

passwd :用户密码
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays]
[-w warndays] [-i inactivedays] [-S] [–stdin] [username]
1、passwd :直接修改自己的密码
2、passwd username:修改指定用户的密码,仅root用户有此权限
-l:锁定用户
-d:清除密码串
-e DATE:过期日期
-i DAYS:非活动期限
-n DAYS:密码最短使用期限
-x DAYS:密码的最长使用期限
-w DAYS:告警期限
–stdin:非交互式创建密码
echo “PASSWORD” | passwd --stdin username

gpasswd:
-a username:向组内添加用户
-d username:从组内删除用户

newgrp: 临时切换指定的组为基本组

chage: 更改密码过期信息
-d:指定密码最后修改日期
-E:密码到期日期,
-w:密码过期前的警告天数
-m:密码可以更改的最小天数
-M:密码保持有效的最大天数

id:
-u 显示UID
-g 显示GID
-G 显示用户的所有组ID
-n 显示名字

/etc/shadow

root:$6$rsIAoufpdIhAk2df$upp.41jbKeHSvKJq9lv.ZR41Jy9vdxJDAt4Z2UO.7aybF42Ku/kUjg1QmvCSeGFxpstCVRkL5WUelVdC2usDL.:17859:0:99999:7:::

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
最后一次修改时间:表示从某一个时间点开始,到用户组后一次修改口令的时间天数,一般情况下是从1970.1.1
最小时间间隔:
最大时间间隔:

小练习:
1、创建用户gentoo,UID为40001,基本组为suse(ID为10001),附加组为jerry(jerry得GID为50000)

[root@CentOS6 ~]# groupadd -g 10001 suse
[root@CentOS6 ~]# groupadd -g 50000 jerry
[root@CentOS6 ~]# useradd -u 40001 -g suse -G jerry gentoo
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
[root@CentOS6 ~]# id gentoo
uid=40001(gentoo) gid=10001(suse) groups=10001(suse),50000(jerry)

2、创建用户federa,其注释信息为“federa core” 默认shell为/bin/csh

[root@CentOS6 ~]# useradd -c "federa core" -s /bin/csh federa
[root@CentOS6 ~]# tail -1 /etc/passwd
federa:x:40002:40002:federa core:/home/federa:/bin/csh

3、修改gentoo用户家目录为/tmp/gentoo,

[root@CentOS6 ~]# usermod -d /tmp/gentoo gentoo
[root@CentOS6 ~]# tail -2 /etc/passwd
gentoo:x:40001:10001::/tmp/gentoo:/bin/bash
federa:x:40002:40002:federa core:/home/federa:/bin/csh

4、为gentoo增加附加组natasha。

[root@CentOS6 ~]# groupadd -g 85255 natasha
[root@CentOS6 ~]# usermod -G natasha gentoo
[root@CentOS6 ~]# id gentoo
uid=40001(gentoo) gid=10001(suse) groups=10001(suse),85255(natasha)
[root@CentOS6 ~]# usermod -aG jerry gentoo
[root@CentOS6 ~]# id gentoo
uid=40001(gentoo) gid=10001(suse) groups=10001(suse),50000(jerry),85255(natasha)

5、非交互式修改gentoo密码为gentoo

[root@CentOS6 ~]# echo "gentoo" | passwd --stdin gentoo
Changing password for user gentoo.
passwd: all authentication tokens updated successfully.

Linux文件系统权限

权限对象
u:文件拥有者
g:群组
o:其他人

权限类型

d rwxr-xr-x. 2 root root 4096 Jul 28 06:43 bin

r:4
w:2
x:1
r–r--r-- 444
rw-rwx-r 674
755 644 600 700

rwx权限说明
1、对于文件而言
r:可以获取文件的数据
w:可以修改文件数据
x:可以将此文件运行为进程
2、对于目录而言
r:可以使用ls命令获取文件列表
w:可以编辑修改目录下的文件列表,即创建和删除
x:表示我们可以cd此目录,并且可以使用ls -l获取文件的详细属性

权限判断逻辑
文件:前提条件,用户能够进入到文件所在目录
删除文件:看用户是否具备对目录的W权限
1、判断用户身份,owner-group-other
创建文件,和删除文件逻辑相同

目录:前提条件:判断用户是否能够成功进入目录所在目录,X
删除目录:
创建目录:

权限管理命令
chmod
chmod [OPTION]… MODE[,MODE]… FILE…
chmod [OPTION]… OCTAL-MODE FILE…
chmod [OPTION]… --reference=RFILE FILE…

三类用户
u
g
o
a:所有
chmod [OPTION]… MODE[,MODE]… FILE…

MODE表示法:
(覆盖)赋权表示法,rwx
u= u=r
g=
o=
a=
chmod u= ,g= ,o=
chmod a=
(新增)授权表示法
u+,u-
g+,g-
o+,o-
a+,a-

[root@CentOS6 aaa]# touch abc
[root@CentOS6 aaa]# ll
total 16
-rw-r--r--. 1 root root  0 Jul 30 01:01 abc
-rw-r--r--. 1 root root  6 Jul 27 00:45 file1
-rw-r--r--. 1 root root 16 Jul 27 00:44 file2
lrwxrwxrwx. 1 root root  5 Jul 27 00:43 file3 -> file1
-rw-r--r--. 1 root root  0 Jul 28 06:04 hr
-rw-rw-r--+ 1 root root  4 Jul 28 05:38 sss
[root@CentOS6 aaa]# chmod 777 abc
[root@CentOS6 aaa]# ll
total 16
-rwxrwxrwx. 1 root root  0 Jul 30 01:01 abc
-rw-r--r--. 1 root root  6 Jul 27 00:45 file1
-rw-r--r--. 1 root root 16 Jul 27 00:44 file2
lrwxrwxrwx. 1 root root  5 Jul 27 00:43 file3 -> file1
-rw-r--r--. 1 root root  0 Jul 28 06:04 hr
-rw-rw-r--+ 1 root root  4 Jul 28 05:38 sss
[root@CentOS6 aaa]# chmod u-x abc
[root@CentOS6 aaa]# ll
total 16
-rw-rwxrwx. 1 root root  0 Jul 30 01:01 abc
-rw-r--r--. 1 root root  6 Jul 27 00:45 file1
-rw-r--r--. 1 root root 16 Jul 27 00:44 file2
lrwxrwxrwx. 1 root root  5 Jul 27 00:43 file3 -> file1
-rw-r--r--. 1 root root  0 Jul 28 06:04 hr
-rw-rw-r--+ 1 root root  4 Jul 28 05:38 sss

注意:只有用户自己修改自己的文件

chmod 777 filename
从属关系

chown,chgrp
-R:递归修改
chown username:groupname name:修改用户和组
chown username: name:修改用户
chown :groupname name:修改组
chown -R :groupname name:修改目录中文件的组
chgrp groupname name:修改组
注意:只有管理员可以修改

练习:1、新建用户组:hr,tech,edu
2、新建用户要求如下:
tom是hr组成员
jerry是tech组成员
natasha是tech组成员
gentoo是edu组成员
admin不属上面三组

[root@CentOS6 ~]# groupadd hr
[root@CentOS6 ~]# groupadd tech
[root@CentOS6 ~]# groupadd edu
[root@CentOS6 ~]# useradd tom -g hr
[root@CentOS6 ~]# useradd jerry -g tech
[root@CentOS6 ~]# useradd natasha -g tech
[root@CentOS6 ~]# useradd gentoo -g edu
[root@CentOS6 ~]# useradd admin
[root@CentOS6 ~]# id admin
uid=40007(admin) gid=40007(admin) groups=40007(admin)
[root@CentOS6 ~]# id tom
uid=40003(tom) gid=50001(hr) groups=50001(hr)
[root@CentOS6 ~]# id jerry
uid=40004(jerry) gid=50002(tech) groups=50002(tech)
[root@CentOS6 ~]# id natasha
uid=40005(natasha) gid=50002(tech) groups=50002(tech)
[root@CentOS6 ~]# id gentoo
uid=40006(gentoo) gid=50003(edu) groups=50003(edu)

3、新建目录要求
1. pub目录为公共资源,所有用户均可以读写执行。

[root@CentOS6 ~]# mkdir pub
[root@CentOS6 ~]# ll -d pub
drwxr-xr-x. 2 root root 4096 Jul 30 04:05 pub
[root@CentOS6 ~]# chmod 777 pub
[root@CentOS6 ~]# ll -d pub
drwxrwxrwx. 2 root root 4096 Jul 30 04:05 pub

  1. /HR目录只有hr用户组可以可以写入,其他用户只有只读权限
[root@CentOS6 ~]# mkdir HR
[root@CentOS6 ~]# ll -d HR
drwxr-xr-x. 2 root root 4096 Jul 30 04:16 HR
[root@CentOS6 ~]# chown :hr HR
[root@CentOS6 ~]# chmod g+w HR
[root@CentOS6 ~]# ll -d HR
drwxrwxr-x. 2 root hr 4096 Jul 30 04:16 HR

  1. TECH目录只有tech组成员可以写入,其他用户没有任何权限
[root@CentOS6 ~]# mkdir TECH
[root@CentOS6 ~]# ll -d TECH
drwxr-xr-x. 2 root root 4096 Jul 30 04:19 TECH
[root@CentOS6 ~]# chown :tech TECH
[root@CentOS6 ~]# chmod g+w TECH
[root@CentOS6 ~]# ll -d TECH
drwxrwxr-x. 2 root tech 4096 Jul 30 04:19 TECH

  1. /TECH-1目录只有jerry有读写执行权限
[root@CentOS6 ~]# mkdir TECH-1
[root@CentOS6 ~]# ll -d TECH-1
drwxr-xr-x. 2 root root 4096 Jul 30 04:22 TECH-1
[root@CentOS6 ~]# chown jerry TECH-1
[root@CentOS6 ~]# chmod g+w TECH-1
[root@CentOS6 ~]# ll -d TECH-1
drwxrwxr-x. 2 jerry root 4096 Jul 30 04:22 TECH-1



  1. /EDU目录只有edu组成员可以访问写入,
[root@CentOS6 ~]# mkdir EDU
[root@CentOS6 ~]# ll -d EDU/
drwxr-xr-x. 2 root root 4096 Jul 30 04:25 EDU/
[root@CentOS6 ~]# chown :edu EDU
[root@CentOS6 ~]# chmod g+w EDU
[root@CentOS6 ~]# ll -d EDU/
drwxrwxr-x. 2 root edu 4096 Jul 30 04:25 EDU/

  1. /ADM目录只有admin用户可以访问,具有读写执行权限,其他用户没有任何权限
[root@CentOS6 ~]# mkdir ADM
[root@CentOS6 ~]# ll -d ADM
drwxr-xr-x. 2 root root 4096 Jul 30 04:30 ADM
[root@CentOS6 ~]# chown admin ADM
[root@CentOS6 ~]# chmod g+w ADM
[root@CentOS6 ~]# ll -d ADM
drwxrwxr-x. 2 admin root 4096 Jul 30 04:30 ADM

  1. 使用admin用户创建/test目录要求权限rwxrw-r–

8.使用gentoo用户创建/gentoo目录要求权限755,并创建文件gentoofile,此文件不允许其他人访问

进程安全上下文:
进程对文件访问权限模型:
进程的属主与文件的属主是否相同,如果相同,则应用的是属主权限。
否则,则检查进程的属主是否属于文件的属组,如果是,则应用属组的权限
否则,使用other权限

基本权限ACL
1、针对单个用户设置
2、针对用户组设置
3、子文件/目录继承父目录的权限

查看系统是否支持ACL

[root@nebulalinux03 ~]# tune2fs -l /dev/sda2  | grep "Default mount options:"

设置ACL
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file …
-m:配置acl权限,不能和-x同时使用
-x:删除ACL配置
-b:移除所有的acl配置
-R:递归配置acl
-d:配置默认的acl参数,只对目录有效

setfacl -m u:nebula:rw /tmp/aclfile
getfacl /tmp/aclfile 查看文件是否有ACL权限

[root@CentOS6 tmp]# touch asd
[root@CentOS6 tmp]# ll asd
-rw-r--r--. 1 root root 0 Jul 30 04:48 asd
[root@CentOS6 tmp]# su ru
[ru@CentOS6 tmp]$ echo "hello" > /tmp/asd
bash: /tmp/asd: Permission denied
[ru@CentOS6 tmp]$ su root
Password:
[root@CentOS6 tmp]# setfacl -m u:ru:rw asd
[root@CentOS6 tmp]# ll asd
-rw-rw-r--+ 1 root root 0 Jul 30 04:48 asd
[root@CentOS6 tmp]# getfacl asd
# file: asd
# owner: root
# group: root
user::rw-
user:ru:rw-
group::r--
mask::rw-
other::r--

[root@CentOS6 tmp]# su ru
[ru@CentOS6 tmp]$ echo "hello" > asd
[ru@CentOS6 tmp]$ cat asd
hello

也可以给目录设置ACL权限,并且目录底下的目录和文件都会继承ACL权限

[ru@CentOS6 tmp]$ mkdir zxc
[ru@CentOS6 tmp]$ setfacl -m d:u:add:rwx zxc
[ru@CentOS6 tmp]$ getfacl zxc
# file: zxc
# owner: ru
# group: ru
user::rwx
group::rwx
other::r-x
default:user::rwx
default:user:add:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

[ru@CentOS6 tmp]$ cd zxc
[ru@CentOS6 zxc]$ touch 123
[ru@CentOS6 zxc]$ getfacl 123
# file: 123
# owner: ru
# group: ru
user::rw-
user:add:rwx                    #effective:rw-
group::rwx                      #effective:rw-
mask::rw-
other::r--

[ru@CentOS6 zxc]$ mkdir plm
[ru@CentOS6 zxc]$ getfacl plm
# file: plm
# owner: ru
# group: ru
user::rwx
user:add:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:add:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

d 只对目录有影响
权限掩码
mask rwx权限进行与运算,最终形成新的权限
umask 默认不要的权限 0022
666-022 默认不能有执行权限,防止被人入侵,变成脚本文件
644
目录:
777-022
755
umask -S
特殊权限
SUID:s
当在文件所有者的x权限上出现s时,表示当前这个文件具有SUID权限
1、SUID权限仅仅对二进制程序有效
2、执行者对于改程序有x权限
3、本权限仅仅在执行程序的过程中有效
4、程序的执行者拥有该程序的拥有者的权限
如果当前这个文件属主位没有x权限,显示大写S

SGID s 在group的x权限上出现s时,表示当前这个文件具有SGID权限
1、SGID也是对二进制文件有效,当执行文件时,这个进程具有了该文件所属组的权限
2、执行者对该程序具有可执行权限 x权限
3、主要用于目录之上:,子目录继承父目录的属组。当用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件,如果该目录用SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。

SBIT t
1、主要针对于other位
2、作用于目录
3、在该目录下创新建的文件或目录,只有自己和root可以删除自己创建的文件,不能删除他人的文件。当某一个目录拥有SBIT权限时,则任何一个能够在这个目录下建立文件的用户,该用户在这个目录下所建立的文件,只有该用户自己和root可以删除,其他用户均不可以。
4、对文件无效

SUID,SGID,SBIT
字符表示法
s s t u+s
数字表示法
4 2 1
chmod 0755
1755

chattr : 增加一些隐藏属性
a:append 只能够向文件添加数据,不能删除数据
只能被追加不能被覆盖

[root@CentOS6 aaa]# touch abc
[root@CentOS6 aaa]# chattr +a abc
[root@CentOS6 aaa]# lsattr abc
-----a-------e- abc
[root@CentOS6 aaa]# echo "123456" > abc
-bash: abc: Operation not permitted
[root@CentOS6 aaa]# echo "123456" >> abc
[root@CentOS6 aaa]# cat abc
123456
[root@CentOS6 aaa]# echo "456789" > abc
-bash: abc: Operation not permitted
[root@CentOS6 aaa]# rm abc
rm: remove regular file `abc'? y
rm: cannot remove `abc': Operation not permitted

i:文件不能被删除,改名,链接同时不能写入内容
A:atime 访问时间不可修改

lsattr:查看文件隐藏属性

怎样彻底删除创建过的用户好组
1.先进入 vim etc/passwd 把不要的用户都删除,再进入 vim etc/group 把不要的用户都删除
2.再 cd /home/ 查看底下的文件ls ,如果还有不要的东西,删除
3.再 cd /var/spool/mail/ 查看底下的文件ls,如果还有不要的东西,删除

练习:完成以下任务
1、新建系统组mariadb, 新建系统用户mariadb, 属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;

[root@CentOS6 ~]# groupadd -r mariadb
[root@CentOS6 ~]# useradd -g mariadb -s /sbin/nologin -M mariadb
[root@CentOS6 ~]# id mariadb
uid=40008(mariadb) gid=499(mariadb) groups=499(mariadb)
[root@CentOS6 ~]# su mariadb
This account is currently not available.
[root@CentOS6 ~]# su - mariadb
su: warning: cannot change directory to /home/mariadb: No such file or directory
This account is currently not available.

2、新建GID为5000的组nebulaedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;

[root@CentOS6 ~]# groupadd -g 5000 nebulaedu
[root@CentOS6 ~]# useradd -d /users/gentoo gentoo
[root@CentOS6 ~]# passwd gentoo
Changing password for user gentoo.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.


3、新建用户fedora,其家目录为/users/fedora,密码同用户名

[root@CentOS6 ~]# useradd -d /users/fedora fedora
[root@CentOS6 ~]# passwd fedora
Changing password for user fedora.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

4、新建用户www, 其家目录为/users/www;删除www用户,但保留其家目录;

[root@CentOS6 ~]# useradd -d /users/www www
[root@CentOS6 ~]# userdel www
[root@CentOS6 ~]# ll -d /users/www
drwx------. 2 40011 40011 4096 Jul 31 18:49 /users/www

5、为用户gentoo和fedora新增附加组nebulaedu;

[root@CentOS6 ~]# usermod -G nebulaedu gentoo
[root@CentOS6 ~]# usermod -G nebulaedu fedora
[root@CentOS6 ~]# id gentoo
uid=40009(gentoo) gid=40009 groups=40009,5000(nebulaedu)
[root@CentOS6 ~]# id fedora
uid=40010(fedora) gid=40010(fedora) groups=40010(fedora),5000(nebulaedu)

6、复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为nebulaedu,并让属组对目录本身拥有写权限

[root@CentOS6 log]# cp -r /var/log /tmp/
[root@CentOS6 log]# ll -d /tmp/log
drwxr-xr-x. 3 root root 4096 Jul 31 19:04 /tmp/log
[root@CentOS6 log]# chown -R :nebulaedu /tmp/log
[root@CentOS6 log]# ll /tmp/log
total 2040
-rw-------. 1 root nebulaedu     2368 Jul 31 19:04 anaconda.ifcfg.log
-rw-------. 1 root nebulaedu    22368 Jul 31 19:04 anaconda.log
-rw-------. 1 root nebulaedu    35539 Jul 31 19:04 anaconda.program.log
-rw-------. 1 root nebulaedu   173504 Jul 31 19:04 anaconda.storage.log
-rw-------. 1 root nebulaedu   148133 Jul 31 19:04 anaconda.syslog
-rw-------. 1 root nebulaedu    26433 Jul 31 19:04 anaconda.xlog
-rw-------. 1 root nebulaedu    27507 Jul 31 19:04 anaconda.yum.log
drwxr-x---. 2 root nebulaedu     4096 Jul 31 19:04 audit
-rw-r--r--. 1 root nebulaedu     2394 Jul 31 19:04 boot.log
-rw-------. 1 root nebulaedu     4224 Jul 31 19:04 btmp
-rw-------. 1 root nebulaedu     8490 Jul 31 19:04 cron
-rw-------. 1 root nebulaedu    16531 Jul 31 19:04 cron-20190728
-rw-r--r--. 1 root nebulaedu    87536 Jul 31 19:04 dmesg
-rw-r--r--. 1 root nebulaedu    87536 Jul 31 19:04 dmesg.old
-rw-r--r--. 1 root nebulaedu   179655 Jul 31 19:04 dracut.log
-rw-r--r--. 1 root nebulaedu 11683504 Jul 31 19:04 lastlog
-rw-------. 1 root nebulaedu      836 Jul 31 19:04 maillog
-rw-------. 1 root nebulaedu     3762 Jul 31 19:04 maillog-20190728
-rw-------. 1 root nebulaedu   193915 Jul 31 19:04 messages
-rw-------. 1 root nebulaedu   871101 Jul 31 19:04 messages-20190728
-rw-------. 1 root nebulaedu    32197 Jul 31 19:04 secure
-rw-------. 1 root nebulaedu    17104 Jul 31 19:04 secure-20190728
-rw-------. 1 root nebulaedu        0 Jul 31 19:04 spooler
-rw-------. 1 root nebulaedu        0 Jul 31 19:04 spooler-20190728
-rw-------. 1 root nebulaedu        0 Jul 31 19:04 tallylog
-rw-r--r--. 1 root nebulaedu    60288 Jul 31 19:04 wtmp
-rw-------. 1 root nebulaedu     1111 Jul 31 19:04 yum.log

研发部开发人员David和Peter属于组A,行政部人员Jack和Mike属于组B;

1.建立目录“/project_a”,该目录里面的文件只能由研发部开发人员读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;并要求在此目录下创建的文件研发组内成员可以互相访问

[root@CentOS6 ~]# mkdir /project_a
[root@CentOS6 ~]# groupadd A
[root@CentOS6 ~]# groupadd B
[root@CentOS6 ~]# useradd -g A David
[root@CentOS6 ~]# useradd -g A Peter
[root@CentOS6 ~]# useradd -g B Jack
[root@CentOS6 ~]# useradd -g B Mike
[root@CentOS6 ~]# chown -R :A /project_a
[root@CentOS6 ~]# chmod 770 /project_a
[root@CentOS6 ~]# su David
[David@CentOS6 root]$ cd /project_a
[David@CentOS6 project_a]$ touch 456
[David@CentOS6 project_a]$ echo "asddfg" > 456
[David@CentOS6 project_a]$ cat 456
asddfg
[David@CentOS6 project_a]$ su Jack
Password:
[Jack@CentOS6 project_a]$ ll
ls: cannot open directory .: Permission denied
[Jack@CentOS6 project_a]$ cat 456
cat: 456: Permission denied
[Jack@CentOS6 project_a]$ su Peter
Password:
[Peter@CentOS6 project_a]$ ll
total 4
-rw-r--r--. 1 David A 7 Jul 31 20:21 456
[Peter@CentOS6 project_a]$ cat 456
asddfg
[Peter@CentOS6 project_a]$ touch 789
[Peter@CentOS6 project_a]$ echo "zxcvv" > 789
[Peter@CentOS6 project_a]$ su David
Password:
[David@CentOS6 project_a]$ cat 789
zxcvv


2.建立目录“/project_b”,该目录里面的文件只能由行政部人员读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;要求在此目录下创建的文件行政部人员只能删除自己的文件,不得删除其他人员文件

[root@CentOS6 ~]# mkdir /project_b
[root@CentOS6 ~]# chown -R :B /project_b
[root@CentOS6 ~]# chmod 1770 /project_b
[root@CentOS6 project_b]# su Jack
[Jack@CentOS6 project_b]$ touch asd
[Jack@CentOS6 project_b]$ touch zxc
[David@CentOS6 project_b]$ cat asd
cat: asd: Permission denied
[David@CentOS6 project_b]$ rm asd
rm: cannot remove `asd': Permission denied.
[David@CentOS6 project_b]$ touch 123
touch: cannot touch `123': Permission denied
[David@CentOS6 project_b]$ su Jack
Password:
[Jack@CentOS6 project_b]$ rm zxc
[Jack@CentOS6 project_b]$ ls
asd
[Jack@CentOS6 project_b]$ su Mike
Password:
[Mike@CentOS6 project_b]$ touch 123
[Mike@CentOS6 project_b]$ su Jack
Password:
[Jack@CentOS6 project_b]$ rm 123
rm: remove write-protected regular empty file `123'? y
rm: cannot remove `123': Operation not permitted



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值