1、显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度字符的文件或目录。

[qiuhom@test ~]$ls -d /etc/[^[:alpha:]][[:alpha:]]*
ls: cannot access /etc/[^[:alpha:]][[:alpha:]]*: No such file or directory
[qiuhom@test ~]$ls
11ttest 2test 5aaa abc bcd _dd dir1 dir_3 _test
2abc 3test aaa bbb ccc ddd dir2 eeeff
[qiuhom@test ~]$ls -d ./[^[:alpha:]][[:alpha:]]*
./2abc ./2test ./3test ./5aaa ./_dd ./_test

  说明:在/etc下没有找到满足条件的文件或目录,为了验证命令的正确性,在当前所在目录下新建了一些测试文件。

2、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

[qiuhom@test ~]$ls /tmp/mytest1
ls: cannot access /tmp/mytest1: No such file or directory
[qiuhom@test ~]$mkdir /tmp/mytest1
[qiuhom@test ~]$ls /tmp/mytest1
[qiuhom@test ~]$ls -d /etc/p*[^[:digit:]]
/etc/pam.d /etc/pki /etc/popt.d /etc/prelink.conf.d /etc/profile.d
/etc/passwd /etc/plymouth /etc/postfix /etc/printcap /etc/protocols
/etc/passwd- /etc/pm /etc/ppp /etc/profile /etc/python
[qiuhom@test ~]$sudo cp -a /etc/p*[^[:digit:]] /tmp/mytest1/
[qiuhom@test ~]$ls /tmp/mytest1/
pam.d passwd- plymouth popt.d ppp printcap profile.d python
passwd pki pm postfix prelink.conf.d profile protocols
[qiuhom@test ~]$

  说明:复制目录必须加-r选项。由于本人用的是普通用户,所有复制自己没有权限的文件需要加sudo临时用root身份来复制文件,-a表示复制时保留文件的属性,比如权限所有者所属组等。

3、将/etc/issue文件的内容转换为大写后保存至/tmp/issue.out文件中

[qiuhom@test ~]$cat /etc/issue
\S
Kernel \r on an \m [qiuhom@test ~]$cat /etc/issue|tr '[a-z]' '[A-Z]'
\S
KERNEL \R ON AN \M [qiuhom@test ~]$cat /etc/issue|tr '[a-z]' '[A-Z]' > /tmp/issue.out
[qiuhom@test ~]$cat /tmp/issue.out
\S
KERNEL \R ON AN \M [qiuhom@test ~]$ 

4、总结描述用户和组管理类命令的使用方法并完成以下练习:

  (1)、创建组distro,其GID为2019;

[root@test test]#groupadd -g 2019 distro
[root@test test]#tail -1 /etc/group
distro:x:2019:
[root@test test]#

  说明:-g指定创建组的gid

  (2)、创建用户mandriva,其ID号为1009;基本组为distro;

[root@test test]#useradd -u 1009 -g distro mandriva
[root@test test]#tail -1 /etc/passwd
mandriva:x:1009:2019::/home/mandriva:/bin/bash
[root@test test]#tail -1 /etc/group
distro:x:2019:
[root@test test]#id -u mandriva
1009
[root@test test]#id -g mandriva
2019
[root@test test]#id -ng mandriva
distro
[root@test test]#id -nu mandriva
mandriva
[root@test test]#

  说明:useradd -u 选项是指定创建用户的uid -g 是指定用户基本组(可以说组名或gid),如果不指定,则默认会创建一个和用户名同名的组,并将其组指定为该用户的基本组,id -u 查看指定用户的uid,id -g查看指定用户组id, -nu是显示用户名,-ng 显示用户组名 ,若不指定用户将查看当前用户的信息。

  (3)、创建用户megeia,其ID号为1100,家目录为/home/linux;

[root@test test]#useradd -u 1100 -d /home/linux megeia
[root@test test]#getent passwd megeia
megeia:x:1100:1100::/home/linux:/bin/bash
[root@test test]#

  说明:-d 指定用户家目录

  (4)、给用户megeia添加密码,密码为mageedu,并设置用户密码7天后过期;

[root@test test]#echo "mageedu"|passwd --stdin megeia
Changing password for user megeia.
passwd: all authentication tokens updated successfully.
[root@test test]#chage -l megeia
Last password change : Oct 25, 2019
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
[root@test test]#chage -M 7 megeia
[root@test test]#chage -l megeia
Last password change : Oct 25, 2019
Password expires : Nov 01, 2019
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 7
Number of days of warning before password expires : 7
[root@test test]#

  说明:给用户添加密码的方式有两种,第一种就是用root身份 用命令passwd加用户名来修改或者切换到该用户下用passwd命令修改,这种修改方式是交互式修改。第二中就是非交换式修改,以上就是第二种。chage 命令是可以查看用户帐户信息,其中-l表示查看用户的账号详情,-M 指定最大修改密码天数,也就是说从修改密码当天算多少天后修改密码,若不修改那么密码将会过期。

  (5)、删除mandriva用户,但保留其家目录;

