您的位置:首页 > 其它

class-5   IO重定向(二)及用户组(一)

2016-08-02 19:47 190 查看
一、IO重定向(二)
1、tr 命令
tr – 转换和删除字符
tr [OPTION]... SET1 [SET2]
选项:
-c 或——complerment :取字符集的补集
[root@6 ~]#  tr -c 'abc' '1' << end
> abcdefghijklmn
> end
abc111111111111[root@6 ~]#


-d 或——delete :删除所有属于第一字符集的字符(可以用八进位制数代替);
[root@6 ~]# tr -cd '[1-9]' < a1
1234565678[root@6 ~]#
[root@6 ~]# tr -d '\141' << end ##a的八进位制为141
> abcdr
> end
bcdr


-s 或—squeeze-repeats:把连续重复的字符以单独一个字符表示压缩
[root@6 ~]# tr -s 'se' << end
> asssssssssssdeeeeeeeeeeeeef
> end
asdef


-t 或--truncate-set1:先删除第一字符集较第二字符集多出的字符
# echo  abcde |tr -t 'abcde' 'xyz'   ##-t,模式下,对第一字符集较第二字符集多的内容不做转换
xyzde
# echo  abcdef |tr  'abcde' 'xyz' ##一般情况下,第一字符集多的将按第二字符集最后一个字符处理
xyzzzf
[root@6 ~]# tr 'abc' 'xyzw' << end    ##当第二字符集比第一字符集多时,去掉第二字符集多的内容
> abcqsdfg123
> end
xyzqsdfg123


特殊字符:
\r :^M
\n :$
# cat a.txt |tr -d '\r' ###将win中的文本转换为linux中的文本文件
2、从文件中导入STDIN
使用< 来重定向标准输入
某些命令能够接受从文件中导入的STDIN:
$ tr ‘a-z’ ‘A-Z’< /etc/issue
[root@6 ~]# tr '[:lower:]' '[:upper:]'< /etc/issue
CENTOS RELEASE 6.8 (FINAL)
KERNEL \R ON AN \M
cat  >


该命令会把/etc/issue 中的小写字符都转换成写写字符
tr –d abc < /etc/fstab 删除fstab 文件中的所有abc 中任意字符
按ctrl+d 离开,可以使用文件来代替键盘的输入
[root@7 ~]# cat  > d
abc
def
dhff        ###ctrl+d退出,回到命令提示符
[root@7 ~]# cat d
abc
def
dhff


#Cat > e < d
[root@7 ~]# cat d
abc
def
dhff
[root@7 ~]# cat > e < d
[root@7 ~]# cat e
abc
def
dhff


3、把多行发送给STDIN
使用“<< 终止词”命令从键盘把多行重导向给STDIN
直到 终止词 位置的所有文本都发送给STDIN
有时被称为就地文本(heretext)
# mail -s "Please Call" admin@magedu.com <<END
> Hi Wang,
> Zhang
> END
#echo "redhat"| passwd --stdin apple
[root@7 ~]# cat > c << end
> my
> name
> is
> lvasu.
> end
[root@7 ~]# cat c
my
name
is
lvasu.


4、管道
管道(使用符号“| ”表示)用来连接命令
命令1 | 命令2 | 命令3 | …
将命令1 的STDOUT 发送给命令2 的STDIN ,命令2的 的
STDOUT 发送到命令3 的STDIN
STDERR 默认不能通过管道转发,可利用2>&1 或 或 |& 实现
最后一个命令会在当前shell 进程的子shell 进程中执行用来
组合多种工具的功能
ls | tr 'a-z' 'A-Z'
less :一页一页地查看输入:
$ ls -l /etc | less
mail:通过电子邮件发送输入:
$ echo "test email" | mail \
-s "test" user@example.com
lpr :把输入发送给打印机
$ echo "test print" | lpr -P printer_name

# echo abcdefg | tr 'a-z' 'A-Z'
[root@6 ~]# echo  abcdefg | tr 'a-z' 'A-Z'
ABCDEFG


# Xecho abcdefg 2>&1 | tr 'a-z' 'A-Z'
[root@6 ~]# Xecho  abcdefg 2>&1 | tr 'a-z' 'A-Z'
-BASH: XECHO: COMMAND NOT FOUND


# Xecho abcdefg |& tr 'a-z' 'A-Z'
[root@6 ~]# Xecho  abcdefg  |&  tr 'a-z' 'A-Z'
-BASH: XECHO: COMMAND NOT FOUND


