Topic

linux

A collection of 10 issues

[Linux]硬链接和软链接

本文非纯原创,是各文杂糅而来加部分自身实践,在此致谢各位作者! 正文 说到硬链接(Hard link)与软链接(Symbolic link),首先需要了解索引节点(Inode)。关于Inode请移步这里。 硬链接 由于linux下的文件是通过索引节点(Inode)来识别文件,硬链接可以认为是一个指针 ,指向文件索引节点的指针,系统并不为它重新分配inode。inode指向了物理硬盘的一个区块 ,事实上文件系统会维护一个引用计数,只要有文件指向这个区块,它就不会从硬盘上消失。每添加一个一个硬链接,文件的链接数就加1。 用ln命令来建立硬链接。 #用法 usage: ln [-Ffhinsv] source_file [target_file] ln [-Ffhinsv] source_file ... target_dir link source_file target_file #创建前 ➜ ~ ls -lrth tmp
8 min read

进程间通信 Inter-Process Communication

> 关于进程与线程,请移步进程与线程 [https://hanzhu.dev/processes-and-threads/]。 本文并非原创,而是拼接整理各作者博文,主要还是为了梳理学习,在此一并致谢并将references贴在文末。 正文 > linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。 前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内; 后者则跳过了该限制,形成了基于套接口(socket)的进程间通信机制。 Linux则把两者继承了下来 * 早期UNIX进程间通信 * 基于System V进程间通信 * 基于Socket进程间通信 * POSIX进程间通信。 UNIX进程间通信方式包括:管道、FIFO、信号。 System V进程间通信方式包括:System V消息队列、System V信号灯、System V共享内存 P
30 min read

进程与线程

> 进程间通信还请移步:进程间通信 Inter-Process Communication [https://hanzhu.dev/ipc/] 进程:运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;每个进程都有自己独立的一块内存空间,一个进程可以有多个线程。 线程:进程中的子任务(控制单元),是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。 每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。每个线程完成不同的任务,但是共享同一地址空间(也就是同样的 动态内存,映射文件,目标代码等等),打开的文件队列和其他内核资源。 进程与线程的区别总结 线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。 * 根本区别:进程是操作系统资源分配的基本单
3 min read

什么是阻塞,非阻塞,同步,异步?

2021.9更新 Todo: 5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO [https://blog.csdn.net/tjiyu/article/details/52959418] Chapter6 of Unix Network Programming.vol3 [https://mathcs.clarku.edu/~jbreecher/cs280/UNIX%20Network%20Programming(Volume1,3rd).pdf] , 尤其是6.2 I/O model ======================== 答案都来自知乎: Answer1 所谓同步异步,只是对于水壶而言。 普通水壶,同步;响水壶,异步。 虽然都能干活,但响水壶可以在自己完工之后,提示老张水开了。这是普通水壶所不能及的。 同步只能让调用者去轮询自己(
8 min read

[Linux]PAM与NSS(施工中)

因为SSSD配置的关系,涉及到PAM与NSS。一坑未平,一坑又起,特此记录。 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system-level_authentication_guide/pluggable_authentication_modules References: https://unix.stackexchange.com/questions/166134/basic-explanation-on-nss-ldap-and-pam https://serverfault.com/questions/538383/understand-pam-and-nss https://community.cloudera.com/t5/Community-Articles/How-PAM-NSS-SSD-work-together-on-Linux-OS/ta-p/247879
1 min read

[Linux]sssd实现登录验证以及对应用户home directory的overwrite

起因是用户想更改用sssd登录用户的home directory的路径,解决了的同时就想顺便梳理一下相关知识,特此记录。 sssd实现登录验证 sssd是Linux6起加入的一个守护进程,可以用来访问多种验证服务器,比方LDAP, Kerberos等,并提供授权。它是介于本地用户和数据存储之间的进程,本地客户端首先连接SSSD, 再由SSSD联系外部资源提供者。 这样做的优势: 1. 避免每个本地应用都对认证服务器大量连接。所有本地程序仅联系SSSD,由SSSD连接认证服务器或SSSD缓存,有效的降低了负载。 2. 允许离线授权。SSSD可以缓存远程服务器的用户认证身份,这允许在远程认证服务器宕机时,继续成功授权用户访问必要的资源。 SSSD不在local system生成用户账户,而是从远程服务器获取身份信息。它同时也为一些system services提供缓存,比如Name Service Switch (NSS) 或 Pluggable Authentication Modules (PAM)。 SSSD默认配置文件:/etc/sssd/sssd.conf,
3 min read

[Linux]SSH无法远程登录问题常用排查技巧

之前遇到过无法使用ssh远程登录的问题(可以root后su),原因是漏添加了/etc/shadow中的记录。还遇到过ssh登录被拒,原因是启用iptables后block了ssh的port。 在诊断这些问题时,查找资料看到了一些常用的排查时需要注意的地方,特此记录。 1. 目标主机的ssh server程序是否安装,服务是否启动,是否在侦听22端口。SSH Service down, check the SSH daemon: sudo service ssh status 2. 是否允许该用户登录 3. Wrong credentials: hostname, username, password, port,错一不可。 4. 要用的port closed: sudo netstat -plnt 5. 本机是否设置了iptables规则,禁止了ssh的连入练出 sudo iptables -L 6. 检查ssh配置文件/
1 min read

[Linux]Linux中的/etc/passwd和/etc/shadow

因为最近工作中遇到,选择了手动在/etc/passwd中添加用户,忘了编辑/etc/shadow,导致无法使用目标账号远程登陆,特此写文夯实基础。 /etc/passwd /etc/passwd 文件是一个纯文本文件,对所有用户可读。你可以用任何文本编辑器在/etc/password文件里直接手动进行用户管理(比如添加、修改或删除用户账户)。但这样做极其危险。如果/etc/passwd文件出现损坏,系统就无法读取它的内容了,这样会导致用户无法正常登录(即便是root用户)。用标准的Linux用户管理工具去执行这些用户管理功能就会安全许多。 每行采用了相同的格式: name:password:uid:gid:comment:home:shell 比如: jenkins:x:164:117:Jenkins Automation Server:/static/jenkins_slave/appsec-jenkins-s111:/bin/bash
3 min read

Subscribe to 隅

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe