avatar

目录
Linux文件管理,用户管理

一、文件管理

1.目录结构
2.基础命令
bash
1
cd pwd touch mkdir cp mv rm ls cat head tail less more rz sz wget vim
3.压缩与打包
Code
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
(1)什么是压缩包?
压缩包是一个特殊的文件,将多个文件或目录整合在一个文件中.

(2)为什么要使用压缩包?
1.便于传输
2.压缩后的体积会变小. 28GB文件 ---> 6GB

(3)实现打包与压缩有哪些工具:
Windows:
zip
tar

Linux:
zip
tar.gz

(4)压缩包如何实现:
gzip: ( 仅针对文件 )
[root@oldboy-pythonedu ~]# gzip /etc/yum.repos.d/CentOS-Base.repo #压缩 ( 源文件不见了 )
[root@oldboy-pythonedu ~]# zcat /etc/yum.repos.d/CentOS-Base.repo.gz #查看
[root@oldboy-pythonedu ~]# gzip -d /etc/yum.repos.d/CentOS-Base.repo.gz #解压

zip: ( 针对文件或目录 )
[root@oldboy-pythonedu ~]# yum install zip unzip -y
[root@oldboy-pythonedu ~]# zip -r yum_local.zip /etc/yum.repos.d/ /tmp/
[root@oldboy-pythonedu ~]# unzip yum_local.zip -d /opt/

tar.gz:
c: 创建
z: 压缩类型
f: 指定文件名称
x: 自动识别文件类型

创建: [root@oldboy-pythonedu ~]# tar czf etc.tar.gz /etc/ /home/
解压: [root@oldboy-pythonedu ~]# tar xf etc.tar.gz
指定解压路径: [root@oldboy-pythonedu ~]# tar xf etc.tar.gz -C /mnt/

二、用户管理

1.什么是用户
Code
1
指能够正常登陆操作系统.
2.为什么要有用户
Code
1
2
2.1) 进程需要依赖一个特定用户的身份,才可以正常的运行.
2.2) 服务器可能会有多个用户, root的权限太大.
3.用户分类
Code
1
2
3
4
5
6
7
类型		   名称	  ID编号
超级管理员 root 0
系统用户 1~999 <--为系统正常运转而使用的用户 [ 系统用户 | 虚拟用户 ]
普通用户 1000+ <--能够正常登陆系统的用户 [ 普通用户 ]


进程能够以什么样的方式去访问一个文件或目录, 取决于进程运行的 "用户身份" 对该文件或目录是否拥有对应的权限
4.用户怎么查
Code
1
2
[root@oldboy-pythonedu ~]# id root
uid=0(root) gid=0(root) 组=0(root)
5.如何创建用户
Code
1
2
3
[root@oldboy-pythonedu ~]# useradd oldboy
[root@oldboy-pythonedu ~]# id oldboy
uid=1001(oldboy) gid=1001(oldboy) 组=1001(oldboy)
6.创建的用户信息都存储在哪? [ 存储用户信息以冒号为分隔符,总共有7列 ]
Code
1
2
3
4
5
6
7
8
9
10
11
12
[root@oldboy-pythonedu ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
oldboy:x:1001:1001::/home/oldboy:/bin/bash


第一列: 用户名称
第二列: 密码占位符,密码存储在 /etc/shadow 文件中
第三列: 用户的UID
第四列: 用户的GID
第五列: 描述信息 commit
第六列: 用户的家目录
第七列: 用户登录的Bash类型
7.用户存储密码的文件:
Code
1
2
/etc/shadow
root:$6$QyNI5YH5XihOfDKY:18533:0:99999:7:::
8.详细了解下创建用户的一些个参数:
Code
1
2
3
4
5
6
7
-u: 指定用户的UID
-g: 指定用户的基本组 ( 不指定,默认创建与用户同名的组 )
-G: 指定附加组 ( 干爹 )
-c: 指定注释信息
-s: 指定登录的bash类型,默认是 /bin/bash
-r: 指定系统用户
-M: 不创建用户的家目录

1.创建oldboyedu用户,UID5001,基本组students,附加组sa 注释信息:2019 new student,登陆shell:/bin/bash

Code
1
2
3
[root@oldboy-pythonedu ~]# groupadd students
[root@oldboy-pythonedu ~]# groupadd sa
[root@oldboy-pythonedu ~]# useradd oldboyedu -u 5001 -g students -G sa -c "2020 new student" -s /bin/bash

2.创建mysql系统用户,-M不建立用户家目录 -s指定nologin使其用户无法登陆系统

Code
1
[root@oldboy-pythonedu ~]# useradd mysql -r  -M -s /sbin/nologin

3.删除用户

Code
1
2
userdel -r username   删除用户,并删除用户的家目录
不建议加-r: 因为很多情况下开发使用的用户家目录下有很多软件和配置文件
9.如何为用户设定密码 passwd
Code
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
1.简单: 容易破解
2.复杂: 不好记忆
---------------------------------密钥方式验证
建议密码使用工具: lastpass
windows mac ios android

设定密码的方式: 仅root可以设定所有人的密码, 普通仅能设定自己的密码,并且密码的强度有要求.
交互式:
passwd [username]

非交互式:
[root@oldboy-pythonedu ~]# echo "12" | passwd --stdin root #固定密码
[root@oldboy-pythonedu ~]# echo $RANDOM | md5sum | cut -c 2-10 | tee 1.txt |passwd --stdin root #随机密码


#批量创建用户,以及随机密码
[root@oldboy-pythonedu ~]# cat useradd.sh
#!/usr/bin/bash
#1.如何批量创建用户
for user_name in old-{1..100}
do
pass=$(echo $RANDOM | md5sum | cut -c 2-10)

# 判断用户是否存在,如果存在则不创建
id $user_name &>/dev/null
if [ $? -eq 0 ];then
continue
else
# 创建用户
useradd $user_name
# 设定密码
echo "$pass" | passwd --stdin $user_name &>/dev/null # 设定密码,将结尾打到空
echo "Username: $user_name Password: $pass ok.." # 将用户名和密码输出到面板
echo "Username: $user_name Password: $pass ok.." >> user_password.txt #将用户名和密码输出到文件中
fi
done

交互方式创建用户与密码

Code
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
[root@oldboy-pythonedu ~]# cat useradd_2.sh 
#!/usr/bin/bash


read -p "请输入你要创建的用户名称: " User
read -p "请输入你要创建的用户数量: " Number


#如何批量创建用户
for i in $(seq $Number)
do
user_name=$User-$i
pass=$(echo $RANDOM | md5sum | cut -c 2-10)

# 判断用户是否存在,如果存在则不创建
id $user_name &>/dev/null
if [ $? -eq 0 ];then
continue
else
# 创建用户
useradd $user_name
# 设定密码
echo "$pass" | passwd --stdin $user_name &>/dev/null
echo "Username: $user_name Password: $pass ok.."
echo "Username: $user_name Password: $pass ok.." >> user_password.txt
fi
done
10.用户组

10.1) 组基本概念

Code
1
便于管理

10.2) 组的分类

Code
1
2
3
4
所属组: 当创建一个用户时,如果不指定主组,会默认创建一个同名的组.
附加组: 创建用户时可以指定我想加入的附加组, 此时用户就可以具备附加的组的权限.

正房只能有一个 偏方可以多个

10.3) 创建组

Code
1
2
3
-g: 指定gid,默认不指定,则从1000+开始

[root@oldboy-pythonedu ~]# groupadd -g 5001 devops

10.4) 删除组

Code
1
2
3
4
5
6
[root@oldboy-pythonedu ~]# groupdel devops

[root@oldboy-pythonedu ~]# groupdel students
groupdel:不能移除用户“oldboyedu”的主组
[root@oldboy-pythonedu ~]# userdel -r oldboyedu
[root@oldboy-pythonedu ~]# groupdel students
11.用户提权相关
Code
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
11.1) su 切换身份
需要知道用户的密码,才可以切换.
su - root #输入root的密码

问题:
1.不希望给开发root的权限,容易造成故障.
2.不给开发权限,有些任务他需要root权限.

11.2) sudo 提权
1.快速给用户分配一个sudo的权限:
[root@oldboy-pythonedu ~]# useradd -G wheel oldxu
[root@oldboy-pythonedu ~]# echo "123" | passwd --stdin oldxu

2.验证权限:
[oldxu@oldboy-pythonedu ~]$ yum install wget -y
已加载插件:fastestmirror
您需要 root 权限执行此命令。


[oldxu@oldboy-pythonedu ~]$ sudo yum install wget -y
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。

[sudo] oldxu 的密码: # 普通自己的密码,不是root的密码


vim /etc/sudoers
visudo -c 检查语法

1.定义组名称 ( sudo里面的虚拟的 )

User_Alias DEV = kaifa1,kaifa2
User_Alias OPS = ops1,ops2


2.定义权限
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

## Installation and management of software
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

## Services
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable

## Updating the locate database
# Cmnd_Alias LOCATE = /usr/bin/updatedb

## Storage
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount


## Processes
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall


3.将用户组与权限进行绑定
root ALL=(ALL) NOPASSWD:ALL #可以执行所有的命令,并且无需输入密码
DEV ALL=(ALL) NETWORKING,SOFTWARE,SERVICES
OPS ALL=(ALL) NETWORKING,SOFTWARE,SERVICES,PROCESSES,STORAGE


4.创建对应的用户,并设定密码
[root@oldboy-pythonedu ~]# useradd kaifa1
[root@oldboy-pythonedu ~]# useradd kaifa2
[root@oldboy-pythonedu ~]# useradd ops1
[root@oldboy-pythonedu ~]# useradd ops2
[root@oldboy-pythonedu ~]# echo "1" | passwd --stdin kaifa1
[root@oldboy-pythonedu ~]# echo "1" | passwd --stdin kaifa2
[root@oldboy-pythonedu ~]# echo "1" | passwd --stdin ops1
[root@oldboy-pythonedu ~]# echo "1" | passwd --stdin ops2

5.使用 sudo -l 验证开发的权限和运维的权限是否不一致
用户 kaifa1 可以在 oldboy-pythonedu 上运行以下命令:
(ALL) /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables,
/usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool, /bin/rpm,
/usr/bin/up2date, /usr/bin/yum, /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start,
/usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart,
/usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable


用户 ops1 可以在 oldboy-pythonedu 上运行以下命令:
(ALL) /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables,
/usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool, /bin/rpm,
/usr/bin/up2date, /usr/bin/yum, /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start,
/usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart,
/usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable,
/bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall, /sbin/fdisk, /sbin/sfdisk,
/sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
文章作者: kuokay
文章链接: http://yoursite.com/2021/01/10/Linux%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 kuokay
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论