文章目录

文件系统组织结构
⭐ /lib
系统开机所需要最基本的动态链接共享库,其作用类似于Windows里的DLL文件。
几乎所有的应用程序都需要用到这些共享库。
⭐ /lost+found
一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
⭐ /etc
所有系统管理所需要的配置文件和子目录 my.conf
⭐ /usr
用户的很多应用程序和文件都放在这个目录下。
⭐ /bin
是Binary的缩写,这个目录存放着经常使用的命令
⭐ /sbin (usr/sbin、/usr/local/sbin)
sbin就是per user的意思,这里存放的是系统管理员使用的系统管理程序
⭐ /home
存放普通用户的主目录,在Linux中的每个用户都有一个自己的目录,
一般该目录一用户的账号名命名
⭐ /root
该目录为系统管理员,超级权限者的用户目录
⭐ /boot
存放的启动Linux时使用的一些核心文件,包括一些链接文件和镜像文件
⭐ /proc
虚拟目录,是系统内存的映射,访问这个目录来获取系统信息。
⭐ /srv
service 的缩写,该目录是存放一些服务启动之后需要提取的数据
⭐ /sys
Linux2.6内核的一个很大变化,该目录安装了2.6内核中新出现的一个文件系统
⭐ /tmp
存放临时文件
⭐ /dev
类似于 windows的设备管理器,把所有的硬件用文件的形式存储
⭐ /media
Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
⭐ /mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上
然后进入该目录就可以查看里的内容了。d:/ myshare
⭐ /opt
这是给主机额外安装软件所摆放的目录。如安装 ORACLE数据库就可放到该目录下。
默认为空。
⭐ /usr/local
这是另个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序。
⭐ /var
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。
包括各种日志文件。
⭐ /selinux [security-enhanced linux] 类似 360
Selinux是一种安全子系统,它能控制程序只能访同特定文件。
登录系统后,在当前命令窗口下输入命令:
ls /
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
🌙 /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
🌙 /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
🌙 /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,
具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

用户管理概述
Linux是一个多用户、多任务的操作系统。

用户账号和用户组

用户概念
Linux 是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(user)
用户组概念
用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;
Linux用户和组的关系
用户和用户组的对应关系有以下 4 种:
⭐一对一:一个用户可以存在一个组中,是组中的唯一成员;
⭐一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
⭐多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
⭐多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。

