马哥linux0803课堂笔记

课堂笔记

 

重定向的几种方式

标准输入 0 (stdin)

标准输出 1 (stdout)

标准错误 2 (stderr)

 

标准输入的重定向方法

cat < file

cat << string (多行重定向)

xxx

aaa

string结束

cat file | cat

 

标准输出的重定向

ls echo who hostname ifconfig 有输出的命令都属于标准输出的命令

比如cd就没有输出

 

标准输出重定向的方法

ls > file

ls >> file

避免覆盖的方法有命令可以

set –C 禁止覆盖

set +C 与上相反

只对当前shell有效,临时性

 

需要标准输入的命令

cat mail tr passwd chpasswd newusers

 

标准错误的重定向方法

cmd err 2>> file > file2

cmd &>> allfile

cmd >> allfile2 2>&1(必须放在最后)

 

管道

cmd | cmd2

管道的效果就是将前面命令的正确结果传送到cmd2来执行

 

处理错误输出的管道信息需要做以下操作

cmd1 |& cmd2

cmd1 2>&1 | cmd2 (版本较好,兼容性好)

支持多次管道

cmd1 | cmd2 | cmd3

 

tee命令的作用

 

cmd1 | tee file | cmd3

-a 选项可以附加信息到文件

将cmd1的标准输出也打印到终端,同时也将结果通过管道传送到cmd2

 

tr命令的作用用于转换字符及删除字符

-c 补集 set1

-d 删除

-s 压缩重复

-t 对应的被替换,和不带t有区别.位数上的区别

 

/etc/passwd 用户的配置信息

七个字段

username:password:UID:GID:comment(注释):homedir:shell

pwconv(默认本来就是)可以转换密码到passwd配置文件中

pwunconv 可以不转换密码到/etc/shadow

 

UID编号顺序

在我们创建用户的时候

在centos7中从1000开始

在centos6中从500开始

ID编号范围定义的配置文件在/etc/login.defs

还有其他的一些用户定义

创建系统用户是不会自动创建家目录

 

 

 

 

处于安全考虑.比如我们需要维护系统,不希望其他用户登录

我们可以使用一下方法来限制普通用户的登录

 

touch /etc/nologin

touch /run/nologin (与上面命令效果一样,但是run目录只有centos7有)

可以让普通用户不能登录,在文件中写入一些信息,也能在普通用户登录的界面显示

 

所有用户的影子配置文件,主要存放管理员和用户密码的信息

/etc/shadow

格式为

username:password(加密的密码):口令的更改时间:最短口令有效期(指多少天不能更改口令的时间):最长的口令有效期:警告提醒时间(提前几天通知):非活动时间(口令有效期到了,仍然不修改口令,将会账户):账户的有效期:保留字段

 

chage –d0 USER

passwd –e USER

这俩个命令可以迫使口令马上到期,下次登录必须修改口令

 

/etc/group

groupname:password:GID:groupmember(组成员)

/etc/gshadow

groupname:password:groupadminlist(组管理员):

 

groupmems –l –g group (显示组名)

groumems –d USER –g group 删除这个组的某个用户

 

组管理员不一定非要是组的成员,可以单独是组管理员

 

useradd

-u UID

-g primary 主组

-G secondary g1,g2 辅助组

-d 家目录路径(自动生成)

例 /testdir/user1

父目录必须存在,子目录可以不存在

-s 指定shell

-c comment 注释信息

-M 不创建家目录

-m 默认创建家目录

 

useradd –ou0 rooter2 可以创建管理员(系统认定管理员只认UID,删除这个账户只能修改配置文件信息中的UID)

 

usermod

-l 改新的用户名

-L 锁定用户(在配置文件口令中增加!就是锁定的意思)

-U 解锁用户

-e 指定他的口令过期时间

-m 移动家目录,搬家使用 (配合-d使用)

 

 

userdel

-r 删除家目录及邮箱

批量创建用户

newusers passwdfile(跟passwd格式一样,必须七个字段)

批量修改密码

chpasswd

例: cat file1 | chpasswd

chpasswd 交互式

user:passwd

ctrl+D 结束

 

文本格式

user:password

 

批量创建用户的家目录会有问题,家目录中的配置文件没有

我们需要手动去移动过来如下

etc/skel下是专门存放这些配置文件

cp –r /etc/skel/. /home/user

.的意思就是当前目录下所有文件(..表示父目录所有的文件)

cp –r `ls -A` /home/user 同样可以达到效果,但是必须在skel目录下.

 

passwd [OPTIONS] UserName :修改指定用户的密码,仅root用户权限

passwd :修改自己的密码

-l 锁定指定账户

-u 解锁指定账户

-e 强制用户下次登录修改密码

-n mindays:指定最短使用期限

-x maxdays:最大使用期限

-w warndays:提前多少天开始警告

-I inactivedays:非活动期限

–stdin : 从标准输入接受用户密码

例:echo “PASSWORD”| passwd –stdin USERNAME

