0%

Linux笔记

2019-10-31

用户操作练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 创建一个用户mandriva,其ID号为2002,基本组为distro(组ID为3003),附加组为linux
groupadd -g 3003 distro
groupadd linux
useradd -u 2002 -g distro -G linux mandriva

# 创建一个用户fedora,其全名为Fedora Community,默认shell为tcsh
useradd -c "Fedora Community" -s /bin/tcsh fedora

# 修改mandriva的ID号为4004,基本组为linux,附加组为distro和fedora
usermod -u 4004 -g linux -G distro,fedora mandriva

# 给fedora加密码,并设定其密码最短使用期限2D,最长为50D
passwd -n 2 -x 50 fedora

# 将mandriva的默认shell修改为/bin/bash
usermod -s /bin/bash mandriva

# 添加系统用户hbase,且不允许登录系统
useradd -r -s /sbin/nologin hbase

# 新建一个没有家目录的用户openstack
useradd -M openstack

权限练习

1
2
3
4
5
6
7
8
# 复制/etc/skel 为/home/openstack
cp -r /etc/skel /home/openstack

# 改变/home/openstack及其内部文件的属主属组均为openstack
chown -R openstack.openstack /home/openstack

# /home/openstack及其内部文件属主与其他用户没有任何访问权限
chmod -R go= /home/openstack

统计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 统计/usr/bin目录下的文件个数
ls /usr/bin |wc -l

# 取出当前系统上所有用户的shell,每种shell只显示一次,并且按顺序进行显示
cat /etc/passwd |cut -d: -f7 |sort -u

# 如何显示/var/log目录下每个文件的内容类型?
file /var/log/*
file $(ls /var/log)

# 取出/etc/inittab文件的第六行
head -n6 |tail -n1

# 取出/etc/passwd文件中倒数第九个用户的用户名和shell,显示到屏幕并将其保存至/tmp/users文件中
tail -n9 |head -n1 |cut -d: -f1,7 >/tmp/users

# 显示/etc目录所有以pa开头的文件,并统计个数
ls -d /etc/pa* |wc -l

# 不使用文本编辑器将alias cls="clear"添加到当前用户的.bashrc文件中
printf "alias cls=clear">>~/.bashrc

grep/sed/awk

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
# 找出ifconfig命令结果中的1-255之间的整数
grep -E '(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
A: 1-127
B: 128-191
C: 192-223
grep -E '\<[1-9]|1[1-9]{2}|2[01][0-9]|22[0-3]\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'

# 删除/etc/grub.conf文件中行首的空白符
sed 's/[[:space:]]+//g' /etc/grub.conf

# 替换/etc/inittab文件中"id:3:initdefault"一行中的数字5
sed 's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g' /etc/inittab

# 删除/etc/inittab文件中的空白行
sed '/^$/d' /etc/inittab

# 删除/etc/inittab文件开头的#号
sed 's/^#//g' /etc/inittab

# 删除某文件中开头的#及后面的空白字符,但要求#后面必须有空白字符
sed -r 's@^#[[:space:]]+@@' /etc/inittab

# 删除某文件以空白字符且后边跟#号的开头的行的空白字符及#
sed 's/^[[:space:]+#//g' /etc/inittab

# 取出一个文件路径的目录名称
echo '/etc/rc.d' |sed -r 's@^(/.*/)[^/]+/?@\1@g' /etc/
echo '/etc/rc.d' |sed -r 's@^/.*/([^/]+)/?@\1@g' rc.d

find

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 查找/var 下属主为root并且属组为mail的所有文件
find /var -user root -a -group mail

# 查找/usr 下不属于root,bin,或student的文件
find /usr -not \( -user root -o -user bin -o -user student \)
find /usr -not -user root -a -not -user bin -not -user student

# 查找/etc 下最近一周内内容修改过的且不属于root及student用户的文件
find /etc -mtime -7 -not \( -user root -o -user student \)
find /etc -mtime -7 -not -user root -a -not -user student

# 查找当前系统上没有属主或属组且最近1天内被访问过的文件,并将其属主属组均改为root
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root.root {} \;

# 查找/etc下大于1M 的文件,并将其文件名写入/tmp/etc.largefiles文件中
find /etc -size +1M -exec echo {} >>/tmp/etc.largefiles \;
find /etc -size +1M >>/tmp/etc.largefiles

# xargs - build and execute command lines from standford input
find /etc -size +1M |xargs echo >>/tmp/etc.largefiles

# 查找/etc下所有用户都没有写权限的文件,显示出详细信息
find /etc -not -perm /222 -ls

磁盘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 创建5G的分区,文件系统为ext3,卷标为MYDATA,块大小为1024,预留管理空间为磁盘分区3%,要求开机后自动挂载至/data目录,并且自动挂载的设备要使用卷标进行引导
mke2fs -t ext3 -L MYDATA -b 1024 -m 3 /dev/sda2
blkid # 查看磁盘 UUID TYPE LABEL等属性
tune2fs # 调整文件系统属性 -L -m -o
dumpe2fs # 显示文件属性信息
fsck / e2fsck

# 上述如何操作,让其自动挂载的同时启用ACL功能
/etc/fstab
LABEL='MYDATA' /data ext3 defaults,acl 0 0

# 创建一个本地回环文件/var/swaptmp/swapfile来用于swap,要求大小为512MB,卷标为SWAP-FILE,且开机自动挂载此交换设备

mkdir /var/swaptmp
dd if=/dev/zero of=/var/swaptmp/swapfile bs=1M count=512
mkswap LABLE=SWAP-FILE /var/swaptmp/swapfile

/var/swaptmp/swapfile swap swap defaults 0 0
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
------本文结束 感谢阅读------