Hello World - 2019年11月
type: channel
link: https://wlwl.host/index.php/2019/11/
description: Just So So ...
items: Linux 查看系统状态
items: Linux 用户和组

Linux 查看系统状态
type: item
date: 2019-11-11T10:32:00+00:00
description: 一、/proc的意义及说明在Linux中查看各种状态，其实质是查看内核中相关进程的数据结构中的项，通过工具将其格式化后输出出来。但是内核的数据是绝对不能随意查看或更改的，至少不能直接去修改。所以，在linux上出现了伪文件系统/proc，它是内核中各属性或状态向外提供访问和修改的接口，记录了内核自己的数据信息，各进程独立的数据信息，统计信息等。绝大多数文件都是只读不可改的，即使对root也一样，但/proc/sys除外。在/proc/目录下，其中数字命名的目录对应的是各进程的pid号，其内的文件记录的都是该进程当前的数据信息，且都是只读的，例如记录命令信息的cmdline文件，进程使用哪颗cpu信息cpuset，进程占用内存的信息mem文件，进程IO信息io文件等其他各种信息文件。非数字命名的目录各有用途，例如bus表示总线信息，driver表示驱动信息，fs表示文件系统特殊信息，net表示网络信息，tty表示跟物理终端有关的信息，最特殊的两个是/proc/self和/proc/sys。先说/proc/self目录，它表示的是当前正在访问/proc目录的进程，因为/proc目录是内核数据向外记录的接口，所以当前访问/proc目录的进程表示的就是当前cpu正在执行的进程。如果执行cat /proc/self/cmdline，会发现其结果总是该命令本身，因为cat是手动敲入的命令，它是重要性进程，cpu会立即执行该命令。再说/proc/sys这个目录，该目录是为管理员提供用来修改内核运行参数的，所以该目录中的文件对root都是可写的，例如管理数据包转发功能的/proc/sys/net/ipv4/ip_forward文件。使用sysctl命令修改内核运行参数，其本质也是修改/proc/sys目录中的文件。二、查看进程信息1、pstree命令pstree命令将以树的形式显示进程信息，默认树的分支是收拢的，也不显示pid，要显示这些信息需要指定对应的选项。pstree [-a] [-c] [-h] [-l] [-p] [pid] 选项说明： -a：显示进程的命令行 -c：展开分支 -h：高亮当前正在运行的进程及其父进程 -p：显示进程 pid，此选项也将展开分支 -l：允许显示长格式进程。默认在显示结果中超过 132 个字符时将截断后面的字符$ pstree -h systemd─┬─ModemManager───2*[{ModemManager}] ├─NetworkManager───2*[{NetworkManager}] ├─crond ├─kdeinit5─┬─2*[file.so] │ ├─kaccess───2*[{kaccess}] │ ├─kded5───5*[{kded5}] │ └─klauncher───2*[{klauncher}] ├─kwalletd5───2*[{kwalletd5}] ├─sddm─┬─Xorg───6*[{Xorg}] │ ├─sddm-helper───startplasma-x11─┬─plasma_session───{plasma_session} │ │ └─{startplasma-x11} │ └─{sddm} ├─start_kdeinit ├─systemd─┬─(sd-pam) │ ├─at-spi-bus-laun─┬─dbus-daemon │ │ └─3*[{at-spi-bus-laun}] │ ├─at-spi2-registr───2*[{at-spi2-registr}] │ ├─dbus-daemon │ ├─dconf-service───2*[{dconf-service}] │ ├─gvfsd───2*[{gvfsd}] │ ├─gvfsd-fuse───5*[{gvfsd-fuse}] │ ├─kactivitymanage───5*[{kactivitymanage}] │ ├─kglobalaccel5───2*[{kglobalaccel5}] │ ├─kscreen_backend───2*[{kscreen_backend}] │ ├─pipewire───{pipewire} │ ├─pulseaudio─┬─gsettings-helpe───3*[{gsettings-helpe}] │ │ └─{pulseaudio} │ ├─spectacle───3*[{spectacle}] │ ├─xdg-desktop-por───5*[{xdg-desktop-por}] │ ├─xdg-desktop-por───3*[{xdg-desktop-por}] │ ├─xdg-document-po───5*[{xdg-docum…

Linux 用户和组
type: item
date: 2019-11-08T10:32:00+00:00
description: 一、定义每个用户有用户名、用户编号(uid)、所属组及其默认的shell，可能还有密码、家目录、附属组、注释信息等。每个组有组名、组编号(gid)，组分为主组(primary group)和辅助组(secondary group)两种，用户一定会属于某个主组，也可以同时加入多个辅助组。用户的gid和uid可以不同，但一般情况下都会让它们保持一致，uid和gid是唯一的，多个用户可以指定相同的uid在Linux系统中，用户分为三类：超级管理员：拥有对系统的完全控制权，uid是0，默认用户名为root（可以更改，但是如非必要情况下不要更改它），可以修改、删除任何文件，运行任何命令，甚至可以在系统正常运行时删除所有文件系统，造成无法挽回的灾难，所以root用户也是系统里面最具危险性的用户，一般情况下，使用root用户登录系统时需要十分小心。系统用户：系统运行时必须有的用户（它具有某些特权），uid范围从1到999，用来运行特定的服务（比如使用系统用户mysql来运行mysqld服务），出于安全考虑，一般不能登录，所以它们的shell是/sbin/nologin，而且大多数时候它们是没有家目录的。普通用户：实际使用用户，这类用户可以使用用户名及密码登录系统，权限受到限制的用户，默认只能执行/bin、/usr/bin、/usr/local/bin和自身家目录下的命令，uid从1000开始。尽管普通用户权限受到限制，但是它对自身家目录下的文件是有所有权限的。其实1~65534之间的帐号并没有不同，也就是除了0之外，其他的UID并没有不一样 ，预设1000以下给系统作为保留帐号只是一个习惯。不过，一般来说， 1~99会保留给系统预设的帐号，另外100~999则保留给一些服务来使用，剩余的给一般使用者用的。linux系统现在已经可以支持4294967295 (2^32-1)的UID默认root用户的家目录为/root，其他用户的家目录一般在/home下以用户名命名的目录中，如longshuai这个用户的家目录为/home/longshuai，当然，家目录是可以自定义的。二、查看1、用户文件/etc/passwd文件里记录的是操作系统中用户的信息，这里面记录了几行就表示系统中有几个系统用户。它的格式大致如下：root:x:0:0::/root:/bin/bash nobody:x:65534:65534:Nobody:/:/usr/bin/nologin dbus:x:81:81:System Message Bus:/:/usr/bin/nologin bin:x:1:1::/:/usr/bin/nologin daemon:x:2:2::/:/usr/bin/nologin mail:x:8:12::/var/spool/mail:/usr/bin/nologin ftp:x:14:11::/srv/ftp:/usr/bin/nologin ..... rtkit:x:133:133:RealtimeKit:/proc:/usr/bin/nologin sddm:x:969:969:Simple Desktop Display Manager:/var/lib/sddm:/usr/bin/nologin kdkj3:x:1000:1000::/home/kdkj3:/usr/bin/zsh git:x:967:967:git daemon user:/:/usr/bin/git-shell每一行表示一个用户，每一行的格式都是6个冒号共7列属性，其中有很多用户的某些列属性是留空的。第一列：用户名。注意两个个特殊的用户名，root、nobody第二列：x。在古老版本系统上是存放用户密码的，后来为了安全将密码放在另一个文件/etc/shadow中，这里就都写成x了第三列：uid。第四列：gid。第五列：用户注释信息。第六列：用户家目录。注意root用户的家目录为/root第七列：用户默认shell。虽然叫shell，但其实可以是任意一个可执行程序或脚本。例如/bin/bash、/sbin/nologin、/sbin/shutdown/etc/shadow文件中存放的是用户的密码信息。该文件具有特殊属性，除了超级管理员，任何人都不能直接读取和修改该文件，而用户自身之所以能修改密码，则是因为passwd程序的suid属性，使得修改密码时临时提升为root权限。该文件的格式大致如下：root:$6$88aAfvezQn4/BLJx$hhlOahhsNzdNp2LHgphuavZQQMBsD5ilv5OcLd5No9XIVqz5HO5bHMG0YKr.lZANOroRJpmUkIbQ8U1Pln/Py0:18167:::::: nobody:!!:181…