Linux命令实践(五)

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 
 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 

原文地址:https://www.cnblogs.com/qiuhom-1874/p/11736555.html