8.1_Linux管道的使用和用户管理

什么是管道?

管道就是把命令1的标准输出发送给命令2的标准输入,把命令2发的标准输出发送给命令3的标准输入。。。

最后一个命令会在当前shell进程的子shell进程中执行用来

管道实现了使用目的单一的小程序,组合小程序完成复杂的任务

管道需要配合其他命令的使用

tr命令的使用,常常用于配合管道

    -c或--complerment:取字符集的补集
    -d或--delete:删除所有属于第一字符集的字符;
    -s或-squeeze-repeats:把连续重复的字符以单独一个字符表示
    -t或--truncate-set1:先删除第一字符集较第二字符集多出的字符
    \NNN      八进制值为NNN 的字符(1至3个数位)
    \\        反斜杠
    \a        终端鸣响
    \b        退格
    \f        换页
    \n        换行
    \r        回车
    \t        水平制表符
    \v        垂直制表符
   [:alnum:]    所有的字母和数字
   [:alpha:]    所有的字母
   [:blank:]    所有呈水平排列的空白字符
   [:cntrl:]    所有的控制字符
   [:digit:]    所有的数字
   [:graph:]    所有的可打印字符,不包括空格
   [:lower:]    所有的小写字母
   [:print:]    所有的可打印字符,包括空格
   [:punct:]    所有的标点字符
   [:space:]    所有呈水平或垂直排列的空白字符
   [:upper:]    所有的大写字母
   [:xdigit:]   所有的十六进制数
   [=字符=]     所有和指定字符相等的字符

例如 ls | tr ‘a-z‘ ‘A-Z‘ 配合ls 命令把所有标准输出的小写字母都转换成大写字母

[[email protected] ~]# ls -l | tr ‘a-z‘ ‘A-Z‘
TOTAL 124
-RW-R--R--. 1 ROOT ROOT   860 JUL 28 17:33 1TEST
-RW-R--R--. 1 ROOT ROOT   909 JUL 28 17:34 2TEST
-RW-------. 1 ROOT ROOT  1482 JUL 20 17:25 ANACONDA-KS.CFG
-RW-R--R--. 1 ROOT ROOT    43 AUG  1 10:47 A.TXT
DRWXR-XR-X. 2 ROOT ROOT  4096 JUL 22 12:51 DESKTOP
DRWXR-XR-X. 2 ROOT ROOT  4096 JUL 20 21:24 DOCUMENTS
DRWXR-XR-X. 2 ROOT ROOT  4096 JUL 20 21:24 DOWNLOADS
-RW-R--R--. 1 ROOT ROOT     0 JUL 28 10:18 F[A-Z]
-RW-R--R--. 1 ROOT ROOT     0 JUL 28 10:18 F{A-Z}
-RW-R--R--. 1 ROOT ROOT     0 JUL 28 10:18 F[A-Z]
-RW-R--R--. 1 ROOT ROOT 55348 JUL 20 17:24 INSTALL.LOG
-RW-R--R--. 1 ROOT ROOT 10608 JUL 20 17:20 INSTALL.LOG.SYSLOG
DRWXR-XR-X. 2 ROOT ROOT  4096 JUL 20 21:24 MUSIC
DRWXR-XR-X. 2 ROOT ROOT  4096 JUL 20 21:24 PICTURES
DRWXR-XR-X. 2 ROOT ROOT  4096 JUL 20 21:24 PUBLIC
DRWXR-XR-X. 2 ROOT ROOT  4096 JUL 20 21:24 TEMPLATES
DRWXR-XR-X. 2 ROOT ROOT  4096 JUL 20 21:24 VIDEOS
DRWXR-XR-X. 9 ROOT ROOT  4096 OCT 19  2015 VMWARE-TOOLS-DISTRIB

tee命令,常常用于配合管道

NAME
       tee - read from standard input and write to standard output and files
           # 用来将标准输入的内容输出到标准输出并可以保存为文件
SYNOPSIS
       tee [OPTION]... [FILE]...
DESCRIPTION
       Copy standard input to each FILE, and also to standard output.
       -a, --append
              append to the given FILEs, do not overwrite
              # 附加到指定文件,并且不覆盖
       -i, --ignore-interrupts
              ignore interrupt signals
              # 忽略中断的信号
       --help display this help and exit
              # 显示帮助和退出
       --version
              output version information and exit
              # 显示版本信息和退出·
       If a FILE is -, copy again to standard output.
       # 如果文件类型是文件,复制文件文件到标准输出。

