目录
用户
关于用户的一些命令
adduser 可以增加一个用户
-u 选项可以指定该用户的uid
-g -G 选项分别指定该用户的主要组(或gid)和附属组
-s 选项可以指定该用户的shell服务
id 查询用户的uid gid 和组
每个用户都会有唯一的uid和一个基本组,当创建一个新用户且未指定组时会自动创建一个新的和用户同名的组并将用户加入进去,一个用户至少有一个基本组,可以有多个附属组,每个组存在不同的授权需要在加入后可以获得
用户的uid在1000以内时说明是系统用户,1000以上时是普通用户,0是root即超级用户
userdel -r 用户名 命令可以删除一个用户以及其家目录
groupadd 组名 可以增加一个新的组
groupdel 组名 可以删除一个组
但组的删除需要该组中已经不存在用户方可删除
组存放在/etc/group
w命令可以查看目前系统中所有登录的用户
以下为查询结果中的内容
第一列为用户名
第二列为登录方式 pts 为远程登录,理论上远程登录可以有无限个,tty指本机登录,本机登录最多六个
第三列为远程登录的本机的ip地址
last可以记录最近登录过系统的用户
lastlog可以查看用户的登录情况以及最近的登录时间
passwd 命令可以指定用户的密码
chpasswd 命令效果与passwd一致,但可以进行批量更改
当root用户的密码忘了怎么办?
重启,然后进入单用户模式进行密码的修改
/etc/passwd 储存着所有用户的相关信息
用户信息以这种形式在passwd文件中储存
其中第一列为用户名、第二列为x(本来储存密码,但密码在当前版本存在别的位置,所以都是x)、第三列为uid、第四列为gid、第五列为对这个用户的一些描述,没有进行描述的话显示为空、第六列为用户的家目录、第七列为登录时进行的操作
第七列中可存在的操作包括:
(/bin/bash 解释器指令
/bin/sync 同步指令 将内容的缓存刷新到磁盘
/sbin/halt 关机指令
/sbin/nologin 不允许登录
/sbin/shutdow 关机 )
awk -F :(即分隔符) '{print x}' /文件 命令可以对文件操作,选取该文件在分隔符下的第x列内容
可以接|uniq 进行去重,但这种去重只会将上下相邻的重复内容进行去重,可以在去重前加一个|sort进行排序后再去重,或者直接|sort -u命令直接在排序时去重
su 命令可以切换用户
su 用户名 只是切换用户,但并不会切换用户环境
su - 用户名 在切换用户的同时会切换环境
是否切换环境会导致 环境变量是否能继承
ssh命令可以远程登录一个系统,等于linux上的xshell远程连接器
ssh 用户名@新主机的ip地址 可以直接指定登录时选取的用户
ssh 新主机的ip地址可以直接连接一个系统,但需要自行给出登录的用户名
编写用户相关脚本
passwd 命令需要用户自行给出密码,是交互型命令,但在脚本的编写时不够方便
此时可以 echo 密码|passwd 用户名 --stdin
也可以在定义用户名或者用户密码时使用$变量来实现连续生成
例如
关于用户密码
用户的密码储存在 /etc/shadow文件中
密码并非以明文储存,而是以哈希算法进行加密后再存储
哈希算法只能由明文得到密文,无法从密文倒退明文(单向加密)
常见的哈希算法有 md5、sha1、sha2、sha128、sha256、sha512等
明文经过加密后得到的密文一定一模一样
但密文所对应的明文不一定只有一个,只是大概率
linux密码中一般使用sha512进行加密
且在加密时会通过加盐来使得密码难以被破解,在储存列表中第二个$到第三个$之间的就是这个账户的盐值
在用户登陆时系统会将输入的密码在加盐后进行加密,与储存的密文进行对照,如果一致则表明密码正确
哈希算法及加密还可以用于文件传输过程中防止丢包和篡改,在文件传输前先传输密文,在传输结束后将得到的文件进行加密并将得到的密文与传输的密文对照,如果一致表示文件没有问题
加密的命令为 哈希算法sum 需要加密的内容
grep 筛选特征 目标文件 命令可以对于需要的文件进行筛选
/etc/login.defs文件是用户属性文件,可以通过对该文件进行更改来指定新的密码过期天数,加密算法等属性
用户的家目录
root用户具有超级权限,可以对所有文件进行访问修改和进行,当删除root用户并将其他用户的uid更改为0时,该用户可以升格为新的root用户,获得超级权限
一般用户只能对自己的家目录和 /tmp目录具备权限,对其他目录没有更改权限
家目录下存在几个重要的隐藏文件
.bash_history (记录上次注销前的历史命令)
以下都是脚本文件
.bash_logout (用户登陆时执行)
.bash_profile (用户退出时执行)
储存PATH环境变量,可以通过对该文件的修改来永久改变PATH变量
.bashrc (用户进入新的bash环境时执行)
储存别名,可以通过对该文件的修改达成别名的永久保存
.bashrc 和.bash_profile可以做用户的个性化设置,但对其的修改只会对当前用户生效
在 /etc 文件夹中的profile和bashrc文件可以对整个系统进行全局配置,会对所有用户对产生效果,一般不进行修改
家目录是在用户新建时对应的在/home文件夹下新建一个家目录,此时会从/etc/skel 文件中将.bash_logou .bash_profile .bashrc 文件复制到新的家目录中
当脚本文件输出了一行不需要的文本的时候,可以通过将该文本 &> /dev/null 来进行消除
/dev/null 文件夹是一个特殊的黑洞文件,一般用于使信息不往屏幕上输出
如何禁用某个用户的登录
usermod -L
passwd -l
以上两种命令都是将用户的密码上锁,使用户无法登录
直接用userdel删除用户(但会存在丢失文件的风险)
将登录shell信息修改为 /sbin/nolgin
用户具体的作用
1.登录linux系统
用户可以用于登录linux系统,而且可以通过ssh服务进行远程登录系统,所以用户的信息安全需要得到保障,否则可能被黑客利用来登录后进行非法操作
2.启动相关服务
在用户登录后,可以通过service命令对于所需要的服务进行启动
3.登录相关服务
用户可以进行相关服务的登录,比如ftp服务,在一个公共的服务器中进行文件的上传和下载
ftp服务
ftp服务需要用户在关闭防火墙后,可以在任意可以使用ftp服务的网址中对该用户搭建的ftp服务器中的内容进行访问,如果是外来用户会使用匿名用户ftp进行登录,内容存放于/vat/ftp中,而其他用户的内容都存放在其家目录中,ftp用户会在ftp服务被下载时自动新建出系统用户