美文网首页Python全栈工程师
3.4 Linux管道和用户管理

3.4 Linux管道和用户管理

作者: BeautifulSoulpy | 来源:发表于2019-06-28 09:18 被阅读4次

    当你把希望放在别人身上时,你会选择等待;当你把希望放在自己身上时,你会选择奔跑。


    1. 管道

    Linux 管道使用竖线(|)连接多个命令,这被称为管道符;

    command1 | command2
    command1 | command2 [ | commandN... ]
    当在两个命令之间设置管道时,管道符|左边命令的输出就变成了右边命令的输入

    • 管道中的后一个命令是在子shell中执行的,而非当前shell
    使用 mysqldump(一个数据库备份程序)来备份一个叫做 wiki 的数据库:
    mysqldump -u root -p '123456' wiki > /tmp/wikidb.backup
    gzip -9 /tmp/wikidb.backup
    scp /tmp/wikidb.backup username@remote_ip:/backup/mysql/
    

    上述这组命令主要做了如下任务

    1. mysqldump 命令用于将名为 wike 的数据库备份到文件 /tmp/wikidb.backup;其中-u和-p选项分别指出数据库的用户名和密码。

    2. gzip 命令用于压缩较大的数据库文件以节省磁盘空间;其中-9表示最慢的压缩速度最好的压缩效果。

    3. scp 命令(secure copy,安全拷贝)用于将数据库备份文件复制到 IP 地址为 remote_ip 的备份服务器的 /backup/mysql/ 目录下。其中username是登录远程服务器的用户名,命令执行后需要输入密码。

    上述三个命令依次执行。然而,如果使用管道的话,你就可以将 mysqldump、gzip、ssh 命令相连接,这样就避免了创建临时文件 /tmp/wikidb.backup

    mysqldump -u root -p '123456' wiki | gzip -9 | ssh username@remote_ip "cat > /backup/wikidb.gz"
    
    1.1 文本处理命令: tr 转换

    echo "mageedu.com" | tr 'a-z' 'A-Z'
    tr -d 删除;

    cat 核心功能:连接文件显示标准输出;
    cat /etc/issue /etc/fstab

    tac 倒着显示;

    less分页查看: b下一页;g 文件底部查看

    2>&1 和 |& 错误输出防中止

    当既有标准输出又有错误输出的时候,标准输出是可以输入到后面命令的,错误输出是无法输入到后面命令。可以使用2>&1|&实现错误的也输入到后面命令。

    [root❄centos7 app]☭ ls /app /err | tr 'a-z' 'A-Z'
    ls: cannot access /err: No such file or directory
    /APP:
    F1
    ISSUE2
    ISSUE3
    
    [root❄centos7 app]☭ ls /app /err 2>&1 | tr 'a-z' 'A-Z'
    LS: CANNOT ACCESS /ERR: NO SUCH FILE OR DIRECTORY
    /APP:
    F1
    ISSUE2
    ISSUE3
    
    [root❄centos7 app]☭ ls /app /err |& tr 'a-z' 'A-Z'
    LS: CANNOT ACCESS /ERR: NO SUCH FILE OR DIRECTORY
    /APP:
    F1
    ISSUE2
    ISSUE3
    
    tee

    tee:read from standard input and write to standard output and files
    从标准输入读,写到标准输出文件。当然如果再跟一个管道,标准输出就输出到另外一个命令了。

    # 写到屏幕和文件/tmp/issue.tee
    [root❄centos7 ~]☭ cat /etc/issue | tee /app/issue.tee
    \S
    Kernel \r on an \m
    
    [root❄centos7 ~]☭ cat /app/issue.tee
    \S
    Kernel \r on an \m
    
    # 写到/tmp/issue.tee ,写到标准输出的通过管道又传递了一次
    [root❄centos7 ~]☭ cat /etc/issue | tee /tmp/issue.tee | tr 'a-z' 'A-Z'
    \S
    KERNEL \R ON AN \M
    

    2. 重定向和管道的区别

    重定向操作符>将命令与文件连接起来,用文件来接收命令的输出;
    管道符|将命令与命令连接起来,用第二个命令来接收第一个命令的输出。如下所示:
    command > file
    command1 | command1

    禁止用
    command1 > command2
    第一条命令将当前目录切换到了大多数程序所存放的目录
    第二条命令是告诉 Shell 用 ls 命令的输出重写文件 less
    /usr/bin 目录已经包含了名称为 less(less 程序)的文件,第二条命令用 ls 输出的文本重写了 less 程序,因此破坏了文件系统中的 less 程序

    3. 用户管理

    3.1 用户管理
    Linux系统中的用户分为3类,即普通用户、根用户、系统用户。

    普通用户是指所有使用Linux系统的真实用户,这类用户可以使用用户名及密码登录系统。Linux有着极为详细的权限设置,所以一般来说普通用户只能在其家目录、系统临时目录或其他经过授权的目录中操作,以及操作属于该用户的文件。通常普通用户的UID大于500,因为在添加普通用户时,系统默认用户ID从500开始编号。

    根用户也就是root用户,它的ID是0,也被称为超级用户,root账户拥有对系统的完全控制权:可以修改、删除任何文件,运行任何命令。所以root用户也是系统里面最具危险性的用户,root用户甚至可以在系统正常运行时删除所有文件系统,造成无法挽回的灾难。

    系统用户是指系统运行时必须有的用户,但并不是指真实的使用者。比如在RedHat或CentOS下运行网站服务时,需要使用系统用户apache来运行httpd进程,而运行MySQL数据库服务时,需要使用系统用户mysql来运行mysqld进程。在RedHat或CentOS下,系统用户的ID范围是1~499,1-999(centos7用户) 。

    我们拿出一个信息

    [root@Centos7 home]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    

    第一列root:用户名
    第二列x:密码标记位 有x说明root用户有密码
    第三列0:用户UID。UID规则 0表示root用户 1~499系统用户(伪用户)普通用户 500以后
    第四列0:用户组ID
    第五列root:描述信息
    第六列/root:用户所在的家目录
    第七列/bin/bash:用户登录默认使用的Shell

    3.2 用户和组的配置文件

    /etc/group文件

    Linux用户和组的主要配置文件:
    /etc/passwd : 用户及其属性信息(名称、UID、主组ID等)
    /etc/group : 组及其属性信息
    /etc/shadow : 用户密码及其相关属性
    /etc/gshadow : 组密码及其相关属性

    3.3 用户和组管理命令
    useradd、usermod、userddel、passwd、groupadd、groupmod、groupdel、id、su

    ##Linux用户和用户组的基本命令
    useradd -d 文件目录 用户    在某个文件目录添加一个用户
    usermod -c 备注信息 用户    给用户添加备注
    usermod -l 新用户 旧用    改变用户
    usermod -d 文件目录 用户  给用户指定新的文件目录
    useradd -g 用户组 用户       给用户组添加用户
    userdel 用户    删除用户(不删除用户存在目录)
    userdel -r 用户   删除用户及删除用户所在的文件目录
    touch/etc/nologin   在/etc下创建nologin,禁止普通用户的登陆服务器
    
    groupadd 用户组    创建一个用户组
    groupadd -g 888 用户组     创建一个888的用户组,指定用户组编号为888
    groupdel 用户组     删除用户组(删除用户组必须县删除组内用户)
    groupmod -n 新用户组 旧用户组     改变用户组名
    groupmod -g 编号 用户组     给用户组名指定特定编号
    
    passwd -l 用户    锁定用户操作
    passwd -u 用户    解锁用户
    passwd -d 用户    设置无密码登陆用户
    gpasswd -a  用户附加组(添加多个由,隔开)   给用户添加附加组
    newgrp  用户组  切换到附加组
    gpasswd -d   用户附加组    取消附加组
    useradd -g 主要组 -G 附加组       创建用户时指定它的主要组和附加组
    gpasswd 用户组      给用户组设置主密码
    
    
    whoami    显示当前登陆用户名
    id 用户   显示用户信息,用户编号,用户名,主要组编号及名称,附加组表
    groups 用户  显示用户所在的用户组
    chfn  用户   设置用户资料,依次输入用户资料
    finger 用户     显示用户详细资料   
    
    
    3.4 passwd

    passwd选项
    -d:删除密码,仅有系统管理者才能使用;
    -f:强制执行;
    -k:设置只有在密码过期失效后,方能更新;
    -l:锁住密码;
    -s:列出密码的相关信息,仅有系统管理者才能使用;
    -u:解开已上锁的帐号;

    以zcwyou用户为例

    [root@zcwyou ~]# passwd zcwyou
    Changing password for user zcwyou.
    New UNIX password: 这里输入新密码
    Retype new UNIX password: 再输入一次新密码
    passwd: all authentication tokens updated successfully. 表示更新成功。
    
    修改自己的密码
    [root@zcwyou ~]# passwd
    

    注意:如果是普通用户执行passwd只能修改自己的密码。如果新建用户后,要为新用户创建密码,则用passwd用户名,注意要以root用户的权限来创建。

    3.5 hash工具

    sha512sum 单向加密;提取数据的指纹;类似于md5值;
    原始数据一样,则结果一样;

    反破解机制:原始文件加杂质——加abc\1234...

    [dell@Centos7 ~]$ cat /etc/fstab | sha512sum
    b5fc8c6c5ca478fc0339f355ca96c22cc3c0a4075a096b031bb323ebf8becfb365cf3544947cd6024cf85890eb9def11f8e0d6d4abcc10f100852b0a35de1a05 
    

    相关文章

      网友评论

        本文标题:3.4 Linux管道和用户管理

        本文链接:https://www.haomeiwen.com/subject/hrijcctx.html