第二周作业提交

1、cp命令是用来将一个或多个源文件或者目录复制到指定的目的文件或目录
cp [选项] [参数]
cp 源文件 目标文件
cp -r 源目录 目标目录
cp -p 源文件 目标文件
cp -r a b c d e e一定是一个目录 abcd复制到e里边,多参数多选项
cp /etc/inittab . (.是指当前文件)
cp /etc/inittab a (把inittab复制过来改名为a)
-i 若目标文件已存在,则会询问是否覆盖

源/目标 不存在 存在且为文件 存在且为目录
一个文件 新建DEST,并将SRC填充到DEST中 直接填充建广义用-i选项 DEST中新建 与SRC相同的文件名,并将内容填充
多个文件 error error 在DEST新建与原文件相同名字的文件,并将内容填充
目录需使用-r 创建指定DEST同名目录,复制SRC目录中所有文件到EST下 error Te 在DEST下新建一原目录同名的目录,并将SRC中的内容复制至新目录中

mv 源文件与目标文件在同一个目录,它的功能是重命名。move

-i 若存在同名文件,则向用户询问是否覆盖
-f 覆盖已有文件时,不进行任何提示
-b 当文件存在时,覆盖前为其创建一个备份
-u当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作

MV动作/目标情况 同目录动作 不同目录
目标存在 重命名 提示是否overwrite
目标不存在 ------ 移动

2、
tr的英文全称是“ transform ”,即转换的意思。

Linux给程序提供三种I/O设备
标准输入 -0 默认接受来自终端窗口的输入
标准输出 -1 默认输出到终端窗口
标准错误 -2 默认输出到终端窗口

标准输出范例:
hostname 1> /dev/pts/1 在当前pts0终端输入该命令,输出到pts1终端
在使用 > 进行输出重定向的时候,后一次的输出会覆盖前一次的输出,如果我们不想进行覆盖,就使用 >> 进行追加重定向
标准错误范例:
xxx 2> /data/f1.log 将执行xxx的错误输出命令放到/data/f1.log下
标准输入范例:
[root@nodex data]# seq -s+ 1 100 > bc.log
[root@nodex data]# cat bc.log
1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100
[root@nodex data]# bc < bc.log
5050
[root@nodex data]#

3、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
方法一:
[root@nodex data]# cat /etc/issue | tr '[:lower:]' '[:upper:]' > /tmp/issue.out
方法二:
[root@nodex data]# cat /etc/issue | tr 'a-z' 'A-Z' > /tmp/issue.out1
[root@nodex data]# cat /tmp/issue.out1
\S
KERNEL \R ON AN \M

[root@nodex data]# cat /tmp/issue.out
\S
KERNEL \R ON AN \M

[root@nodex data]#

4、
4、请总结描述用户和组管理类命令的使用方法并完成以下练习:
(1)、创建组distro,其GID为2019;
[root@nodex data]# date
Tue May 4 19:28:43 CST 2021
[root@nodex data]# groupadd -g 2019 distro

(2)、创建用户mandriva, 其ID号为1005;基本组为distro;
[root@nodex data]# useradd -u 1005 -g distro mandriva
[root@nodex data]# id mandriva
uid=1005(mandriva) gid=2019(distro) groups=2019(distro)
[root@nodex data]#