passwd很多选项跟usermod 相同

 

chage命令的用法,命令可修改用户的密码策略

-d LAST_DAT 密码使用期限

-E –expiredat EXPIRE_DATE

-I –inactive INACTIVE

-m –mindats MIN_DAYS

-M –maxdays MAX_DAYS

-W –warndays WARN_DAYS

-l 显示密码策略

下一次登录强制重设密码

chage –d 0 USER

chage –m 0 –M 42 –W 14 –I 7 USER

chage –E 2016-09-10 USER

 

getent shadow USER 查询账户密码策略

 

组的管理

groupadd [OPTIONS] … group_name

-g GID :指明GID号;[GID_MIN,GID_MAX]

-r:创建系统组;

Centos 6: ID<500

Centos 7: ID<1000

 

组属性修改:groupmod

groupmod [OPTIONS] … group

-n group_name:新名字

-g GID :新的GID

 

组删除:groupdel

groupdel GROUP

 

修改辅助组可以使用命令groupmems

修改主组可以使用命令 usermod

查看辅助组在group配置信息中查看

查看主组在passwd配置信息中查看,也可以在gshadow配置信息中查看到主组信息

例:

将Group1 加入到USER1中当辅助组

usermod –aG USER1 Group1

G选项需要配合-a使用,否则将清空原有的辅助组

 

将user1作为user2的主组

usermod –g user1 user2

 

有主组的组不能删,没有主组有成员可以直接删除组

 

组密码:gpasswd

gpasswd [OPTIONS] GROUP

-a user:将user添加到指定组中

-d user:从指定组中移除用户user

-A user1,user2,…:设置有管理权限的用户列表

 

newgrp命令:临时切换基本组

如果用户不属于此组,则需要组密码

 

‘’强引用,例如在里面写命令或者其他,他都当成字符串

“”弱引用,例如在里面写命令和变量,他识别变量,但是不识别命令

弱引用,例如在里面写命令和变量,他都识别

 

set –C 禁止覆盖

set +C 可以覆盖文件

>| 强制覆盖

当前shell临时生效

 

用户的权限

 

linux下文件常用的三种权限

r:read

w write

x excute

 

文件的权限分配是根据程序所有者,所属组,其他

 

linux的安全模型

所有者,所属组,其他人

rwxrwxrwx

 

chown(change owner):更改所有者

chown可以同时修改所有者和所有组

chown own:grp file 两个都修改

chown :grp file 只修改所属组

chown own file 只修改所有者

 

chgrp(change group):更改所属组

 

chmod (change mode)修改模式

分为模式法和数字法

模式法

chmod who opt per file…

who:

u:所有者 g :所属组 o:其他  a:所有人(三种人都包括)

opt: +,-,=

per: r,w,x

例: chmod u=rwx file  是所有者拥有文件rwx权限

 

例:我们设置一个文件的所有者权限为无,如果文件的的所有者是wang,我们用wang用户登录,是对文件做不了任何操作的,但是我们可以修改文件的权限,因为文件的所有者是wang.

所以可以证明只要是文件的所有者,就可以对文件进行权限操作

 

还有一例子,将一个文件全部清除

chmod a= file

权限就成了———.

 

显示所有用户都不能对文件进行操作,但是并不能对root管理员有效,事实证明权限只对普通用户有效

 

如果将文件权限设置成—-w—-只有写的权限

 

对于文件的意义

read: 文本

write: 可修改内容,但不能删除文件本身

x:针对二进制程序或脚本

X:不会增加x(前提是本身无x权限)

 

对于目录的意义

read:可以查看dir内文件列表,但不能访问文件,不能cd,也不能查看文件的元数据

write:可以创建或删除dir中文件,需要配合x权限

x:可以进入dir,可以访问dir中文件

X:不会增加x(前提是本身无x权限)功能:当你在一个目录中需要统一增加x权限时,会检测目录中的情况,目录中的目录会添加x权限,文件本身有x权限也会不变,没有的就不会增加x权限.这样就能保证安全.

 

X需要配合递归选项

chmod –R a=rX dir/

 

数字法

— 000 0

–x 001 1

-w- 010 2

-wx 011 3

r– 100 4

r-x 101 5

rw- 110 6

rwx 111 7

例:

750: rwxr-x—

r-x-wx-w-:532

 

chmod –-reference file1 file2

功能就是file2参考file1的权限

新建文件和目录的默认权限

umask 命令

umask 默认显示umask值

umask u=rwx,g=rwx,o=rwx  同样可以设置默认的文件或目录的权限,显示的目录的,所以文件的默认权限是-1

-S 以字符形式显示默认的文件或目录的权限,显示的是文件的,所以目录的默认权限+1

-p 显示出umask值,(输出的值可被调用)并把前面的命令打出来,这个存在的意义是直接可以将信息附加写入到配置信息中.

 

文件和文件夹是共用一个umask的

 

