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

一 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
下一篇 2017-08-13

相关推荐

  • 网络接口bonding的设置

    网络接口bonding的设置 一、什么是Bond 就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 二、Bonding的工作模式 Bond有七种策略模式(mode),其实指的是在传输数据包的时候,如何从已经…

    Linux干货 2016-09-06
  • CentOS系统启动流程、selinux、Systemd剖析

    交互式登录配置文件读取顺序: /etc/profile –> /etc/profile.d/*.sh –> ~/.bash_profile –> ~/.bashrc –> /etc/bashrc 非交互式登录配置文件读取顺序: ~/.bashrc –> /etc/bas…

    Linux干货 2018-03-04
  • centos6的启动流程和grub实验

    一.centos的启动流程         post–mbr grub 1stage–stage1.5–stage 2 /boot/grub—/boot/grub/grub.conf —kernel /vmlinuz.XXX root=— /boo…

    2017-07-08
  • 第四周练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限 # cp -a /etc/skel /home/tuser1 # chmod -R go= /home/tuser1 2、编辑/etc/group文件,添加组hadoop #vim /etc/group #hadoop:x:5…

    Linux干货 2017-10-21
  • 文本处理工具sed习题

    1、删除/etc/grub2.cfg文件中所有以空白开头的行行首空白字符 [root@wzc date]# sed -n 's/^[[:space:]]\+//p' /etc/grub2.cfg load_env set default="${next_entry}&q…

    Linux干货 2016-08-12

评论列表(1条)

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

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