(3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
[root@nodex data]# mkdir -p /home/linux
[root@nodex data]# useradd -u 1100 -d /home/linux mageia
[root@nodex ~]# cat /etc/passwd | grep mageia
mageia:x:1100:1100::/home/linux:/bin/bash
[root@nodex ~]#

(4)、给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过
[root@nodex ~]# echo mageedu | passwd --stdin mageia
Changing password for user mageia.
passwd: all authentication tokens updated successfully.
[root@nodex ~]#

两种方式改密码过期时间:
-M 密码保持有效的最大天数
chage -M 7 megeia
-x 指定口令最长存活期
passwd -x 7 megeia
[root@nodex ~]# chage -M 7 mageia
[root@nodex ~]# cat /etc/shadow | grep mageia
mageia:$6$KwkWXq3r$6wRim294DG.pKYuSpmL3CIZWdYRJFU1joNkzO4CrFJJjzvYnMp3NeaHgYyPS3s3Q/Kyd6PzNOMaRM90g.QF4F0:18751:0:7:7:::
[root@nodex ~]# passwd -x 7 mageia
Adjusting aging data for user mageia.
passwd: Success
[root@nodex ~]# cat /etc/shadow | grep mageia
mageia:$6$KwkWXq3r$6wRim294DG.pKYuSpmL3CIZWdYRJFU1joNkzO4CrFJJjzvYnMp3NeaHgYyPS3s3Q/Kyd6PzNOMaRM90g.QF4F0:18751:0:7:7:::
[root@nodex ~]#

(5)、删除mandriva,但保留其家目录;
[root@nodex home]# userdel mandriva
[root@nodex home]# ll
drwx------ 3 1005 distro 92 May 4 19:29 mandriva
[root@nodex home]#

(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
[root@nodex home]# useradd -u 2002 -g distro slackware
[root@nodex home]# id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro)
[root@nodex home]#
groupadd peguin
groupmems -a slackware -g peguin
或者
usermod slackware -G peguin
或者
useradd -u 2002 slackware -g distro -G peguin
或者
gpasswd -a slackware peguin
(7)、修改slackware的默认shell为/bin/tcsh;
[root@nodex home]# usermod slackware -s /bin/tcsh
[root@nodex home]# cat /etc/passwd | grep slackware
slackware:x:2002:2019::/home/slackware:/bin/tcsh
[root@nodex home]#

(8)、为用户slackware新增附加组admins,并设置不可登陆。
[root@nodex home]# groupadd admins
[root@nodex home]#
[root@nodex home]# usermod slackware -G admins
[root@nodex home]#
[root@nodex home]# id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2021(admins)
[root@nodex home]# chsh slackware -s /sbin/nologin
Changing shell for slackware.
chsh: Warning: "/sbin/nologin" is not listed in /etc/shells.
Shell changed.
[root@nodex home]# cat /etc/passwd | grep slackware
slackware:x:2002:2019::/home/slackware:/sbin/nologin
[root@nodex home]#

创建用户user1、user2、user3。在/data/下创建目录test
(1)、设置目录/data/test属主、属组为user1
[root@nodex home]# useradd user1
[root@nodex home]# useradd user2
[root@nodex home]# useradd user3
[root@nodex home]# mkdir /data/test -p
[root@nodex home]# chown user1:user1 /data/test
[root@nodex data]# ll -d /data/test
drwxr-xr-x 2 user1 user1 6 May 4 19:41 /data/test
[root@nodex data]#

(2)、在目录属主、属组不变的情况下,user2对test及其子目录有读写权限
[root@nodex data]# setfacl -m u:user2:rw /data/test/
[root@nodex data]# getfacl /data/test/
getfacl: Removing leading '/' from absolute path names

file: data/test/

owner: user1

group: user1

user::rwx
user:user2:rw-
group::r-x
mask::rwx
other::r-x

[root@nodex data]#

(3)、user1在/data/test目录下创建文件a1.sh, a2.sh, a3.sh, a4.sh,设置所有用户都不可删除a1.sh,a2.sh文件。
[root@nodex test]# su user1
[user1@nodex test]$ pwd
/data/test
[user1@nodex test]$ touch a{1..4}.sh
[user1@nodex test]$ ll
total 0
-rw-rw-r-- 1 user1 user1 0 May 4 19:44 a1.sh
-rw-rw-r-- 1 user1 user1 0 May 4 19:44 a2.sh
-rw-rw-r-- 1 user1 user1 0 May 4 19:44 a3.sh
-rw-rw-r-- 1 user1 user1 0 May 4 19:44 a4.sh
[user1@nodex test]$
[root@nodex test]# chattr +i a{1,2}.sh

[root@nodex test]# rm a1.sh
rm: remove regular empty file ‘a1.sh’? y
rm: cannot remove ‘a1.sh’: Operation not permitted
[root@nodex test]# rm a2.sh
rm: remove regular empty file ‘a2.sh’? y
rm: cannot remove ‘a2.sh’: Operation not permitted
[root@nodex test]#

chattr +i {1,2}.sh 不能删除,不能改名,不能追加
chattr +a {1,2}.sh不能删除,不能改名,能追加

[root@nodex test]# lsattr
----i----------- ./a1.sh
----i----------- ./a2.sh
---------------- ./a3.sh
---------------- ./a4.sh
[root@nodex test]#

(4)、清理/data/test目录及其下所有文件的acl权限
setfacl -R -b /data/test/

上一篇:从头再来。


下一篇:python高级用法之命名元组namedtuple