5、重定向到多个目标(tee)
$ 命令1 | tee 名 文件名 | 命令2
把命令1 的STDOUT保存在文件名中,然后管道输入给命令2
使用:
保存不同阶段的输出
复杂管道的故障排除
同时查看和记录输出
[root@7 ~]# cat d |tee a.txt
abc
def
dhff
[root@7 ~]# cat a.txt
abc
def
dhff


二、用户组(一)
1、基本知识
1.1介绍安全3A 资源分派:
Authentication :认证
Authorization :授权
Accouting|Audition :审计
1.2、用户user
令牌token,identity
Linux 用户:Username/UID
管理员:root, 0
普通用户:1-65535
系统用户:1-499 (CENTOS6 ), 1-999,对守护进程获取资源进行权限分配
登录用户:500 (CENTOS6 )+, 1000+交互式登录
查看用户信息命令:
#finger
[root@6 桌面]# finger root
Login: root           Name: root
Directory: /root                    	Shell: /bin/bash
On since 二 8月  2 08:50 (CST) on tty1 from :0
6 hours 12 minutes idle
On since 二 8月  2 08:52 (CST) on pts/0 from :0.0
4 hours 1 minute idle
On since 二 8月  2 08:53 (CST) on pts/1 from 10.1.250.77
On since 二 8月  2 14:43 (CST) on pts/2 from 10.1.250.77
18 minutes 25 seconds idle
New mail received 二 8月  2 09:48 2016 (CST)
Unread since 一 8月  1 09:49 2016 (CST)
No Plan.


1.3组group
Linux 组:Groupname/GID
管理员组:root, 0
普通组:
系统组:1-499, 1-999
普通组:500+, 1000+
###用户和组的ID和名字可以相同的
1.4、安全上下文 Linux 安全上下文 security context
运行中的程序:进程 (process)
以进程发起者的身份运行:
root: /bin/cat
mage: /bin/cat
进程所能够访问资源的权限取决于进程的运行者的身份
1.5、组的类别
Linux 组的类别:
用户的主要组( 主组):
用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户:私有组
用户的附加组( 辅助组):
一个用户可以属于零个或多个辅助组

2、用户和组的配置文件及其格式
2.1、用户和组的配置文件及文件格式
Linux 用户和组的主要配置文件:
/etc/passwd :用户及其属性信息( 名称、UID 、主组ID 等)
login name :登录用名(wang)
passwd :密码 (x)
UID号 :用户身份编号 (1000)
GID :登录默认所在组编号 (1000)
GECOS :用户全名或注释
home directory录 :用户主目录 (/home/wang)
shell :用户默认使用shell (/bin/bash)
/etc/group :组及其属性信息
[root@7 ~]# getent passwd root
root:x:0:0:root:/root:/bin/bash

/etc/shadow :用户密码及其相关属性
用户名:登录用名
加密密码:一般用sha512 加密
密码最近一次修改时间:1970 年1 月1日起到密码最近一次被更改的时间
=0 用户下次登陆后必须修改时间
密码最短修改时间:密码再过几天可以被变更
=0 没有密码最短使用时间,(0 表示随时 可被变更)
密码最长修改时间:密码再过几天必须被变更
<最短修改时间时,则被禁止修改密码 (99999 表示永不过期)
密码警告时间:密码过期前几天系统提醒用户
(默认为一周)
账号非活动时间:密码过期几天后帐号会被锁定
账户过期时间:从1970 年1 月1 日算起,多少天后帐号失效。
[root@7 ~]# getent shadow root
root:$6$yE.b6vYZm3r2giVr$U9M5ROSqW0GgKYw/Q4wQF3AqasBPX1dtQZah9PdcznYv4od3eYNFRJ7r06teBsJPxD50NRRlvFsSrD72.JvuE.::0:99999:7:::


/etc/group;组及其用户属性、
群组名称:就是群组名称
群组密码:通常不需要设定,密码是被记录在
GID的 :就是群组的 ID
以当前组为附加组的用户列表( 分隔符为逗号)
[root@7 ~]# getent group root
root:x:0:


/etc/gshadow:组密码及其相关属性
群组名称:就是群组名称
群组密码:
组管理员列表:组管理员的列表,更改组密码和成员
以当前组为附加组的用户列表:( 分隔符为逗号)
[root@7 ~]# getent gshadow root
root:::