$命令1 | tee文件名| 命令2

把命令1的标准输出保存在文件名中,然后管道输入给命令2

使用:

保存不同阶段的输出

复杂管道的故障排除

同时查看和记录输出

用户管理

什么是用户?用户资源获取标识符,资源分配,安全权限模型的核心要素之一

没用用户,可否? 答案是YES

Linux用户类别:

管理员UID:root,0

系统用户UID:1-499(CentOS 6),1-1000(CentOS 7)

登陆用户UID:500+(CentOS 6),1000+(CentOS 7)

用户组类别:

管理员组GID:root,0

系统组GID:1-499(CentOS 6),1-1000(CentOS 7)

普通组GID:500+(CentOS 6),1000+(CentOS 7)

Linux组的类别:

用户的主要组(主组、属主):

用户必须属于一个且只有一个主组

组名同用户名,且仅包含一个用户:私有组

用户的附加组(辅助组、属组):

一个用户可以属于零个或多个辅助组

CentOS6和7的默认UID和GID不同,这个是由于/etc/login.defs文件里面的默认值所决定的

CentOS 6 UID和GID默认值

CentOS 7 UID和GID默认值

Linux用户和组的主要配置文件

/etc/passwd:用户及其属性信息(名称、UID、主组ID等)

该文件里面一共有7项,包括

# [[email protected] ~]# cat /etc/passwd
# root(用户名):x(密码):0(UID):0(GID):root(注释):/root(家目录):/bin/bash(默认SHELL)

假如把普通用户的UID更改成0,该普通用户会变成管理员账号,因为在Linux系统里面,识别管理员是否为管理员,就是查看用户的UID号码,为0则为管理员,在生产环境中,可能会把管理员root的账号改成其他名字,这样做是以防止黑客攻击root账号来进行破解。

/etc/group:组及其属性信息

# [[email protected] ~]# cat /etc/group
# root(主组):x(组密码):0(GID):gentoo(附加组的用户列表)

/etc/shadow:用户密码及其相关属性

# [[email protected] ~]# cat /etc/shadow
# root(用户名):$6$(加密方式)jyarrud3(随机数,俗称盐)$6AbktjO7BD7hQAMNK.Xx6YO7Tj3ooj9tEcclql5kCZ18Tvt7erKxPv212ssT32SFMEms0WegjsNhS0miktlkd0(用户密码):17008(最近更改密码的日期,从1970年1月1号开始算):0(密码再过几天可以被更改):99999(密码过期时间):7(密码过期前提醒时间):(密码过期后几天账号会被锁定):(从1970年1月1日算起,多少天后帐号失效):(保留)

上面这个设置了密码的用户显示的

现在我们再新建一个用户看看

[[email protected] ~]# useradd wan
[[email protected] ~]# tail -1 /etc/shadow
wan:!!:17015:0:99999:7:::

我们会看见账号密码那里有两个!!,这表示账号被锁定,没有密码的话不允许该用户去登陆,假如有密码,但是那里还是有一个叹号的话,也表示账号被锁定,不对用户进行解锁的话该用户将无法登陆。假如没有叹号的话,该用户可以没有密码的情况下面直接登陆。不过该功能只能在CentOS 5版本和更老的版本可以实现,为了安全起见,从CentOS 6以后已经修正此问题。

/etc/gshadow:组密码及其相关属性

# cat /etc/gshadow
# root/(主组):(组密码):(组管理员列表):gentoo(附加组的用户列表)

注意:为安全起见,现在一般都没有组密码,直接管理员指派,因为当其他用户知道了组密码,可以随意加入该组,这样的话就显得不安全。

用户和组管理命令

用户管理命令

useradd [options] LOGIN 增加用户

-u  UID:指定UID

-o  配合-u选项使用,不检查UID的唯一性,

-g  GID:指定GID,即用户的主组,但GID要事先存在

-G  GID:指定用户的额外组,但GID要事先存在

-N  不创建私用组做主组,使用users组做主组

-d  目录: 指定家目录