Linux 系统的管理员之所以是 root,是因为该用户的身份号码即UID的数值为 0,UID 就相当于我们的身份证号码一样具有唯一性,因此可通过用户的 UID 值来判断用户身份。
⭐ 管理员 UID 为 0:系统的管理员用户。
⭐ 系统用户 UID 为 1~999: Linux 系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
⭐ 普通用户 UID 从 1000 开始:是由管理员创建的用于日常工作的用户。 需要注意的是,UID 是不能冲突的,而且管理员创建的普通用户的 UID 默认是从 1000 开始的(即使前面有闲置的号码)。
添加用户 useradd
语法:
useradd (选项)(参数)
选项:
🐟 -d 指定用户的家目录(默认为/home/username)
🐟 -e 账户的到期时间,格式为 YYYY-MM-DD.
🐟 -u 指定该用户的默认 UID
🐟 -g 指定一个初始的用户基本组(必须已存在)
🐟 -G 指定一个或多个扩展用户组
🐟 -N 不创建与用户同名的基本用户组
🐟 -s 指定该用户的默认 Shell 解释器
参数
用户名:要创建的用户名。
示例 1
下面我们创建一个普通用户并指定家目录的路径、用户的 UID 以及
Shell 解释器。在下面的命令中,请注意/sbin/nologin,它是终端解释器中的一员,与 Bash 解释器有着天壤之别。 一旦用户的解释器被设置为 nologin,则代表该用户不能登录到系统中:
[root ~]# useradd -d /home/linux -u 8888 -s /sbin/nologin linuxprobe
[root ~]# id linuxprobe
uid=8888(linuxprobe) gid=8888(linuxprobe)
groups=8888(linuxprobe)
修改用户 usermod
有些时候不小心在useradd的时候加入了错误的设定数据,此时我们当然可以直接到/etc/passwd或/etc/shadow中去修改相对应字段的数据。
语法
usermod (选项) (参数)
选项:
🐟 -c<备注>:修改用户帐号的备注文字;
🐟 -d<登入目录>:修改用户登入时的目录;
🐟 -e<有效期限>:修改帐号的有效期限;
🐟 -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
🐟 -g<群组>:修改用户所属的群组;
🐟 -G<群组>;修改用户所属的附加群组;
🐟 -l<帐号名称>:修改用户帐号名称;
🐟 -L:锁定用户密码,使密码无效;
🐟 -s:修改用户登入后所使用的shell;
示例1
来看一下账户 linuxprobe 的默认信息:
id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe)
然后将用户 linuxprobe 加入到 root 用户组中,这样扩展组列表中则会出现 root 用户组的 字样,而基本组不会受到影响:
[root ~]# usermod -G root
linuxprobe
[root ~]# id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxp
再来试试用-u 参数修改 linuxprobe 用户的UID 号码值。除此之外,我们还可以用-g 参数 修改用户的基本组 ID,用-G 参数修改用
户扩展组 ID。
[root@linuxprobe ~]# usermod -u 8888
linuxprobe
[root@linuxprobe ~]# id linuxprobe
uid=8888(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe),0(root)
用户账号口令管理
passwd 命令用于修改用户密码、过期时间、认证信息等。
语法
passwd (选项) (参数)
选项:
🐟 -d:删除密码,仅有系统管理者才能使用;
🐟 -f:强制执行;
🐟 -k:设置只有在密码过期失效后,方能更新;
🐟 -l:锁住密码;
🐟 -s:列出密码的相关信息,仅有系统管理者才能使用;
🐟 -u:解开已上锁的帐号。
示例1
用root帮linuxpro修改密码
passwd linuxpro
示例2
假设您有位同事正在度假,而且假期很长,那么可以使用 passwd命令禁止该用户登录系统,等假期结束回归工作岗位时,再使用该
命令允许用户登录系统,而不是将其删除。 这样既保证了这段时间内系统的安全,也避免了频繁添加、删除用户带来的麻烦。
[root ~]# passwd -l linuxprobe Locking password for user linuxprobe.
passwd: Success
[root ~]# passwd -S linuxprobe linuxprobe LK 2017-12-26 0 99999 7 -1
(Password locked.)
[root ~]# passwd -u linuxprobe Unlocking password for user linuxprobe.
passwd: Success
[root ~]# passwd -S linuxprobe
linuxprobe PS 2017-12-26 0 99999 7 -1
(Password set, SHA512 crypt.)
删除用户 userdel
userdel 命令用于删除用户
语法:
userdel [选项] 用户名
选项:
🐟 -f 强制删除用户
🐟 -r 同时删除用户及用户家目录
这个命令的目的删除用户,与它相关的文件有:
🐟 /etc/passwd
🐟 /etc/shadow
🐟 /home/username
语法:
[root@localhost~]#userdel [-r] username
参数:
-r : 连同用户的家目录也一起删除。
示例1
下面使用 userdel 命令将 linuxprobe 用户删除,其操作如下:
[root ~]# id linuxprobe
uid=8888(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe),0(root)
[root ~]# userdel -r linuxprobe
[root ~]# id linuxprobe
id: linuxprobe: no such user
从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
在Ruby(尤其是Rails)中,您经常需要检查某物是否存在,然后对其执行操作,例如:if@objects.any?puts"Wehavetheseobjects:"@objects.each{|o|puts"hello:#{o}"end这是最短的,一切都很好,但是如果你有@objects.some_association.something.hit_database.process而不是@objects呢?我将不得不在if表达式中重复两次,如果我不知道实现细节并且方法调用很昂贵怎么办?显而易见的选择是创建一个变量,然后测试它,然后处理它,但是你必须想出一个变量名(呃),它也会在内存中
我有以下代码,它下载一个文件,然后将文件的内容读入一个变量。使用该变量,它执行一个命令。这个配方不会收敛,因为/root/foo在编译阶段不存在。我可以通过多个聚合和一个来解决这个问题ifFile.exist但我想用一个收敛来完成它。关于如何做到这一点有什么想法吗?execute'download_joiner'docommand"awss3cps3://bucket/foo/root/foo"not_if{::File.exist?('/root/foo')}endpassword=::File.read('/root/foo').chompexecute'join_domain'd
我正在开发一个Rails应用程序,我需要在其中找到给定特定偏移量或时区的夏令时开始和结束日期。我基本上在我的数据库中保存了从用户浏览器接收到的时区偏移量(“+3”,“-5”),我想在它出现时修改它由于夏令时的变化。我知道Time实例变量有dst?和isdst方法,如果存储在它们中的日期在夏令时与否。>Time.new.isdst=>true但是使用它来查找夏令时的开始和结束日期会占用太多资源,而且我还必须为我拥有的每个时区偏移量执行此操作。我想知道更好的方法。 最佳答案 好的,基于你所说的和@dhouty'sanswer:您希望能够
如何学习ruby的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/