重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Linux系统使用一个专门的文件将用户的登录名匹配到对应的UID值,这个文件就是/etc/passwd文件,它包含了一些与用户有关的关键信息
临朐ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
root用户账户是Linux系统的管理员,固定分配给他的UID是0。Linux系统会为各种功能创建不同的账户,而这些账户并不是真的用户,叫做系统账户
/etc/passwd文件文件中的密码字段都被设置成了x,这并不是说所有用户账户都用相同的密码,而密码都被保存在另一个叫/etc/shadow的文件中,这需要特殊的程序才能访问
/etc/passwd是一个标准的文本文件,但是不建议用编辑器直接修改其内容
/etc/shadow文件对Linux系统密码提供了更多的控制,只有root用户才能访问/etc/shadow文件,这让它比/etc/passwd安全许多
他一共有九个字段
1、与/etc/passwd文件中登录名对应字段的登录名
2、加密后的密码
3、上次修改密码后过去多少天
4、多少天后才能修改密码
5、多少天后必须修改密码
6、密码过期提前多少天通知用户
7、密码过期后多少天禁用用户账户
8、用户账户被禁用的日期
9、预留字段
/etc/group文件包含了系统上用到的每个组的信息和UID一样,GID也使用相同的格式,并从500开始分配
主目录 :用户的起始工作目录,用户登录后有操作权限的访问目录
注释性描述 :这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
登陆shell :用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
newgrp 指令类似 login 指令,当它是以相同的帐号,另一个群组名称,再次登入系统。 newgrp 命令可以从用户的附加组中选择一个群组,作为用户新的初始组。 欲使用 newgrp 指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组。单一用户要同时隶属多个群组,需利用交替用户的设置。若不指定群组名称,则 newgrp 指令会登入该用户名称的预设群组。
[root@localhost ~]# ls -l
总用量 44
-rw------. 1 ---- root ---- root --------1207 1 月14 18:18 anaconda-ks.cfg
权限--引用计数 所有者 -- 所属组--- 大小-- 文件修改时间 文件名
ls [选项] [文件名或目录名]
选项:
-a :显示所有文件
--color=when:支持颜色输出
-d :显示目录信息,而不是目录下的文件
-h :人性化显示﹐按照我们习惯的显示文件大小
-i :显示文件的i节点号
-l:长格式显示
pwd 命令是查询当前所在的目录的绝对路径
选项:
-L (默认值)打印环境变量"$PWD"的值,可能为符号链接。
-P 打印当前工作目录的物理位置。
mkdir 是创建目录的命令
选项:
-Z:设置安全上下文,当使用SELinux时有效;
-m或--mode:建立目录的同时设置目录的权限;
-p或--parents:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
rmdir 是删除空目录的命令
-p: 递归删除目录
touch 是 创建空文件或修改文件的时间戳
[root@localhost ~]# touch [选项] 文件名
-a:或--time=atime或--time=access或--time=use 只更改存取时间;
-c:或--no-create 不建立任何文件;
-d:时间日期 使用指定的日期时间,而非现在的时间;
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify 只更该变动时间;
-r:参考文件或目录 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:日期时间 使用指定的日期时间,而非现在的时间;
--help:在线帮助;
--version:显示版本信息。
stat 是查看文件详细信息的命令,而且可以看到文件的这三个时间戳
选项:
-L:支持符号连接;
-f:显示文件系统状态而非文件状态;
-t:以简洁方式输出信息;
cat 命令用来查看文件内容
选项:
-A: 相当于-vET 选项的整合,用于列出所有隐藏符号
-E: 列出每行结尾的回车符$
-n: 显示行号
-T: 把 Tab 键用^I显示出来
-v: 列出特殊字符
more 是分屏显示文件的命令
less 是分行显示文件的命令
用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。
选项:
-e:文件内容显示完毕后,自动退出;
-f:强制显示文件;
-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
-l:搜索时忽略大小写的差异;
-N:每一行行首显示行号;
-s:将连续多个空行压缩成一行显示;
-S:在单行显示较长的内容,而不换行显示;
-x数字:将TAB字符显示为指定个数的空格字符。
head 是用来显示文件开头的命令
选项:
-c --bytes=[-]NUM 显示前NUM字节;如果NUM前有"-",那么会打印除了文件末尾的NUM字节以外的其他内容。
-n, --lines=[-]NUM 显示前NUM行而不是默认的10行;如果NUM前有"-",那么会打印除了文件末尾的NUM行以外的其他行。
-q, --quiet, --silent 不打印文件名行。
-v, --verbose 总是打印文件名行。
-z, --zero-terminated 行终止符为NUL而不是换行符。
tail 是用来显示文件末尾的命令
选项:
-c, --bytes=NUM 输出文件尾部的NUM(NUM为整数)个字节内容。
-f, --follow[={name|descript}] 显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。
-F 与 “--follow=name --retry” 功能相同。
-n, --line=NUM 输出文件的尾部NUM(NUM位数字)行内容。
--pid=进程号 与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令。
-q, --quiet, --silent 当有多个文件参数时,不输出各个文件名。
--retry 即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“--follow=name”连用。
-s, --sleep-interal=秒数 与“-f”选项连用,指定监视文件变化时间隔的秒数。
-v, --verbose 当有多个文件参数时,总是输出各个文件名。
ln 是用来为文件创建链接的命令
[root@localhost ~]# ln [选项] 源文件 目标文件
选项:
-s: 建立软链接文件。如果不加“-s”选项,则建立硬链接文件
-f: 强制。如果目标文件已经存在,则删除目标文件后再建立链接文件
-d, -F, --directory 创建指向目录的硬链接(只适用于超级用户)
-f, --force 强行删除任何已存在的目标文件
-i, --interactive 覆盖既有文件之前先询问用户
-L, --logical 取消引用作为软链接的目标
-n, --no-dereference 把软链接的目的目录视为一般文件
-P, --physical 直接将硬链接到软链接
-r, --relative 创建相对于链接位置的软链接
-s, --symbolic 对源文件建立软链接
硬链接特征:
源文件和硬链接文件拥有相同的 Inode 和 Block
修改任意一个文件,另一个都改变
删除任意一个文件,另一个都能使用
硬链接标记不清,很难确认硬链接文件位置,不建议使用
硬链接不能链接目录
硬链接不能跨分区
软链接特征:
软链接和源文件拥有不同的 Inode 和 Block
两个文件修改任意一个,另一个都改变
删除软链接,源文件不受影响;删除源文件,软链接不能使用
软链接没有实际数据,只保存源文件的 Inode,不论源文件多大,软链接大小不变
软链接的权限是最大权限 lrwxrwxrwx.,但是由于没有实际数据,最终访问时需要参考源文
件权限
软链接可以链接目录
软链接可以跨分区
软链接特征明显,建议使用软连接
rm 是强大的删除命令,不仅可以删除文件,也可以删除目录
[root@localhost ~]# rm [选项] 文件或目录
选项:
d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
cp 是文件或目录用于复制的命令
[root@localhost ~]# cp [选项] 源文件 目标文件
选项:
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制软链接时,把目标文件或目录也建立为软链接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立软链接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
mv 是用来对文件或目录重新命名,或者将文件移动至其他目录
[root@localhost ~]# mv [选项] 源文件 目标文件
选项:
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“ / ”;
-S后缀:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=目录:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
[root@localhost ~]# ls -l install.log
-rw-r--r--. 1 root root 24772 1 月 14 18:17 install.log
第一列的权限位如果不计算最后的“.”,则共有 10 位。
第 2~4 位代表文件所有者的权限。
chmod 用来变更文件或目录的权限
[root@localhost ~]# chmod [选项] 权限模式 文件名
选项:
-c, --changes:当文件的权限更改时输出操作信息。
--no-preserve-root:不将'/'特殊化处理,默认选项。
--preserve-root:不能在根目录下递归操作。
-f, --silent, --quiet:抑制多数错误消息的输出。
-v, --verbose:无论文件是否更改了权限,一律输出操作信息。
--reference=RFILE:使用参考文件或参考目录RFILE的权限来设置目标文件或目录的权限。
-R, --recursive:对目录以及目录下的文件递归执行更改权限操作。
用户身份
首先,读、写、执行权限对文件和目录的作用是不同的。
目录的可用权限其实只有以下几个。
chown 是修改文件和目录的所有者和所属组的命令
[root@localhost ~]# chown [选项] 所有者:所属组 文件或目录
选项:
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对软链接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--reference=参考文件或目录:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行
普通用户可以修改所有者是自己的文件的权限
chgrp 是修改文件和目录的所属组的命令
[root@phato ~]# chgrp [选项] 所属组 文件或目录
-R 递归式地改变指定目录及其下的所有子目录和文件的所属的组
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
-H如果命令行参数是一个通到目录的软链接,则遍历软链接
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-L:遍历每一个遇到的通到目录的软链接
-P:不遍历任何符号链接(默认)
-v或——verbose:显示指令执行过程;
--reference=参考文件或目录:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
umask 是显示或设置创建文件的权限掩码。我们需要先了解一下新建文件和目录的默认最大权限。
我们在这里按照权限字母来讲解 umask 权限的计算方法。我们就按照默认的 umask 值是 022来分别计算一下新建文件和目录的默认权限吧。
会创建用户,并同时创建和用户同名的组;邮件文件;家目录(默认存放在/HOME/里的同名文件夹里)
语 法:useradd [选项] 用户名
常用选项 :
• -c 备注 加上备注文字
• -d 目录 指定用户登入时的启始目录
useradd -d /tmp/jack jack
cat /etc/passwd jack 已经为/tmp/jack了,说明创建成功了。但是cd到/tmp/里看不到
jack的文件夹,是因为权限不够,如果关掉SeLinux或者赋予它权限了就可以看到jack文件夹了
• -g 群组 指定用户所属的群组
• -G 群组 指定用户所属的附加群组
• -m /-M 自动建立(-m)用户的登入目录或不自动创建
• -n 取消建立以用户名称为名的群组
• -s shell 指定用户登入后所使用的shell (不加-s的默认shell为/bin/bash)
/sbin/nologin 没有可登录的shell
• -u uid 指定用户ID
useradd -n -G natasha tom
建新用户在不指定的情况下UID和GID是一样的,但是因为这里用-n取消建立以用户
名称为名的群组,所以 cat /etc/passwd 的时候发现GID为100,和cat /etc/group里users组的GID是一样的,由此可知在不建立以用户名称为名的群组的时候新建的用户主属组都是users,而用-G指定tom的附加群组为natasha,因此在 cat /etc/group 的时候出现的是natasha:x:1003:tom (1003是natasha的GID)
useradd -g natasha tom
用-g指定tom的主群组为natasha,因此在cat /etc/group里没有tom群组,在cat
/etc/passwd里出现的是tom:x:1006:1003::/home/tom:/bin/bash
(1003是natasha的GID)
语 法:userdel [选项] 用户名
常用选项
• -r 删除用户登入目录以及目录中所有文件 (不加-r不会自动删除同名组,邮件文件和家目录,如果先通过userdel删除了用户,之后想删除其同名组,邮件文件和家目录需要用rm命令手动一个个删除),但是如果只删除了用户,没删除的里面的各种文件使用的还是原来创建这个用户时的UID,所以一旦其他用户使用了这个UID,还是没办法通过rm手动删除
• -f 强制删除用户
语 法:usermod [选项] 用户名
常用选项
• -c:改变用户的描述信息
• -d:改变用户的主目录,如果加上-m则会将旧家目录移动到新的目录中去 (-m应加在新目录之后)
usermod -d 目的文件夹 用户名
• -g:改变用户的主属组
• -G:设置用户属于哪些组
• -l:改变用户的登录用名
不会改变属组的名称,原来的登录用户属于哪个组,现在还是属于哪个组
• -s:改变用户的默认shell ,如果将一个用户的shell指定为sbin/nologin的话用su -l 用户名进不去,会显示回显:This account is currently not available.
• -u:改变用户的UID
• -L:锁住密码,使密码不可用,这时在/etc/shadow文件里该用户的密码第一位为!
通过 usermod -L 用户名锁住密码,这时在root用户下su -l 用户名还是可以进入到系统中,因为root用户su到任意用户里都是不需要密码的。但是如果登出root用户,用该用户登录时就会显示sorry,that didn’t work,please try again.
• -U:为用户密码解锁
passwd 用户名,然后输入两次密码改密码,root的可以修改其他user的密码,但是root以外的用户只能修改自己的密码。只有root用户可以用这个命令改密码。如果是普通用户要改自己的密码的话,直接登录自己的普通用户账户,输入passwd即可改密码。
root以外的其他用户需要遵循密码最小生存周期,比如如果是1的话一天之内最多改一次。而root用户没有这个限制
系统用户可以直接修改/etc/group文件达到管理组的目的,也可以使用以下指令:
※一个组的管理员不一定要包含在这个组当中
※一个组可以有多个管理员
※一个人也可以在多个组中担任管理员
例: gpasswd -A user2 pools 将user2设置为组管理员
想将管理员改成user3的时候: gpasswd -A user3 pools
想新增管理员user3的时候: gpasswd -A user2,user3 pools
cat /etc/gshadow 可以看到一个组的管理员是谁
• gpasswd –a 用户名 用户组:将一个用户添加入一个组(从属组)
• gpasswd –M 用户名… 用户组:将多个用户添加入一个组(从属组)
※这里的M是modify的缩写,添加完会覆盖原来已经添加到这个组的组员
• gpasswd –d 用户名 用户组:将一个用户从一个组删除
gpasswd只能修改用户的从属组,想指定/改变主属组只能通过useradd/usermod
Linux中每个用户都要属于一个或多个组,有了用户组,就可以将用户添加到组中,这样就方便管理员对用户的集中管理。 Linux系统中用户组分为root组、系统组、普通用户组三类。当一个用户属于多个组时,这些组中只能有一个作为该用户的主属组,其他组就被称为此用户的次属组。 组基本信息在文件/etc/group中;组密码信息在文件/etc/gshadow中。通过命令:cat /etc/group、cat /etc/gshadow可查看文件内容。
各用户组中,以 ":" 作为字段之间的分隔符,分为 4 个字段,每个字段对应的含义为:
组名:密码:GID:该用户组中的用户列表
而在gshadow文件中,每行代表一个组用户的密码信息,各行信息用 ":" 作为分隔符,分为 4 个字段,每个字段的含义如下:
组名:加密密码:组管理员:组附加用户列表
root用户可以直接修改/etc/group文件达到管理组的目的,也可以使用以下命令:groupadd、groupdel、groupmod -n、gpasswd -a、gpasswd -d、newgrp。
下面使用案例分别讲解这些命令:
添加用户组的命令是 groupadd,命令格式如下:
groupadd [ -g gid [ -o ] ] [ -r ] [ -f ] group
参数说明:
-g:指定新建工作组的 id;
-r:创建系统工作组,系统工作组的组ID小于 500;
-K:覆盖配置文件 "/ect/login.defs";
-o:允许添加组 ID 号不唯一的工作组。
-f,--force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。
示例:创建一个新的组,并添加组 ID。
[root@VM-4-4-centos ~]# groupadd -g 888 newgroup
此时在/etc/group文件中产生了一个id为888的项目:
删除用户组时,可用groupdel(group delete)指令来完成。倘若该组中仍包括某些用户,则必须先删除这些用户后,方能删除组。 注意:删除的组不能为主属组! 命令格式:
groupdel [组名]
示例:删除用户组 newgroup
[root@VM-4-4-centos ~]# groupdel newgroup
此时再查看/etc/group文件时可以看到用户组newgroup已经不存在,删除成功!
要更改用户组识别码或名称可使用 groupmod 来完成。命令格式:
groupmod [ -g 群组识别码 -o ] [ -n 新群组名称 ] [原群组名称]
参数说明 :
-g 群组识别码 设置欲使用的群组识别码。
-o 重复使用群组识别码。
-n 新群组名称 设置欲使用的群组名称。
示例:创建用户组newgroup并修改其名称为modifiedgroup
[root@VM-4-4-centos ~]# groupadd newgroup
[root@VM-4-4-centos ~]# groupmod -n modifiedgroup newgroup
查看/etc/group文件,只存在名称为modifiedgroup的用户组,修改成功!
gpasswd 是 Linux 下工作组文件 /etc/group 和 /etc/gshadow 管理工具,用于将一个用户添加到组或者从组中删除。命令格式:
gpasswd [可选项] 组名
可选项参数 :
-a:添加用户到组;
-d:从组删除用户;
-A:指定管理员;
-M:指定组成员和-A的用途差不多;
-r:删除密码;
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
示例1:将用户yangwei添加到组modifiedgroup中
[root@VM-4-4-centos ~]# gpasswd -a yangwei modifiedgroup
此时查看/etc/group文件发现组 modifiedgroup中出现用户yangwei
示例2:将用户yangwei从组modifiedgroup中给删除
[root@VM-4-4-centos ~]# gpasswd -d yangwei modifiedgroup
再次查看/etc/group文件发现用户yangwei已经不存在。
当需要在不同的群组下工作的时候我们需要进行切换群组操作,这个操作由newgrp指令来完成。命令格式如下:
newgrp [群组名称]
注意!当前用户必须都是两个群组的成员,否则切换群组时需要输入切换组的组密码,这时候当前用户作为临时成员在切换组下工作,所创建的文件全都属于切换组。
示例1:用户yangwei不属于群组modifiedgroup,请将当前工作组切换为modifiedgroup。
示例2:将用户yangwei添加到组modifiedgroup中,并切换工作组为modifiedgroup。
总结:Linux用户组管理需要掌握最基本的几个命令及其选项参数: groupadd 、groupdel 、groupmod 、gpasswd 、newgrp !
摘要:Linux系统的架构基础就是文件,就是系统中的所有都归结为一个个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的一个个的文件。
1、系统管理
(1)、日期管理: date
显示系统的当前时间和日期:timedatectl
(2)、显示用户: logname
(3)、切换账户: su
(4)、查看当前账号的ID等详细信息: id
(5)、查看服务器上运行的程序占用资源的情况: top
(6)、显示当前进程的状态信息: ps
(7)、删除执行中的程序或工作: kill
(8)、关机重启指令: shutdown
关机指令:shutdown –h now
重启指令:shutdown –r
(9)、清除屏幕信息: clear
(10)、退出终端: exit
2、目录文件管理
(1)、列出目录的指令: ls
(2)、切换目录的指令: cd
(3)、显示当前目录的指令: pwd
(4)、创建目录的指令: mkdir
(5)、删除空目录的指令: rmdir
(6)、复制目录或者文件的指令: cp
(7)、移动目录或者文件的指令: mv
(8)、移除目录或者文件的指令: rm
(9)、变更文件或目录的所属群组的指令: chgrp
比如将原本属于user组的目录abc变更为root组:chgrp –v root abc
(10)、更改文件的属主和属组的指令: chown
比如将原本属于user用户的文件test变更为root用户:chown root test
(11)、更文件或目录的权限的指令: chmod
比如将文件test123.txt权限变更为读写和执行的指令:chmod –R 777 test23.txt
3、磁盘CPU内存管理
(1)、查看整体磁盘空间占用情况的指令: df –h
(2)、查看磁盘分区及文件系统的指令: df –T
(3)、查看cpu信息的指令: cat /proc/cpuinfo
(4)、查看内存信息的指令: cat /proc/meminfo
(5)、查看剩余内存的指令: free -m