-m  创建用户时,强制给用户创建家目录

-M  创建用户时,但不创建家目录

-c  备注:注释

-s  shell:指定默认shell,应该指定使用/etc/shells文件中出现的shell

-r  创建系统用户 特点:CentOS 6: ID<500,CentOS 7: ID<1000 默认shell为/sbin/nologin

-D  显示或更改默认设置  (默认值设定:/etc/default/useradd文件中)(此命令相当于cat /e    tc/default/useradd)

[[email protected] ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

该命令,可以查看到创建用户时候的各项默认值

例如更改其他用户默认的家目录和默认SHELL之类等等的参数就在这里面

/etc/skel    家目录文件的来源,在此文件夹里面新建文件的话,创建新用户的时候会连指定的新文件一并创建

/etc/login.defs  一些用户和组等创建的默认设置的文件

usermod [options] LOGIN 修改指定用户(跟useradd命令使用方法类似)

-u UID 更改用户的UID

-g GID 更改用户的GID

-G 附加组,配置-a 追加新的组,否则为覆盖

-s SHELL 更改用户的默认SHELL

-c 注释

-d home,跟-m同时用移动家目录数据

-m 移动家目录数据,跟-d同时用

-l 新的名字,把用户改名

-e 指定过期日期 YYYY-MM-DD

-f 设定非活动期限

-L 锁定指定用户,在/etc/shadow 里面加!    (同以上/etc/shadow的解释)

-U 解锁用户,将/etc/shadow 里面的!号拿掉    (同以上/etc/shadow的解释)

userdel [options] LOGIN 删除指定用户

-r 连同家目录和邮箱一起删除

用户组管理命令

groupadd [options] group 添加指定组

-g:指定用户的GID

groupmod [options] GROUP 修改指定组

-g: 修改组的GID

-n: 修改组的组名

groupdel [options] GROUP 删除指定组

groupmems -a user_name | -d user_name | [-g group_name] | -l | -p  (CentOS 7才有此命令)

-l -g 用户名: 查看指定用户名组下面还有哪些用户属于此组

-a    要增加的组 -g 用户:   增加附加组

切换用户或以其他用户身份执行命令

切换用户的方式:

su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录

su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

root su至其他用户无须密码;非root用户切换时需要密码

换个身份执行命令:

su [-] UserName-c ‘COMMAND‘

选项:-l --login:

su -l UserName相当于su-UserName

查看用户相关的ID信息

id [OPTION]... [USER]

-u: 查看用户的UID

-g: 查看用户的GID

-G: 查看用户的Groups

-n: 查看用户的Name

getent  passwd,shadow,gourp,gshadow  USERNAME/GROUPNAME

直接查看指定用户/组里面的passwd,shadow,gourp,gshadow文件里面的内容

其他命令总结:

chsh:修改默认的shell

chfn:修改用户注释

vipw:使用vim来编辑passwd文件

vigr:使用vim来编辑group文件

pwconv:pwconv命令用来开启用户的投影密码

pwunconv:pwconv命令用来关闭用户的投影密码

Linux系统里的用户和群组密码,分别存放在名称为passwd和group的文件中, 这两个文件位于/etc目录下。因系统运作所需,任何人都得以读取它们,造成安全上的破绽。投影密码将文件内的密码改存在/etc目录下的shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为"x"字符,有效的强化了系统的安全性。

openssl rand base64 10  随机生成10位数

批量增加用户和改密码

newusers FILE(有格式的文件)  批量加用户  文件格式  /etc/passwd 文件的格式 root:x:0:0::/root:/bin/bash

ex. newusers user.txt

chpasswd FILE (有格式的文件) 批量改密码   USERNAME:PASSWORD

ex. cat p.txt |chpasswd

注意,按照以上步骤的方法批量添加完用户和密码以后,这些用户的家目录里面并没有配置,此时需要我们手动把这里面的配置复制到它们的家目录里面

/etc/skel 这个文件甲下面的文件是关于用户初始配置里面的变量文件之类

cp -r /etc/skel/.[^.]* /home/USERNAME

时间: 2024-10-10 20:32:44

8.1_Linux管道的使用和用户管理的相关文章

003-文本处理、排序、统计及bash特性、用户组权限、用户管理配置文件

l  1.文本处理命令 1.)cat(concatenate):连接并显示 tac:倒序显示文件 -n(number):显示行号 -E(show-ends):显示行结束符 2.)more.less:分屏显示 more: 向后翻,翻到尾部退出 less: 与打开man使用相同 3.)head:查看前n行 Tail:查看后n行 -n(lines):指定显示n行 tail -f: 查看文件尾部,不退出,等待显示后续追加至此文件的新内容: 4.)cut:文本剪切 -d(delimiter):指定字段分隔

Linux运维六:用户管理及用户权限设置

Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和各自的口令.用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录. 实现用户账号的管理,要完成的工作主要有如下几个方面: · 用户账号的添加.删除与修改. ·

用户管理和权限管理

用户管理和权限管理 用户账号:用户.组 /etc/ passwd用户账号家目录属性 shadow用户密码和使用期限 group组账号家目录属性 gshadow组密码和使用期限 Linux用户 UID:0-65535(一般0-60000) 管理员:0 系统用户 centOS6:1-499 centOS7:1-999 登录用户 centOS6:500---60000 centOS7:1000---60000 /etc/shadow 加密与解密 加密就是将明文加密到密文 解密就是将密文还原到明文 破解

linux云自动化运维基础知识5.6(用户管理及文件权限)

用户理解用户就是系统使用者的身份在系统中用户存储为若干窜字符+若干个系统配置文件用户信息涉及到的系统配置文件:/etc/passwd        ###用户信息用户:密码:uid:gid:说明:家目录:用户使用的shell/etc/shadow        ###用户认证信息用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日/etc/group        ###组信息 组名称:组密码:组id:附加组成员 /etc/gshadow        ###

04_01 Linux用户管理命令详解(下)

用户管理: useradd [option] USERNAME -u UID USERNAME -g GID -G GID,...(多个附加组 逗号隔开) -c "COMMENT" 指定注释信息 -d /path/to/somedirectory 指定某个目录 -s SHELL   指定shell的目录路径 -m -k 强行复制bash的配置文件 默认是复制过去的 -M 不给创建家目录 -r 添加一个系统用户 1-499 系统用户 不能登陆系统 没有家目录 /etc/skel 个人的b

Linux用户管理命令详解之二

Linux下常用用户管理命令有:useradd.userdel.usermod.passwd.chsh.finger.id.chage 4.改变用户的shell 命令:chsh 语法:chsh [-s shell] [-l] [-u] [-v] [username] 选项: -s:改变当前shell -l:显示/etc/shells目录下的shell 说明:这是用来改变使用者自己的 shell 的指令!由于这个档案能够改变 /etc/passwd 的内容,所以他的预设属性就有SUID的属性了!通

5,用户管理,权限管理

用户管理文件及介绍: 当 一台 计算机 被 多个 人 使用 时, 为了 保留 这些 人 之间 的 隐私, 所以 提出 了 "用户" 这个 概念, 不同 用户 之间 的 访问 是 需要 一些 权限 的, 这 可以 很好 的 保护 用户 之间 的 隐私, 而 有些 情况 下, 人们 希望 可以 共享 一些 文件, 多以 就 提出 了 "组" 这个 概念, 人们 可以 把 一些 用户 规划 成 一个 组, 以 方便 的 共享 某一类 问题, 所以, 组 也 可以 认为 是

Linux 入门学习之用户管理

Linux入门之用户管理 linux用户进行访问一般需要认证.授权.审计,其中linux提供了很多的相关命令和相关文件来供使用者分层管理. 用户分类 user 按权限划分: 管理员:root uid为0 普通用户: 系统用户:uid:1-499(centos6)  uid:1-999(centos7) 特性:1.用来运行特定进程的一种身份 2.对守护进程获取资源进行分配 3.不需要登录 登录用户:uid:500+(centos6)  uid:1000+(centos7) 用来登录系统的普通用户

Linux系统管理之用户管理

Linux是个多用户多任务的分时操作系统,所有要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也能帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和用户口令.用户在登录时键入正确的用户名和口令后,才能进入系统和自己的主目录.实现用户账号的管理,要完成的工作主要有如下几个方面: 用户管理,包括用户的添加.删除.修改 用户组的管理,包括用户组的