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 \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才能进行此操作)
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