文章目录
- 用户管理
-
- 配置文件
- 创建用户
- 查看用户账号信息
- 修改账户属性
- 删除用户
- 切换用户
-
- bash配置文件
- 密码管理
- 修改用户密码期限
- 密码生成工具
- 组管理
-
- 创建组
- 修改组信息
- 删除组
- 给组设密码
- 切换组
- 权限管理
-
- 权限的二进制十进制转换
- 修改权限
- 遮罩码
- 特殊权限
-
- SUID
- SGID
- Sticky
- facl
- 管理命令
用户管理
配置文件
字符段\配置文件 | /etc/shadow | /etc/passwd | /etc/group |
---|---|---|---|
第一个字段 | 登录名 | 用户名 | 组名 |
第二个字段 | 加密后的密码 | 密码占位符 | 组密码 |
第三个字段 | 最近一次更改密码的日期 | UID | GID |
第四个字段 | 密码的最小使用期限 | GID | 以当前组为附加组的用户列表(分隔符为逗号) |
第五个字段 | 密码的最大使用期限 | 用户的描述信息 | |
第六个字段 | 密码警告时间段 | 用户家目录 | |
第七个字段 | 密码禁用期 | 用户的登录shell | |
第八个字段 | 帐号的过期日期 | ||
第九个字段 | 保留字段 |
例:
jay : x :1000:1000: jay : /home/jay :/bin/bash
用户名 密码占位符 UID GID 注释信息 用户家目录 执行shell
- 每个用户都有一个ID,就像是我们的身份证号码,是唯一的
- root用户的UID、GID都是0
- 用户分为
- 系统用户:用户ID在1-999
- 登录用户:用户ID在1000-60000
创建用户
useradd
- 语法:
[选项] 用户名useradd
- 常用选项;
-
指定uid-u
-
指定拥护所属基本组、组名或GID-g
-
为用户添加附加组,附加组必须事先存在-G 组名
-
“注释信息” 添加注释信息-c
-
指定用户的家目录。此目录必须不能事先存在,否则将不会从/etc/skel中复制环境设置文件-d 目录
-
指定登录shell-s shell
-
创建用户时不给其创建家目录-M
-
添加一个系统用户-r
-
[[email protected] test]# id jay //查看用户jay的详细信息
uid=1000(jay) gid=1000(jay) 组=1000(jay)
[[email protected] test]# useradd -u 1005 -g jay -G user lili //创建用户lili,指定uid为1005,基本组为jay组,附加组为user
[[email protected] test]# id lili
uid=1005(lili) gid=1000(jay) 组=1000(jay),1001(user)
[[email protected] test]# ls /home/
jay lili bad
[[email protected] test]# ls /opt/
rh
[[email protected] test]# useradd -d /opt/tom tom //创建用户,指定家目录为/opt/tom
[[email protected] test]# ls /opt/
rh tom
[[email protected] test]# id tom
uid=1006(tom) gid=1006(tom) 组=1006(tom)
[[email protected] test]# useradd -s /bin/sh lisi //创建用户lisi指定执行shell为/bin/sh
[[email protected] test]# su - lisi
-sh-4.2$
[[email protected] test]# useradd -M -s /sbin/nologin -r jerry //创建一个系统用户jerry不创建家目录,指定shell不允许登录系统,
[[email protected] test]# id jerry
uid=992(jerry) gid=990(jerry) 组=990(jerry)
[[email protected] test]# ls /home/
jay lili lisi bad
[[email protected] test]# su jerry
This account is currently not available.
[[email protected] test]# vim /etc/login.defs //默认配置
- 在创建用户时,会默认创建一个相同名的组,这个组叫私有组也叫基本组
除了基本组,用户还可以被加到其他组,这个组叫附加组
创建了一个用户,我们要怎么看是否创建成功了呢?这个时候,就会用到
命令了。
id
查看用户账号信息
id
- 语法:
[选项] 参数id
- 常用选项:
-
查看UID-u
-
查看GID-g
-
查看Groups-G
-
[[email protected] test]# id -u jerry
992
[[email protected] test]# id -g jerry
990
[[email protected] test]# id -G jerry
990
修改账户属性
usermod
- 语法:
[选项] 用户名usermod
- 常用选项:
-
修改uid-u
-
修改gid-g
-
添加附加组,不使用-a选项,会覆盖此前的附加组-a -G
-
改变用户家目录的同时把原来家目录的文件移动到新的家目录中-d -m
-
指明用户帐号过期日期-e YYYY-MM-DD
-
设定非活动期限-f INACTIVE
-
锁定帐号。被锁定的帐号在/etc/shadow文件中密码前面会有一个感叹号-L
-
解锁帐号-U
-
[[email protected] test]# id bad //查看用户详细信息
uid=1001(bad) gid=1001(user) 组=1001(user)
[[email protected] test]# usermod -u 1005 bad //修改uid为1005
[[email protected] test]# id bad
uid=1005(bad) gid=1001(user) 组=1001(user)
[[email protected] test]# usermod -g 1000 bad //修改gid为1000
[[email protected] test]# id bad
uid=1005(bad) gid=1000(jay) 组=1000(jay)
[[email protected] test]# usermod -G user bad //添加附加组为user
[[email protected] test]# id bad
uid=1005(bad) gid=1000(jay) 组=1000(jay),1001(user)
[[email protected] test]# groupadd a //创建新组为a
[[email protected] test]# usermod -G a bad //给用户bad指定附加组a
[[email protected] test]# id bad
uid=1005(bad) gid=1000(jay) 组=1000(jay),1002(a)
[[email protected] test]# usermod -aG user bad //再原附加组的基础上添加附加组
[[email protected] test]# id bad
uid=1005(bad) gid=1000(jay) 组=1000(jay),1001(user),1002(a)
[[email protected] ~]# tail -3 /etc/passwd //查看密码配置文件
tcpdump:x:72:72::/:/sbin/nologin
jay:x:1000:1000:jay:/home/jay:/bin/bash
bad:x:1005:1000::/home/bad:/bin/bash
[[email protected] ~]# usermod -c "hello bad" bad //为用户bad添加注释信息
[[email protected] ~]# tail -3 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
jay:x:1000:1000:jay:/home/jay:/bin/bash
bad:x:1005:1000:hello bad:/home/bad:/bin/bash
删除用户
userdel
- 语法:
[选项] 用户名userdel
- 选项:
-
删除用户的同时删除其家目录-r
-
[[email protected] test]# ls /home/ //查看家目录下的目录里
jay lili lisi bad
[[email protected] test]# userdel -r lili //删除用户,并删除家目录
[[email protected] test]# ls /home/
jay lisi bad
如果我们在删除用户的时候,没有删除其家目录,那么在 /home
目录下,还是依旧会看到我们创建的用户的目录。可以将目录删除,或者重新建一个同名的用户,重新删除用户。
切换用户
su
切换用户的方式 | 特点 |
---|---|
su 用户名 | 非登录式切换,即不会读取目标用户的配置文件 |
su - 用户名 | 登录式切换,即会读取目标用户的配置文件。完全切换 |
su - | 不指定用户时默认切换至root用户 |
[[email protected] test]# su - jay //切换jay用户,并切换到jay的家目录
上一次登录:日 10月 20 15:45:30 CST 2019:0 上
[[email protected] ~]$ pwd //查看当前位置
/home/jay
[[email protected] ~]$ exit
登出
[[email protected] test]# su jay //切换用户,不切换目录
[[email protected] test]$ pwd
/root/test
[[email protected] test]$ su - //不指定用户默认为root用户
密码:
上一次登录:四 11月 7 00:40:36 CST 2019pts/0 上
[[email protected] ~]# whoami //查看当前登录用户
root
- 语法:
su - 用户名 -c '命令'
- 切换身份执行命令,命令执行结束后又回到原来的身份
[[email protected] ~]# su - bad -c 'touch abc'
[[email protected] ~]# ll /home/bad/
总用量 0
-rw-r--r--. 1 bad jay 0 11月 7 14:07 abc
root用户切换至其他用户时,是不需要密码的。但是其他的用户想要切换别的用户,需要输入切换的用户的密码
sudo
- 配置文件:/etc/sudoers
- 语法:sudo 选项 命令
- 选项:
-
显示版本编号-V
-
会显示版本编号及指令的使用方式说明-h
-
列出当前用户可以使用的所有sudo类命令-l
-
在第一次执行时或是在N分钟内没有执行(N默认为5)会问密码-v
-
使认证信息失效,如果不指定-k,默认认证信息在5分钟后失效-k
-
将要执行的指令放在后台执行-b
-
用户名 //以指定的用户名执行命令,默认为root-u
-
bash配置文件
配置文件类型 | 配置文件路径 |
---|---|
全局配置 | /etc/profile、/etc/profile.d/*.sh、/etc/bashrc |
个人配置 | ~/.bash_profile、~/.bashrc |
配置文件类型 | 功能 |
---|---|
profile类 | 为交互式登录的shell提供配置,用来设定环境变量、运行命令或脚本 |
bashrc | 为非交互式登录的shell提供配置,用来设定本地变量、定义命令别名 |
在RHCE的考试中,为了保险起见,通常会写一个脚本,以保证我们所做的服务配置,能够在机器重启之后挂载成功。而这个脚本需要执行就会放在全局配置文件中,以及命令别名都会涉及到这里。
密码管理
passwd
- 语法:
[选项] usernamepasswd
- 选项:
-
从标准输入获取用户密码--stdin
-
锁定用户-l
-
解锁用户-u
-
删除用户密码-d
-
指定最短使用期限-n mindays
-
指定最长使用期限-x mandays
-
提前多少天开始警告-w warndays
-
非活动期限,密码过期后到禁用前的这段时间-i inactivedays
-
这里没有举例,可以自己练习,可以在 /etc/shadow
中查看修改的用户的详细信息
修改用户密码期限
chage
- 用于修改用户密码过期信息的命令
- 语法:
[选项] usernamechage
- 选项:
-
最近一次的修改时间-d
-
过期时间-E
-
非活动时间-I
-
最短使用期限-m
-
最长使用期限-M
-
警告时间-W
-
这条命令我用到过的比较少,但是工作应该用的会多一点。
密码生成工具
openssl
-
密码生成工具openssl
- 语法:
command [ command_opts ] [ command_args ]openssl
- 选项:
-
包含标准命令、消息摘要命令、加密命令command
-
查看程序版本号version
-
提取特征码dgst
-
生成密码passwd
-
生成伪随机数rand
-
//提取特征码
[[email protected] ~]# openssl dgst -md5 /etc/fstab
MD5(/etc/fstab)= a977cc5e638d779ed880f3fee6d7067e
//生成密码 openssl passwd -1 -salt string //string一般为8位
[[email protected] ~]# openssl passwd -1 -salt hellotom
Password:
$1$hellotom$HpEDmPGqWwhP/eHg0kJHA0
//生成随机数 openssl rand -base64 NUM
//NUM表示随机数的长度
[[email protected] ~]# openssl rand -base64 20
S/q8tjUSBuUNHb+0cgDX66dbvTQ=
组管理
创建组
groupadd
- 语法:
[选项] groupnamegroupadd
- 选项:
-
指定GID-g GID
-
添加一个系统组-r
-
修改组信息
groupmod
- 语法:
[选项] groupnamegroupmod
- 选项:
-
指定GID-g GID
-
修改组名-n groupname
-
删除组
groupdel
- 语法:
groupnamegroupdel
给组设密码
gpasswd
- 语法:
[选项] groupgpasswd
- 选项:
-
将用户添加至组-a username
-
将用户从组中删除-d username
-
删除组密码-r -passwd
-
切换组
newgrp
- 语法:
groepnamenewgrp
这条命令我几乎没有用过。当你以以一个非root的用户登录,可以使用这条命令临时切换到新的基本组,但是需要输入要切换的基本组的密码。使用 exit
就可以退出新的基本组,回到当前用户原本的基本组。
权限管理
那权限怎么看呢?其实很简单,在使用
ll
命令的时候,是不是发现文件显示一大串?那么最前面的一列就是。第一个字符表示文件类型,之后的九位就表示权限。
- 首先我们要知道,文件的权限主要针对的对象
-
(owner)属主,即文件拥有者u
-
(group)数组,即文件拥有的组g
-
(other)其他用户,即除文件拥有者及拥有者所属组之外的所有用户o
-
- 每个文件或者目录都有三种权限
-
可读r
-
可写w
-
可执行x
-
注意!在RHCSA的题目中,有涉及到设置权限的题,其中有一个坑就是要你给目录可读的权限。因为是个目录,如果可读,那么就一定有执行权限,因为你要进入到目录中去才可以查看目录中的内容。
权限的二进制十进制转换
- 不要慌,进行进制转换,是为了帮助我们更好的理解权限
权限 | 二进制 | 十进制 |
---|---|---|
— | 000 | |
–x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r– | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
- 权限通常有两种表达方式,一种是用字母
来表示,还有一种就是用十进制数来表示rwx
不要看着这么多就慌了,记不住怎么办?我在刚开始学的时候,权限完全是懵逼的,但是只要你理解了,也就很简单。无非就读写执行,421。数字表示就是自由组合了。
修改权限
chmod
- 即change modify,修改
- 语法:
[选项] 文件或目录chmod
- 选项:
-
递归修改权限,修改目录及目录中的文件权限时需要-R
-
chown
- 即change owner,修改属主,也可以修改属组
- 语法:
//修改属主chown 用户名 文件名
- 语法:
//修改属主和属组,中间有点chown 用户名.组名 文件名
- 选项:
-
递归修改权限-R
-
在RHCSA中,会有一道题是需要修改文件的属主和属组的。
chgrp
- 语法:
[选项] 组名 文件名chown
- 选项:
-
递归修改-R
-
这条命令我们一般使用的少,一般都是直接使用的 chown
。
遮罩码
- 这个其实就是将文件的权限进行一个隐藏,能更安全
- 有个变量叫umask,默认值为0022
- 文件最终权限是:666-umask
-
目录最终权限是:777-umask
文件默认是不能具有执行权限的,如果算得结果有执行权限,则将其权限整体+1
特殊权限
SUID
- 针对可执行的程序文件
- 程序启动的进程的属主是程序文件自身的属主,不是启动者为属主
-
文件chmod u+s
-
文件chmod u-s
-
文件chmod 4755
-
- 程序启动的进程的属主是程序文件自身的属主,不是启动者为属主
如果文件本身拥有执行权限,则显示SUID为s,否则为S
SGID
- 针对目录
- 用户创建文件时,属组为此用户所属的基本组
-
目录chmod g+s
-
目录chmod g-s
-
目录chmod 2755
-
- 用户创建文件时,属组为此用户所属的基本组
如果目录本身拥有执行权限,则显示SGID为s,否则为S
Sticky
- 针对目录
- 在一个公共目录,每个人都能创建文件,删除自己的文件,但是不能删除别人创建的文件
-
目录chmod o+t
-
目录chmod o-t
-
目录chmod 1755
-
- 在一个公共目录,每个人都能创建文件,删除自己的文件,但是不能删除别人创建的文件
如果目录本身拥有执行权限,则显示Sticky为t,否则为T
后面两种权限在RHCSA中都会有相关的题目,需要掌握。
一般不会使用7755权限
facl
- Filesystem Access Control List,文件系统访问控制列表
- 语法:
[选项] 语法 文件名setfacl
-
设定-m
-
u:用户名:权限
-
g:组名:权限
-
-
取消特殊权限-x
-
u:用户名
-
g:组名
-
-
Remove all 即清除所有特殊权限-b
-
- 如果要为某个目录设定默认的访问控制列表,则设定时在u或g前面加上d
- setfacl -m d:u:test:rw 文件名
设置特殊权限也是RHCSA中必考的题目,需要多练习。
管理命令
-
显示当前系统登录用户,以及在做什么w
-
睡眠sleep
- sleep 数字
-
秒,默认s
-
分m
-
小时h
-
天d
-
- sleep 数字
写脚本为防止上一个命令没执行完下一命令就开始执行时可以加上sleep表示停顿#秒后再执行后面的命令
-
显示/var/log/wtmp文件,显示用户登录历史及系统重启历史last
-
显示最近#次的相关信息-n #
-
-
显示/var/log/btmp文件,显示用户错误的登录尝试lastb
-
显示最近#次的相关信息-n #
-
-
显示每个用户最近一次成功登录信息lastlog
-
用户名 //显示特定用户最近的登录信息-u
-
-
//显示路径基名basename
[[email protected] test]# ls
abc test
[[email protected] test]# ll abc
-rw-r--r--. 1 root root 0 11月 9 10:00 abc
[[email protected] test]# chown jay abc
[[email protected] test]# ll
总用量 0
-rw-r--r--. 1 jay root 0 11月 9 10:00 abc
drw-------. 2 root root 6 11月 9 09:32 test
[[email protected] test]# chown .jay abc
[[email protected] test]# ll abc
-rw-r--r--. 1 jay jay 0 11月 9 10:00 abc
[[email protected] test]# chown root.root
chown: "root.root" 后缺少操作数
Try 'chown --help' for more information.
[[email protected] test]# chown root.root abc
以上内容均属原创,如有不详或错误,敬请指出。
本文作者: 坏坏 本文链接: https://blog.csdn.net/qq_45668124/article/details/104567687
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!