更改新建文件或目录的权限的umask值可以通过修改家目录的.bashrc或.bash_profile配置文件来修改,普通用户和管理员的umask的定义信息则是在/etc/profile和/etc/bashrc配置文件中)

 

umask本质是从目录或文件上屏蔽掉最大权限相应的位,从而得出默认的权限

假设,umask是125,新建目录的文件得到值是642

其实真正的工作原理是这样的

110          110       110           这是本身文件的默认666

001          010       101           这是上面说到的值125

110         100      010这才是真正通过上面俩个值得到的结果

6           4        2    第二行0表示不屏蔽,1表示屏蔽掉,第一行就是最大权限.所以得到了这个值 110100010 rw-r—w-

 

公式

dir:777-umask

file:666-umask 有奇数加1,偶数保留

同上面那个例子,umask值是125,那么666-125=541,奇数加1就是642得到的结果和实验的结果是一样.

 

文件的公式:umask+default per(默认的权限)=666

文件为什么是666,因为如果像目录一样是777,就有可能得到的值就有执行权限,这么操作的目的就是为了安全着想.

目录的公式:umask+default per =777

 

umask值越大,权限越小

 

非特权用户的umask值默认是002

root的umask值是022

 

umask 原理

从目录或文件上屏蔽掉最大权限相应的位,从而得出默认权限

三种特殊权限

suid s

sgid s

sticky t

表现为sst

例 rwsrwsrwt

数字法

suid 4 来表示

例 chmod 4755 /bin/cat

 

三种常用权限:r,w,x user,group,other

 

进程也有所有者和所属组

s权限只对普通用户有意义,对root无作用

root的权限无限大

 

安全上下文

前提:进程有属主和属组;文件有属主和属组

1. 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

2. 启动为进程之后,其进程的属主为发起者;进程的属组为发起者的属组

3. 进程访问文件时的权限,取决于进程的发起者

a. 进程的发起者,同文件的属主:则应用文件属主权限

b. 进程的发起者,属于文件属组;则应用文件属组权限

c. 应用文件”其他”权限

 

suid

如果一个文件具有suid权限,普通用户运行他将会继承文件所有者的权限.

例: rws—— /bin/cat 具有suid权限,那么普通用户执行

cat /etc/shadow将会继承root权限打开这个文件

 

sgid

如果一个文件具有sgid权限,那么普通用户将会继承文件的属组权限.

sgid作用与目录上:

chmod 4755 file

chmod 2755 file

chmod 1755 file

4表示suid 2表示sgid 1表示sticky 6表示suid+sgid(但是程序一般应用了一个就不会应用第二个了) 7表示三种权限全部有

如果文件或者目录本身没有x权限,而我们加上特殊权限,就会显示错误状态,就是大写的S,S,T

三种权限全部在如果使用数字模式去掉权限将会失败,只能使用字符模式去掉

 

数字模式要删除s权限

 

sticky t 粘滞位

 

chattr

 

 

原创文章,作者:Kartik,如若转载,请注明出处:http://www.178linux.com/30151

(0)
KartikKartik
上一篇 2016-08-08
下一篇 2016-08-08

相关推荐

  • 初探linux

    计算机的组成及其功能: 存储器:    实现记忆功能的部件用来存放计算程序及参与运算的各种数据 运算器:    负责数据的算术运算和逻辑运算即数据的加工处理 控制器:    负责对程序规定的控制信息进行分析,控制并协调输入,输出操作或内存访问 输入设备:    实现计算程序和原始…

    Linux干货 2016-10-29
  • pam_mysql认证ftp虚拟用户账号

    pam_mysql认证ftp虚拟用户账号: 虚拟用户:        用户账号存储于何处?        文件、MySQL、Redis、…       &nb…

    2017-06-13
  • 第十八周博客作业

    1、为LNMP架构添加memcached支持,并完成对缓存效果的测试报告; 操作系统: CentOS 7.210.0.0.51 nginx+php+mysql10.0.0.52 memcached 一. 环境准备: 搭建LNMP编译安装环境 1. 配置163的yum源和阿里云的epel源 [root@localhost ~]# mv /etc/yum.rep…

    2017-07-12
  • lvs-keepalived

    keepalived: vrrp协议:Virtual Redundant Routing Protocol        术语:        虚拟路由器:Virtual Router &n…

    Linux干货 2017-05-13
  • Nagios

    一、Nagios简介   Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。 Nagios原名为NetSaint,由Ethan Galstad开发并维护至今…

    2017-12-20
  • 推荐-LVS原理详解

    LVS原理详解 LVS原理详解 LVS简介 LVS结构与工作原理 一.LVS的结构 二.LVS内核模型 三.LVS的包转发模型 1.NAT模型: 2.DR模型: 3.TUN模型: 四.LVS的调度算法 LVS的调度算法分为静态与动态两类。 1.静态算法(4种):只根据算法进行调度 而不考虑后端服务器的实际连接情况和负载情况 2.动态算法(6种):前端的调度器…

    Linux干货 2016-03-27