课堂笔记
重定向的几种方式
标准输入 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