[root@test test]#getent passwd mandriva
mandriva:x:1009:2019::/home/mandriva:/bin/bash
[root@test test]#ll /home/mandriva -d
drwx------ 2 mandriva distro 4096 Oct 25 11:38 /home/mandriva
[root@test test]#userdel mandriva
[root@test test]#ll /home/mandriva -d
drwx------ 2 1009 distro 4096 Oct 25 11:38 /home/mandriva
[root@test test]#

  说明:getent 是一个查询工具,getent passwd mandriva 命令的作用是在/etc/passwd 文件中查找mandriva用户的信息,查到就显示出来,若不指定后面的用户,这打印显示/etc/passwd的全部内容。uesrdel 表示删除目录,该命令默认只删除用户的账号信息,不会去删除用户的家目录,和邮件目录。若要想删除可以用 -r选项。

  (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;

[root@test test]#getent group peguin
[root@test test]#groupadd peguin
[root@test test]#getent group peguin
peguin:x:2020:
[root@test test]#useradd -u 2002 -g distro -G peguin slackware
[root@test test]#id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin)

  说明:useradd -G 指定用户附加组列表

  (7)、修改slackware的默认shell为/bin/tcsh;

[root@test test]#getent passwd slackware
slackware:x:2002:2019::/home/slackware:/bin/bash
[root@test test]#usermod -s /bin/tcsh slackware
[root@test test]#getent passwd slackware
slackware:x:2002:2019::/home/slackware:/bin/tcsh

  说明:usermod 命令主要作用 是修改用户的信息 其中-s 表示修改其用户的登录shell

  (8)、为用户slakware新增附加组admins;

[root@test test]#getent group admins
[root@test test]#groupadd admins
[root@test test]#getent group admins
admins:x:2021:
[root@test test]#usermod -aG admins slackware
[root@test test]#id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin),2021(admins)

  说明:usermod -aG 命令等同于 usermod -a -G  其中-a 选项表示追加,-G的作用是指定新的附加组列表, 两者合着一起用就表示 将-G指定的附加组列表追加到当前已有的用户附加组后边,若不指定-a 那么-G指定的附加组列表将会覆盖原有用户的附加组列表。

以上用到了几个命令,这里常用选项做个总结:

useradd:添加用户

  用法:useradd [选项] 用户名

  常用选项:

    -d, --home-dir HOME_DIR 新账户的主目录

    -c, --comment COMMENT 新账户的 GECOS 字段

    -g, --gid GROUP 新账户主组的名称或 ID

    -G, --groups GROUPS 新账户的附加组列表   

    -m, --create-home 创建用户的主目录

    -M, --no-create-home 不创建用户的主目录

    -r, --system 创建一个系统账户  

    -s, --shell SHELL 新账户的登录 shell

    -u, --uid UID 新账户的用户 ID

usermod:修改用户

  用法:usermod [选项] 用户名

  常用选项:

    -c, --comment 注释 GECOS 字段的新值

    -d, --home HOME_DIR 用户的新主目录
    -e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
    -f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
    -g, --gid GROUP 强制使用 GROUP 为新主组
    -G, --groups GROUPS 新的附加组列表 GROUPS
    -a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,并不从其它组中删除此用户
    -l, --login LOGIN 新的登录名称
    -L, --lock 锁定用户帐号
    -m, --move-home  将家目录内容移至新位置 (仅与 -d 一起使用)
    -o, --non-unique 允许使用重复的(非唯一的) UID
    -p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
    -s, --shell SHELL 该用户帐号的新登录 shell
    -u, --uid UID 用户帐号的新 UID
    -U, --unlock 解锁用户帐号

usersdel:删除用户

  用法:userdel [选项] 用户名

  常用选项:

    -r:连同用户家目录,邮件目录一并删除

groupadd:添加用户组

  用法:groupadd [选项] 组名

  常用选项:

    -g, --gid GID 指定组ID

    -p, --password PASSWORD 给组设置密码

    -r, --system 指定组为系统组

passwd:设置用户密码或修改用户密码

  用法:passwd [选项] 用户名

  常用选项:

    --stdin  从标准输入读取令牌(只有root才能进行此操作)

    -l,--lock 锁定用户(有root才能进行此操作)

    -u, --unlock 解锁用户(有root才能进行此操作)
    -S, --status            报告已命名帐号的密码状态(有root才能进行此操作)

chage:修改账号和密码都有效期限

  用法:chage [选项] 用户名

  常用选项:

    -d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”

    -E, --expiredate 过期日期 将帐户过期时间设为“过期日期”

    -I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态(大写i)

    -l, --list 显示帐户年龄信息(小写L)

    -m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”

    -M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”

    -R, --root CHROOT_DIR chroot 到的目录

    -W, --warndays 警告天数 将过期警告天数设为“警告天数

更多用户和用户组管理类命令总结请看:https://www.cnblogs.com/qiuhom-1874/p/11638122.html

Linux命令实战(五)的更多相关文章

  1. Linux命令实战(一)

    1.pwd(printing working directory)打印当前工作目录路径 [root@test sysconfig]# pwd /etc/sysconfig 2.ls(list)列出当前 ...

  2. Linux命令(五)创建文件或修改文件时间 touch

    Linux中 touch 命令可以改变文档或目录时间, 包括存取时间或更改时间, 也可以用于创建新文件. 命令格式: touch [选项] [参数] 选项: -a   只更改文件的读取时间. -m   ...

  3. Linux命令(五)——磁盘操作及文件系统的管理

    文件系统是所有文件夹和文件的基础,磁盘是文件系统的基础,文件系统以磁盘为基础存储文件. 一.linux文件系统类型 1.ext扩展文件系统/ext2二级扩展文件系统/ext3日志式文件系统(默认) 2 ...

  4. Linux命令实战(四)

    1.Linux上的文件管理类命令都有哪些,其常用的使用方法及相关示例演示. 文件或目录的新建 touch :将每个文件的访问时间和修改时间修改为当前时间.若文件不存在将会创建为空文件,除非使用-c或- ...

  5. Linux命令实战(三)

    1.file检查并显示文件类型(determine file type) 一般用法就是file 后面接要查看的文件 可以一个或多个 [root@test test]# ll total 140 -rw ...

  6. Linux命令实战(二)

    1.printf格式化输出(format and print data) 语法:printf(选项)(参数) 参数 输出格式:指定数据输出时的格式: 输出字符串:指定要输出的数据. 格式替代符 %c ...

  7. Linux 命令实战

    命令登录 ssh  UserName@RemoteIP ssh  seemmo@192.168.0.1 统计文件.目录的数量 统计当前目录下文件数量:ls  -l  |  grep  "^- ...

  8. Linux命令(五)之service服务查找、启动/停止等相关操作

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  9. Linux命令(五)免密码远程登录和配置别名

    1. ssh-keygen 2. ssh-copy-id -p port user@remote .ssh中建立并编辑config文件 原来需要 ssh -p ubuntu@xxx.xxx.xxx 现 ...

随机推荐

  1. Java中的接口(什么是接口,接口的好处,具体的使用)

    1.什么是接口? 官方概述: 在java语言中,接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义. 这种技术主要用来描述类具有什么功能,而并不给出每个类的具体实现. Bala ...

  2. [Luogu3069][USACO13JAN]牛的阵容Cow Lineup

    题目描述 Farmer John's N cows (1 <= N <= 100,000) are lined up in a row. Each cow is identified by ...

  3. POJ 1753 Flip Game(状态压缩+BFS)

    题目网址:http://poj.org/problem?id=1753 题目: Flip Game Description Flip game is played on a rectangular 4 ...

  4. VoodooPad Mac笔记本

    VoodooPad Mac笔记本 VoodooPad是记录您的笔记和想法的地方.想法,图片,列表,密码和妈妈的苹果派食谱.包括您需要跟踪和组织的所有内容,VoodooPad会与您一起成长而不会妨碍您. ...

  5. Python爬取散文网散文

    配置python 2.7 bs4 requests 安装 用pip进行安装 sudo pip install bs4 sudo pip install requests 简要说明一下bs4的使用因为是 ...

  6. Java中常用的四种线程池

    在Java中使用线程池,可以用ThreadPoolExecutor的构造函数直接创建出线程池实例,如何使用参见之前的文章Java线程池构造参数详解.不过,在Executors类中,为我们提供了常用线程 ...

  7. 百万年薪python之路 -- while循环

    day02 1.while循环 -- while关键字 while 空格 条件 冒号 缩进 循环体 while 5>4: print("Hello World!") 数字中非 ...

  8. Java8系列 (二) Stream流

    概述 Stream流是Java8新引入的一个特性, 它允许你以声明性方式处理数据集合, 而不是像以前的指令式编程那样需要编写具体怎么实现. 比如炒菜, 用指令式编程需要编写具体的实现 配菜(); 热锅 ...

  9. 用最简单的方式学Python单链表

    Python 实现单链表 在本博客中,我们介绍单链表这种数据结构,链表结构为基于数组的序列提供了另一种选择(例如Python列表). 基于数组的序列和链表都能够对其中的元素保持一定得顺序,但采用的方式 ...

  10. Apache源码包在LINUX(CENTOS6.8)中的安装(出现问题及解决)

    任务:在CENT6.8系统中安装Apache(版本为:httpd-2.4.41) 前提:由于源码包必须先编译后安装,所以必须先安装编译器:gcc 理论步骤: 1.检测gcc软件包,如果不存在则进行安装 ...