Linux操作系统学习02
Posted 夜色架构师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux操作系统学习02相关的知识,希望对你有一定的参考价值。
文件的增删改查
文件目录:
创建文件:touch 文件名
1、创建多个文件
touch file{1..10}
注:创建10个文件,文件名file0,file1 ......file10
2、创建多个目录
mkdir folder{1..10}
注:一次性创建10个文件夹,目录名为folder1, folder2, ......folder10
删除文件:rm -f 文件名
删除目录:rm -rf 目录rm
选项:
-f:强制删除(force),和 -i 选项相反,使用 -f,系统将不再询问,而是直接删除目标文件或目录。
-i:和 -f 正好相反,在删除文件或目录之前,系统会给出提示信息,使用 -i 可以有效防止不小心删除有用的文件或目录。
-r:递归删除,主要用于删除目录,可删除指定目录及包含的所有内容,包括所有的子目录和文件。
编辑文件:vi 文件名(打开文件) -> 点击i进入编辑模式 ->开始编辑 -Esc(退出编辑模式) ->:wq(保存退出)
关于保存退出的一些操作:
保存退出输入 :wq 然后回车即可。(注意在英文状态下,并且别忘了冒号)
不保存退出输入 :q! 然后回车即可。(注意在英文状态下,并且别忘了冒号)
wq:表示保存退出
wq!:表示强制保存退出
x:表示保存退出
查看文件: cat [文件名] 表示显示文件内容
查找文件
1、查找文件
find / -name 'filename'
2、查找目录
find / -name 'path' -type d
3、查找内容
find . | xargs grep -ri 'content'
//find . | xargs grep -ril 'content' 只显示文件名称
我是分割线!(关于自己用户操作中遇到的一些问题和感想)
首先一开始自己进入终端,显示:
我认为这个是ftz这个用户,合情合理,然后我使用su命令,需要输入密码,我输入密码后变成了这个样子:
然后明显后面从$变成了#,权限升级了很明显,但是我就开始疑问,这个显示是什么意思,按照道理来说root@localhost后面是一个文件夹的名字,可是我自己很清楚ftz是一个用户的名字,ftz是一个用户不是文件夹呀,然后我开始思索是不是这样相当于赋予ftz这个用户管理员的权限呢?
通过网上搜索发现,单独一个su的命令是切换管理员root用户,然后我尝试ls输出了一下
我发现这个是我的桌面上主文件夹的内容
咦,我开始好奇,我现在是在哪里。然后我输入了cd /返回根目录的命令,我发现到达了最开始的地方,而且root@localhost后面的ftz消失了,这说明ftz就是一个文件夹,然后我通过cd home->ls->cd ftz->ls的命令,
加上自己的网上搜索我明白了一件事:我一开始登陆这个系统的时候是用ftz这个用户,同时我存在于管理员用户的home这个文件夹中,也就是说在Linux系统中,为了非管理员用户开辟的空间存放在home中的对应用户名的文件夹中,也就意味着普通用户本质而言只是人家管理员的一个文件夹(当时感觉很可爱)然后我通过电脑查资料,了解了一下每一个文件夹到底存放什么东西
/home
Here’s where your data is stored. Config files specific to users, your Desktop folder(whick makes your desktop what it is), and any data related to your user. Each user will have their own /home/username folder, with the exception of the root user.
/home
这里主要存放你的个人数据。具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:/home/用户名。当然,root用户除外。
在下面这个博客中看到不同文件夹作用的
https://blog.csdn.net/longxu0872/article/details/71168340
然后我开始思考,那我要是赋予ftz这个用户管理员的权限呢?怎样赋予?
首先一开始我认为,管理这些用户无论管理员还是普通用户是依靠 /etc/sudoers这个文件的,我在网上边查边自己尝试(第一篇看到的文章说需要修改sudoers文件,在里面将ftz添加在root下面…)
在上图的100行下面,在root下面按照人家的格式再写一个ftz ALL=(ALL) ALL这样的语句,然后按照这个方法尝试了,当时自己心里觉得也说得通,然后我修改了以后wq!然后su ftz切换到ftz用户然后尝试使用管理员权限的命令:cat -n /etc/sudoers
显而易见,权限不够,咦不对呀,我明明已经修改了sudoers文件夹然后在root下面添加了ftz了呀,后面也加了ALL=(ALL)看起来很像是管理员权限的语句~~~,然后我继续搜查…
(插入一句,哎,网上的文章真的良莠不齐,坑惨我了…哭了哭了,一堆人抄袭另一堆人,都说不清…)
我看到了第二种回答,也就是需要修改的并不是sudoers这个文件夹,需要修改的是/etc/passwd这个文件
里面是这个样子:
我们在最下面找到了我们的用户!!!!ftz
然后通过网上的答案了解了,在这个文件里面,第一行是root❌0:0…等等等等,这个意思就是说这个用户root的userid和groupid,也就是我刚刚明白了用户组的意思,在Linux系统中,系统不会去关心你这个用户是什么名字,他会注重的是你这个用户的userid和groupid,他是通过用户组来区别不同用户的,也就是说,我们只需要将我们的普通用户ftz,最后一行那里,让ftz的groupid也和root一样了都变成0(userid肯定不能一样哈),就意味着可以让ftz划分在管理组这个级别中,然后我去进行了尝试,
然后再次切换到ftz用户,然后进行高级命令:查看sudoers文件
成功了!,并不是前面的权限不够了
,然后通过这个自己摸索的过程,明白了用户组的概念,更加熟悉了编辑文件,目录以及用户的切换命令,哈哈赶快写好博客(喝茶喝茶)
我是结束的分割线,继续上面的学习:
拷贝文件:
Vim和Vi
什么是 vim?
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。
一、创建用户、用户组
1、创建用户
#创建名称为jiajia的用户
useradd jiajia
2、给用户设置密码
#给名称为xiaozhi的用户设置密码
passwd 123456
3、创建组
#创建名称为jiajiagroup的组
groupadd jiajiagroup
4、为组添加用户
#把xizohi用户加入jiajiagroup组
gpasswd -a jiajia jiajiagroup
5、查看组中有哪些用户
#查看名称为xiaozhigroup的组中有哪些用户
groupmems -g jiajiagroup -l
二、删除用户及用户
1、将用户退出组
#将名称为xiaozhi的用户退出名称为jiajiagroup的组
gpasswd -d jiajia jiajiagroup
2、删除用户
删除用户会提示用户被占用
根据进程号,先杀进程
kill -9 83570
此时就可以删除用户了
userdel命令删除该用户时,并不能删除该用户的所有信息,只是删除了/etc/passwd、/etc/shadow、/etc/group/、/etc/gshadow四个文件里的该账户和组的信息。默认情况下创建一个用户账号,会创建一个家目录(在/home/目录以用户名命名)和一个用户邮箱(在/var/spool/mail目录以用户名命名)
find / -name "*jiajia*"
彻底删除用户
rm -rf /home/jiajia/
rm -rf /var/spool/mail/jiajia
3、删除组
#删除名称为jiajiagroup的组
groupdel jiajiagroup
最后没有了!
粘滞权限
关于粘滞权限,粘滞权限其实就是一个特殊的删除权限,即“只有创建它的用户,才可以删除,其他用户可以对它做除了删除以外的任何操作”,一般用在临时文件目录,比如系统的tmp文件夹,很多程序或者用户都要用到这个文件夹作为临时空间,所以大家都能对这个目录进行读写,但大家都不能删除这个文件夹(因为一旦删了,其他人就没得用了,只有系统管理员用户才可以删)
我是第二个分割线!(关于自己联网方面出现问题和解决的一些感想)
昨天懵懵懂懂的配置了三次联网模式,NAT / 桥连接 / 主机模式 ,其实还是有点懵懂,今天学习Linux网络服务,实现让虚拟机用多种外网的时候发现昨天的“豆腐渣工程”导致联网失败了!
ping百度的时候发现失败了,一拍脑门,准是昨天忘了擦屁股了,搞完三种联网模式没有消化好,(哎都怪学校月考!),得亏是查到了一篇好文!(https://blog.csdn.net/weixin_43871127/article/details/102062181)
首先换了联网方式,改成大家熟悉而又通用的NAT模式
然后来个ifconfig测一下
准是ifcfg-ens33出问题了(赶快去康康)
通过比对:看出来了,昨天改了BOOTPROTO为static,人家原来是dhcp
来一波知识讲解:
[root@localhost network-scripts]# cat ifcfg-ens33
TYPE="Ethernet" #网卡类型(通常是Ethemet以太网)
PROXY_METHOD="none" #代理方式:为关闭状态
BROWSER_ONLY="no" #只是浏览器:否
BOOTPROTO="static" #网卡的引导协议【static:静态IP dhcp:动态IP none:不指定,不指定容易出现各种各样的网络受限】
DEFROUTE="yes" #默认路由
IPV4_FAILURE_FATAL="no" #是否开启IPV4致命错误检测
IPV6INIT="yes" #IPV6是否自动初始化:是(现在还未用到IPV6,不会有任何影响)
IPV6_AUTOCONF="yes" #IPV6是否自动配置:是(现在还未用到IPV6,不会有任何影响)
IPV6_DEFROUTE="yes" #IPV6是否可以为默认路由:是(现在还未用到IPV6,不会有任何影响)
IPV6_FAILURE_FATAL="no" #是否开启IPV6致命错误检测
IPV6_ADDR_GEN_MODE="stable-privacy" #IPV6地址生成模型
NAME="ens33" #网卡物理设备名称
UUID="ab60d501-535b-49f5-a76b-3336a4120f64"#通用唯一识别码,每一个网卡都会有,不能重复,否则两台linux机器只有一台可上网
DEVICE="ens33" #网卡设备名称,必须和‘NAME’值一样
ONBOOT="yes" #是否开机启动,要想网卡开机就启动或通过 `systemctl restart network`控制网卡,必须设置为 `yes`
IPADDR=192.168.137.129 # 本机IP
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.137.2 #默认网关
DNS1=8.8.8.8#
DNS2=8.8.8.5#
ZONE=public#
[root@localhost network-scripts]# service network restart #重启网卡
Restarting network (via systemctl): [ 确定 ]
[root@localhost network-scripts]#
修改成功后重启网络服务又出现了问题!!
继续查找查查查查…
解决方案就是依次输入:
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl restart network
[root@mina0 hadoop]# systemctl restart network
Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
[root@mina0 hadoop]# journalctl -xe
10月 26 17:15:57 mina0 network[3308]: 正在打开环回接口: [ 确定 ]
10月 26 17:15:57 mina0 NetworkManager[679]: <info> [1509009357.3386] audit: op="connec
10月 26 17:15:57 mina0 network[3308]: 正在打开接口 ens33: 错误:激活连接失败:No suita
10月 26 17:15:57 mina0 network[3308]: [失败]
10月 26 17:15:57 mina0 network[3308]: RTNETLINK answers: File exists
10月 26 17:15:57 mina0 network[3308]: RTNETLINK answers: File exists
10月 26 17:15:57 mina0 network[3308]: RTNETLINK answers: File exists
10月 26 17:15:57 mina0 network[3308]: RTNETLINK answers: File exists
10月 26 17:15:57 mina0 network[3308]: RTNETLINK answers: File exists
10月 26 17:15:57 mina0 network[3308]: RTNETLINK answers: File exists
10月 26 17:15:57 mina0 network[3308]: RTNETLINK answers: File exists
10月 26 17:15:57 mina0 network[3308]: RTNETLINK answers: File exists
10月 26 17:15:57 mina0 network[3308]: RTNETLINK answers: File exists
10月 26 17:15:57 mina0 polkitd[680]: Unregistered Authentication Agent for unix-process
10月 26 17:15:57 mina0 systemd[1]: network.service: control process exited, code=exited
10月 26 17:15:57 mina0 systemd[1]: Failed to start LSB: Bring up/down networking.
-- Subject: Unit network.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit network.service has failed.
--
-- The result is failed.
10月 26 17:15:57 mina0 systemd[1]: Unit network.service entered failed state.
10月 26 17:15:57 mina0 systemd[1]: network.service failed.
解决:
[root@mina0 hadoop]# systemctl stop NetworkManager
[root@mina0 hadoop]# systemctl disable NetworkManager
然后:重启网卡:
[root@mina0 hadoop]# systemctl restart network
[root@mina0 hadoop]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.36.193 netmask 255.255.255.0 broadcast 192.168.36.255
inet6 fe80::250:56ff:fe3c:7ac8 prefixlen 64 scopeid 0x20<link>
ether 00:50:56:3c:7a:c8 txqueuelen 1000 (Ethernet)
RX packets 28 bytes 8099 (7.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 25 bytes 3749 (3.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:a3:37:cb txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
再次ping!
nice!!
感觉CSDN这个任务文档前后接应很好!!可以复习前面的知识,有很多当初做了其实脑子里面并不是太懂,哈哈慢慢磨练喽!
第二个分割线结束!
开始下一个任务:给虚拟机安装图形界面,并谨慎地尝试更新内核
:哈哈先不修改内核啦(等完成后面的再回来深研究,万一西瓜芝麻都丢了~~~)
samba是一种linux和windows之间进行文件共享的协议。安装该协议后,可以理解为在linux是插在windows上的一个U盘。
CentOS7中Samba环境搭建
一、安装Samba
[root@samba-server ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@samba-server ~]# rpm -qa|grep samba
[root@samba-server ~]# yum install -y samba
二、关闭selinux和防火墙
[root@samba-server ~]# setenforce 0
[root@samba-server ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@samba-server ~]# systemctl stop firewalld
[root@samba-server ~]# systemctl disable firewalld
三、配置Samba配置文件
四、添加durant账号(如上配置中添加的内容)
root@samba-server ~]# useradd -d /home/durant -s /sbin/nologin durant
五、pdbedit 命令说明
pdbedit 命令用于管理Samba服务的帐户信息数据库,格式为:"pdbedit [选项] 帐户"
第一次把用户信息写入到数据库时需要使用-a参数,以后修改用户密码、删除用户等等操作就不再需要了。
pdbedit -L :查看samba用户
pdbedit -a -u user:添加samba用户
pdbedit -r -u user:修改samba用户信息
pdbedit -x -u user:删除samba用户
samba服务数据库的密码也可以用 smbpasswd 命令 操作
smbpasswd -a user:添加一个samba用户
smbpasswd -d user:禁用一个samba用户
smbpasswd -e user:恢复一个samba用户
smbpasswd -x user:删除一个samba用户
六、将durant添加为samba用户
[root@samba-server ~]# pdbedit -a -u durant
new password: //设置durant使用的samba账号密码,比如123456
retype new password: //确认密码
Unix username: durant
NT username:
Account Flags: [U ]
User SID: S-1-5-21-3966910846-3390734216-1763763463-1001
Primary Group SID: S-1-5-21-3966910846-3390734216-1763763463-513
Full Name:
Home Directory: \\\\samba-server\\durant
HomeDir Drive:
Logon Script:
Profile Path: \\\\samba-server\\durant\\profile
Domain: SAMBA-SERVER
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Thu, 13 Jun 2019 16:26:31 CST
Password can change: Thu, 13 Jun 2019 16:26:31 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
接着修改samba用户的家目录权限
[root@samba-server ~]# chown -Rf durant:durant /home/durant
七、启动Samba服务
[root@samba-server ~]# systemctl start smb
[root@samba-server ~]# systemctl enable smb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
[root@samba-server ~]# systemctl restart smb
[root@samba-server ~]# systemctl status smb
八、测试
先往共享路径/home/durant里添加点内容
[root@samba-server ~]# cd /home/durant/
[root@samba-server durant]# touch test1 test2 test3
[root@samba-server durant]# mkdir a1 a2 a3
[root@samba-server durant]# ls
a1 a2 a3 test1 test2 test3
将samba共享目录挂载到windows上
1)”Win+E键"打开,右键“此电脑”选择“映射网络驱动器”
共享成功
感谢博文:https://blog.csdn.net/wc1695040842/article/details/91866500?ops_request_misc=&request_id=&biz_id=102&spm=1018.2226.3001.4187
(未完成的任务:
通过管道命令实现:监听指定端口并将内容重定向到指定的文本文件中
对于粘滞权限 还需要继续学习
谨慎地尝试更新内核(这个还没有学习)
)
以上是关于Linux操作系统学习02的主要内容,如果未能解决你的问题,请参考以下文章
02 | 学习路径:爬过这六个陡坡,你就能对Linux了如指掌