2.2密码加密及复杂性策略
加密机制:
加密:明文--> 密文
解密:密文--> 明文
对称加密:加密和解密使用同一个密码
公钥加密:每个密码成对出现,一个为私钥(secret key),一个为公钥(public key)
单向加密(指纹加密):散列加密,提取数据特征码 ,常用于数据完 整性校验
单向加密:哈希算法,原文不同,密文必不同
相同算法定长输出,获得密文不可逆推出原始数据
雪崩效应:初始条件的微小改变,引起结果的巨大改变
加密算法:
md5: message digest, 128bits ### $1
sha1: secure hash algorithm, 160bits
sha224: 224bits
sha256: 256bits ### $5
sha384: 384bits
sha512: 512bits ###目前centos6之后只用的加密算法 $6
(salt加盐):$1后两个$符之间的即为salt
lv:$1$vBgtHhcL$S0a/60DF0dTcfbE/HpLDT1:17015:0:99999:7:::


更改加密算法 authconfig --passalgo=sha256 -- update
[root@6 桌面]# authconfig --passalgo=md5 --update
[root@6 桌面]# useradd lv
[root@6 桌面]# getent shadow lv
lv:!!:17015:0:99999:7:::
[root@6 桌面]# passwd lv
更改用户 lv 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@6 桌面]# getent shadow lv
lv:$1$vBgtHhcL$S0a/60DF0dTcfbE/HpLDT1:17015:0:99999:7:::


更改密码存放的位置:
早期密码存放在/etc/passwd中,现在一般存放在中/etc/shadow,即转换存放位置。
#pwunconv pw passwd unconvert 不转换密码位置,存放在/etc/passwd
#pwconv 转换密码位置,存放在中/etc/shadow
[root@6 桌面]# head -1 /etc/shadow
root:$6$WCeeOGmBq7sO4OUR$7ilpCkqcbLCewVKKXKpOH1V1SBqZI4m57d1fZocbrlYZhbF9thDSGJhei1c.DYfnFT5UuamVtUS0CsESHBzqK/:17002:0:99999:7:::
[root@6 桌面]# pwunconv
[root@6 桌面]# head -1 /etc/shadow
head: 无法打开"/etc/shadow" 读取数据: 没有那个文件或目录
[root@6 桌面]# head -1 /etc/passwd
root:$6$WCeeOGmBq7sO4OUR$7ilpCkqcbLCewVKKXKpOH1V1SBqZI4m57d1fZocbrlYZhbF9thDSGJhei1c.DYfnFT5UuamVtUS0CsESHBzqK/:0:0:root:/root:/bin/bash
[root@6 桌面]# pwconv
[root@6 桌面]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash


2.3文件操作
vipw :编辑/etc/passwd 同时检查账户完整性
[root@7 ~]# vipw root
root:x:0:0:root:/root:/bin/bash
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


vigr :编辑/etc/group 同时检查账户的完整性
[root@7 ~]# vigr
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:

pwck :检查/etc/passwd
[root@7 ~]# pwck
用户“ftp”:目录 /var/ftp 不存在
用户“avahi-autoipd”:目录 /var/lib/avahi-autoipd 不存在
用户“saslauth”:目录 /run/saslauthd 不存在
用户“pulse”:目录 /var/run/pulse 不存在
用户“gnome-initial-setup”:目录 /run/gnome-initial-setup/ 不存在
pwck:无改变

grpck:检查/etc/group
[root@7 ~]# grpck

3、用户和组管理命令
3.1、用户创建:useradd
useradd [options] LOGIN
-u UID : [UID_MIN, UID_MAX] 定义在/etc/login.defs
-o 配合-u 选项,不检查UID 的唯一性
-g GID :指明用户所属基本组,可为组名,也可以GID
-c "COMMENT" :用户的注释信息
-d HOME_DIR: 以指定的路径( 不存在) 为家目录
-s SHELL : 指明用户的默认shell 程序可用列表在/etc/shells 文件中
-G GROUP1[,GROUP2,...] :为用户指明附加组,组必须事先存在
-N 不创建私用组做主组,使用users 组做主组 (users UID:100)
-r: 创建系统用户 CentOS 6: ID<500 ,CentOS 7: ID<1000
-m (-k):强制创建家目录
(-k):创建用户默认把/skel目录下的文件复制到用户家目录下
-M: 拒绝为影虎创建家目录
[root@6 ~]# useradd -u 1234 -G root,ftp -s /bin/csh  -d /testdir/testuser testuser

默认值设定:/etc/default/useradd 文件中
显示或更改默认设置:
#useradd -D
useradd –D -s SHELL
[root@6 桌面]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes


默认配置文件:
/etc/default/useradd
/etc/skel/*
/etc/login.defs
批量创建用户:
newusers passwd 格式文件 批量创建用户
user1:x:3000:::/testdir/user1:/bin/csh
user2:x:3001:::/testdir/user2:/bin/csh
user3:x:3002:::/testdir/user3:/bin/csh
user4:x:3003:::/testdir/user4:/bin/csh
newusers  a


chpasswd 批量修改用户口令
[root@6 ~]# cat b
user1:user1pass
user2:user2pass
user3:user3pass
user4:user4pass
chpasswd  b

3.2用户属性修改usermod,chfn
usermod [OPTION] login
-u UID: 新UID
-g GID: 新基本组
-G GROUP1[,GROUP2,...[,GROUPN]]] :新附加组,原来的附加
组将会被覆盖;若保留原有,则要同时使用-a 选项,表示append;
-s SHELL :新的默认SHELL;
-c 'COMMENT' :新的注释信息;
-d HOME: 新家目录不会自动创建,原家目录中的文件不会同时移
动至新的家目录;若要创建新家目录并移动原家数据,同时使用-m 选项
-l login_name: 新的名字;
-L: lock 指定用户, 在/etc/shadow 密码栏的增加 !
-U: unlock 指定用户,将 /etc/shadow 的 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期;
-f INACTIVE: 设定非活动期限;
-o:忽略检查,而直接修改用户UID -u -o
chfn:修改、添加附加信息
root@6 桌面]# chfn lvasu
Changing finger information for lvasu.
Name []: lvasu
Office []: class1
Office Phone []: 911
Home Phone []: ****
Finger information changed.
[root@6 桌面]# finger lvasu
Login: lvasu          	Name: lvasu
Directory: /home/lvasu              	Shell: /bin/bash
Office: class1, 911	Home Phone: ****
Last login 一 8月  1 18:09 (CST) on pts/2 from 10.1.250.77
Mail last read 日 7月 31 22:21 2016 (CST)
No Plan.


chsh:修改用户shell类型
[root@6 桌面]# chsh -s /bin/csh  lvasu
Changing shell for lvasu.
Shell changed.
[root@6 桌面]# getent passwd lvasu
lvasu:x:1001:500:lvasu,class1,911,****:/home/lvasu:/bin/csh


3.3、删除用户userdel
userdel [OPTION]... login
-r: 删除用户家目录;
[root@6 桌面]# userdel -r lv
[root@6 桌面]# ls /home
ha1  ha2  ha3  lvasu  test
[root@6 桌面]# useradd app
[root@6 桌面]# userdel app
[root@6 桌面]# ls /home
app  ha1  ha2  ha3  lvasu  test


3.4查看用户相关的ID 信息
id [OPTION]... [USER]
-u: UID
-g: GID
-G: Groups
-n: Name
[root@6 桌面]# id -u lvasu
1001
[root@6 桌面]# id -g lvasu
500
[root@6 桌面]# id -G lvasu
500
[root@6 桌面]# id -un lvasu
lvasu
[root@6 桌面]# id -gn lvasu
lvasu
[root@6 桌面]# id -Gn lvasu
lvasu


3.5 组修改
groupmems 用户组管理
groupmems -a user_name | -d user_name | [-g group_name] | -l | -p
-a :添加组用户
-d:删除组用户
-p:删除组内的所有用户(当组内没有其他用户的时候)
[root@6 桌面]# groupmems -a lvasu
[root@6 桌面]# id lvasu
uid=1001(lvasu) gid=500(lvasu) 组=500(lvasu),0(root)
[root@6 桌面]# groupmems -d lvasu
[root@6 桌面]# id lvasu
uid=1001(lvasu) gid=500(lvasu) 组=500(lvasu)

#newgrp 临时切换主组 exit退出
[root@6 桌面]# newgrp lvasu
[root@6 桌面]# id
uid=0(root) gid=500(lvasu) 组=500(lvasu),0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@6 桌面]# exit
exit
[root@6 桌面]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

#groups 显示组中的用户
groups [OPTION]... [USERNAME]...
[root@6 桌面]# groups root
root : root
[root@6 桌面]# groups lvasu
lvasu : lvasu


3.6切换用户或以其他用户身份执行命令
su [options...] [-] [user [args...]]
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的
配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户的配置
文件,切换至家目录,完全切换
###读取的配置文件不同
root su 至其他用户无须密码;非root 用户切换时需要密码
换个身份执行命令:
su [-] UserName -c 'COMMAND'
选项:-l --login: :
su -l UserName 于 相当于 su - UserName
su -c 退出切换用户模式
# su - root -c `cat /etc/shadow`


如何给用户提权
1、通过SU 、SU - 切换到管理员账户
2、通过把用户加入到管理员组
3、通过useradd -u -o 0 user 将用户设置为管理员
取消管理员设置,修改/etc/passwd 文件 的UID 为原UID
# chown -R lvasu /home/lvasu 修改属主 重启登陆成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: