文本处理工具命令使用以及文件权限管理

一 sort uniq wc cut tr 等文本处理工具的基本用法

1.  通过who命令查看当前登录了哪些用户,并通过uniq或sort -u命令将重复的行只显示一次
[root@Linuxprobe ~]# who | cut -d' ' -f1 | sort -u  目前查看系统有两个用户登录
harrycai
root
[root@Linuxprobe ~]# who | cut -d' ' -f1 |  uniq使用uniq命令
harrycai 
root
2 使用last命令可以查到登录系统用户顺序,取出第一个为最后一个登录到系统的用户
[root@Linuxprobe ~]# last | head -n1   取出最后一个登录系统的用户为root
root pts/210.127.69.23 Sun Aug 13 10:22   still logged in  
3 统计出现相同的行可以使用uniq -c 选项
[root@Linuxprobe ~]# cut -d: -f7 /etc/passwd | sort | uniq -c | sort -n  查看统计结果为noloin最多
  1 /bin/nologin
  1 /bin/sync
  1 /sbin/halt
  1 /sbin/shutdown
  9 /bin/bash
 37 /sbin/nologin

4 先使用sort命令-t指定分隔符-k指定为第三段的UID进行排序,再用tail命令取出UID最大的后10行并使用tr命令转换成大写输出重定向至/tmp/maxusers.txt文件

[root@Linuxprobe ~]# sort -t: -k3 -n  /etc/passwd | tail -n10 | tr 'a-z' 'A-Z' > /tmp/maxusers.txt 
[root@Linuxprobe ~]# cat /tmp/maxusers.txt 
HARRYCAI:X:1000:1000:HARRY.CAI:/HOME/HARRYCAI:/BIN/BASH
STUDENT:X:1001:1001::/HOME/STUDENT:/BIN/BASH
BASH:X:1002:1002::/HOME/BASH:/BIN/BASH
NOLOGIN:X:1003:1003::/HOME/NOLOGIN:/BIN/NOLOGIN
USER1:X:1004:1004::/HOME/USER1:/BIN/BASH
USER2:X:1005:1005::/HOME/USER2:/BIN/BASH
USER3:X:1006:1006::/HOME/USER3:/BIN/BASH
JERRY:X:1007:1007::/HOME/JERRY:/BIN/BASH
SAM:X:1008:1008::/HOME/SAM:/BIN/BASH
NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN

5 使用cut命令取出当前主机ip地址

[root@Linuxprobe ~]# ifconfig | head -n2 | tail -1 | cut -d" " -f10
10.127.69.19

6 取出/etc下所有已.conf结尾的文件转换成大写后保存至/tmp/.comf
[root@Linuxprobe ~]# ls /etc/*.conf | tr 'a-z' "A-Z" > /tmp/.conf
[root@Linuxprobe ~]# cat /tmp/.conf 
/ETC/ASOUND.CONF
/ETC/BRLTTY.CONF
/ETC/CGCONFIG.CONF
................. 略

7 统计/var目录下所有目录以及文件数量
[root@Linuxprobe ~]# ls /var/ | wc -l
22

8 对/etc/group 文件第三个字段进行排序并显示最小的10个
[root@Linuxprobe ~]# sort -t: -k3 -n /etc/group | head -n10

9 将/etc/fastb和/etc/issue文件合并为/tmp/etc.test
[root@Linuxprobe ~]# cat /etc/fstab >> /tmp/etc.test 可使用追加输出重定向至 /tmp/etc.test
[root@Linuxprobe ~]# cat /etc/issue >> /tmp/etc.test

二 文件权限管理


(一) 用户和组

Linux系统中用户的类别可分为管理用户,系统用户和普通用户三类

  • 管理用户:拥有最高权限的root账号,为避免误操作建议尽量使用普通用户登录系统 UID 0
  • 系统用户: 系统运行某些服务类进程为了避免进程被劫持致使root账号被泄露,一般在运行服务类进程时建议使用非管理员账号运行,因此通常会创建多个普通用户,这类用户只以该身份运行某些服务类进程一般不会登陆系统 1-499(CentOS6) 1-999(CentOS7)
  • 普通用户: 一般普通用户 500-60000 (CentOS6) 1000-60000 (CentOS7) 同样的Linux也会分为管理组,系统组和登陆组

(二)权限管理

  • 一般基本权限可分为读,写和执行 rwx
  • 对于目录而言读权限表示可以ls查看目录的内容;写权限可以在目录中删除或创建目录或文件;执行权限表示可以cd至该目录
  • 对于文件而言读权限表示可以使用cat等命令查看文件内容;写权限表示可对内容进行修改;执行权限表示可以将文件启动一个进程
  • 文件安全上下文:
  • [root@Linuxprobe ~]# ls -l /etc/fstab
  • -rw-r–r–. 1 root root 483 Apr 13 23:51 /etc/fstab 第1位代表文件类型,其余9位每三位一组,第一组为用户权限,第二组为组权限,第三组为其它用户权限,root root 代表文件属主为root属组也为root

    1. 一个用户打开一个文件或目录或先去匹配文件的属主是否为此用户,如果是则匹配用户权限,如果不是则进入2
    2. 用户会匹配自己是否是文件属组的用户,如果是则匹配组权限位,如果不是则使用其它用户权限位

(三) 特殊权限

Linux系统中还有SUID,SGID和STICKY三个特殊权限位

  1. SUID:默认情况一下用户打开一个进程,进程的属主为其发起者,因此以其发起者的身份运行。如果一个程序用于SUID权限,那么进程的属主将会是该文件的属主而不是发起者的身份运行。

    • 如果属组原本有执行权限,文件属主权限位显示为小写s,否则为大写S
    • 管理文件的SUID权限: chmod u+|-s FILE
  2. SGID:当一个目录拥有SGID权限并且该目录属组拥有写权限,那么在此目录下创建文件的属组为此目录的属组而不是该用户的基本组
  3. STICKY:对于属组或全局可写的目录,组内的所有任务或系统上的所有用户对此目录中都能创建或删除文件;如果为此类目录设置sticky权限,则每个用户能创建新文件并且只能删除属主为自己的文件

四 用户及权限管理命令用法

1 组管理命令
groupadd命令:  groupadd [options] group  创建一个组
 -g GID:指定GID: 默认是上一个组的GID
 -r  创建系统组:
groupmod命令: group - user group file
 -g GID:指定GID
 2 用户管理命令
useradd命令:   useradd [options] LOGIN 创建一个用户
 -u 指定UID
 -g GROUP  指定基本组,此组需要事先存在
 -G GROUP1[,GROUP2,...[,GROUPN]]]  指定附加组
 -c 用户注释信息
 -d 以指定的路径为用户的家目录:通过复制/etc/skel此目录并重新命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境配置文件
 -s 指定用户的默认shell,可用的所有shell列表为/etc/shells 文件、
 -M 不为用户创建家目录
 -D 显示创建用户的默认配置
注意:创建用户时的诸多默认配置文件/etc/login.defs
userdel命令:用户删除
 -r 删除用户一并删除家目录
passwd命令: passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays]  [-S] [--stdin] [username]
   (1) passwd:修改用户自己的密码
   (2) passwd username: 修改指定用户密码
-l,-u:锁定和解锁用户
 -d :删除一个用户的密码
 -e date:过期期限,日期
 -i  days:非活动期限
 -n DAYS:密码使用的最短使用期限
 -x DAYS:密码的最长使用期限
 -w DAYS:密码警告时间
3 文件权限修改命令

权限管理命令:
chmod命令:  chmod [OPTION]... MODE[,MODE]... FILE...   
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE..
MODE表示法:
   赋权表示法 u= | g= | o= | a=
   授权表示法 u+,u- | g+,g- | o+, o-
chmod --reference=/etc/fstab /var/tmp/harry.cai/test  根据其他文件的权限修改
选项:
 -R 递归修改

从属关系选项管理命令:
   chown命令: chown [OPTION]... [OWNER][:[GROUP]] FILE...
   chown [OPTION]... --reference=RFILE FILE...
   -R 递归修改
umask:文件权限反向掩码,遮罩码
 文件:666 - umask 
 目录:777 - umask
之所以文件用666去减,表示文件默认不能拥有执行权限,如果减得的结果中有执行权限,则需要将其加1

三 用户及权限管理练习

1 [root@Linuxprobe ~]# groupadd distro -g 2016  创建组distro,GID2016
 2 [root@Linuxprobe ~]# useradd mandriva -u 1005 -g distro 创建用户mandriva,UID1005并设置基本组为distro
 3 [root@Linuxprobe ~]# useradd mageia -u 1110 -d /home/linux 创建用户mageia,UID1100家目录指定为/hoem/linux
 4 [root@Linuxprobe linu]# echo "mageia" | passwd --stdin mageia 给用户mageia添加密码为mageia
   Changing password for user mageia.
   passwd: all authentication tokens updated successfully.
 5 [root@Linuxprobe linu]# userdel mandriva   删除用户mandria
 6 [root@Linuxprobe linu]# useradd slackware -u 2002 -g distro -G peguin 添加用户slackware UID为2002,基本组为distro,附加组peguin
 7 [root@Linuxprobe linu]# usermod -s /bin/tcsh slackware 将slackware的默认shell修改为tcsh
 8 [root@Linuxprobe linu]# usermod -G admins slackware将slackware添加到admins附加组
 9 [root@Linuxprobe linu]# cp -r /etc/skel/ /home/tuser1  复制/etc/skel到/home/tuser1
   [root@Linuxprobe linu]# chmod -R 700 /home/tuser1/ 目录以及目录内文件属组和其他用户均没有任何权限
10 [root@Linuxprobe linu]# chown :hadoop /etc/group   将/etc/group属组改为hadoo
11 [root@Linuxprobe home]# install -m 700 -d /etc/skel/ /home/hadoop 复制/etc/skel到 /home/hadopp并修改权限为700
12 [root@Linuxprobe home]# chown hadoop:hadoop /home/hadoop/ 将/home/hadoop 属组和属主均改为hadoop

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

(0)
N27_CaiShuangN27_CaiShuang
上一篇 2017-08-13 17:55
下一篇 2017-08-13 19:01

相关推荐

  • 利用heartbeat v2版搭建高可用mysql

    一、实验环境  1)实验图        2)同步时间;确保可以使用主机名通信;确保可以使用ssh秘钥方式进行彼此登录;由于是两台设备,需要仲裁;  确保可以使用主机名通信 web1修改hosts文件如下: 172.16.2.12 SQL1.linux.com SQL1 172.…

    Linux干货 2015-07-08
  • 由Linux中一个小问题引发的思考

    一、一个小问题 1、在学习Linux中我们经常会遇到很多有趣的小问题,今天笔者就遇到了一个很有意思的小问题,现在分享给大家:      “如何在本机字符终端登陆时,除显示原有信息外,再显示当前终端号,时间和主机名?” 2、实现方法如下:      输入vim /etc/…

    2017-07-16
  • Linux网络功能协议介绍(二)

      上个内容中,我们知道了只要是本地通信得广播,而广播不是逻辑(IP)地址对应的MAC地址,所以主要是将逻辑地址转换成目标地址,这叫地址解析称为ARP,还有一种是反向解析RARP,都是在本地网络中完成的,逻辑IP地址分为两个阶段,前一段分为网络地址,后一段分为主机地址,如何判定?用子网掩码用来判断那一部分是网络位,那一部分是主机位,最重要…

    Linux干货 2016-11-25
  • Linux终端类型

      终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。   在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:   1、串行端口终端 /dev/ttySn     串行端口终端是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个…

    Linux干货 2016-10-14
  • Linux基础知识之逻辑卷管理器(LVM)

    逻辑卷管理器(LVM)        允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小     允许在多个物理设备间重新组织文件系统将设备指定为物理卷     用一个或者多个物理卷来创建一个卷组  &n…

    Linux干货 2016-09-01
  • 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

    1.概述 类中的面向对象编程封装应用逻辑。类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态。单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合。 集合不一定是均一的。图形用户界面框架中的 Window 对象可以收集任意数量的控制对象 - Menu、Slider 和 Button。并且,集合的实现可以有多种方式:PHP 数字是一个集…

    Linux干货 2015-07-19

评论列表(1条)

  • 马哥教育
    马哥教育 2017-08-20 19:10

    一开始的作业比较简单,但都是比较重要的基础,掌握扎实非常的必要,这次作业完成的非常好,再接再励。