用户管理
useradd 创建用户
-u(UID) 指定UID
-g(GID) 指定基本组
-G(GID1,GID2,...) 指定附加组
-c “注释信息” 指定用户注释信息(昵称)
-d /path/to/dir/ 指定某个目录为用户家目录(/jiamulu/test)
-s /shell 指定用户使用的shell
useradd -u 12345 -g redhat -G zhangsan -c "suibianxie" -d /jiamulu/test -s /sbin/nologin(不可登录) test
/bin/bash (可登录)
usermod(修改)
tail -1 /etc/passwd(查看用户数据库最后一行)
usermod -l test01 test 修改登录名
修改UID和GID为0的用户一定是root用户
vim etc/passwd
/sbin/nologin ---> /bin/bash
相关文件
/etc/skel
用户家目录中的默认隐藏配置文件
/etc/login.defs
用户的相关默认属性
passwd 修改用户密码
--stdin
echo "redhat" | passwd --stdin USERNAME(脚本)
/etc/default/useradd 设置新用户的默认值
userdel
userdel USERNAME 删除用户(保留用户的家目录和邮箱)
/home/ 和 /var/spool/mail/
-r 删除用户时删除用户家目录和用户的邮箱
id 查看用户的ID信息,选项同useradd
-u 显示UID
-G 显示附加GID
-g 显示GID
usermod 修改用户相关信息,选项同useradd
-u 修改UID
-g 修改基本组,基本组必须事先存在
-G 这个选项会覆盖之前的附加组,和-a选项配合使用
usermod -a -G 追加附加组
-c 修改用户注释信息
-s 修改用户shell
-l 修改登陆名
chsh -s 修改用户shell
grep 过滤
组管理
groupadd 添加一个组
-g GID
-r 添加系统组
groupdel 删除一个组
groupmod 修改一个组
-g GID
-n GRPNAME 修改组名
gpasswd 修改组密码
newgrp 切换到一个新组
使用exit退出新组
history 查看命令历史
grep 过滤指定文本在某些文件,支持正则,支持扩展正则 -E egrep
grep root /etc/passwd 查找passwd文件中是否有root
chmod 777 /test(修改该目录权限)
权限管理
什么是权限?
单用户 单任务
多用户 多任务 Linux
现代操作系统
权限
认证 密码、指纹、人脸、虹膜、声音
授权 认证之后的用户所释放给你的资源
审计 过程 结果
3A认证框架
认证 用户和组的管理
授权 权限的控制
审计
文件
- 没有对应的权限
r 可以读取文件内容
w 可以编辑文件内容
x 可以执行文件 文件必须是可执行文件
目录
- 没有对应权限
r 表示可以列出目录
w 表示可以在目录创建删除文件。。。
x 表示可以进入(cd)该目录
第一组
rw- 表示的是该文件所属用户对该文件的权限
第二组
r-- 表示的是该文件所属组的所有用户对该文件的权限
第三组
r-- 表示的是除了上面的那些人对该文件的权限
chmod(修改权限) 权限 filename/dirname
文件名 目录名
chmod u+x root
用 字母o 表示其他人
用 字母g 表示所属用户组的所有用户
用 字母u 表示所属用户
用 字母a 表示所有用户
用 + 表示赋予指定的权限
用 - 表示取消指定的权限
用 = 表示直接赋予指定权限(ugo)
chomd ugo = r
数字表示法(指定权限):
1 0
有权限 无权限
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
777
rwxrwxrwx
chmod 777 root
r-- 4
-w- 2
--x 1
633
rw--wx-wx
chmod 权限数字表示法(filename)
umask 查看权限掩码,文件默认权限为666,目录默认权限为777
umask 权限掩码 更改权限掩码
rw-r--r-- 644 为什么?
rwxr-xr-x 755 为什么?
0 022
022(权限掩码) 表示的是在创建文件或者目录时从文件或者目录上拿走的权限
文件:
644
022 666 rw-r--r--
请注意:文件默认不配置可执行权限
目录:
755
022 777 rwxr-xr-x 目录所对应的权限
x:目录x权限是用来定义能否进入该目录
权限掩码 每个用户可以有自己设定的权限掩码
如果要修改权限掩码 umask 权限掩码 直接修改
请注意:修改的是当前用户
全局权限可以修改,但是没必要。
全局配置文件 局部配置文件
rw--w--w- 622 044 666
rw-r--r-- 644 033相当于022 1 0 3 2 5 4
请注意:文件权限掩码中,x权限没有意义
chown 改变文件或者目录的所属用户和所属组
chown USERNAME:GROUPNAME FILENAME -R(递归:更改目录及目录里所有文件)
chown redhat:redhat haha
chown root. haha 修改用户及所属组为root
chown .redhat haha 修改文件所属组为root
chown redhat.root haha 修改为redhat用户和root组
chgrp 修改文件或目录的所属组
chgrp test /test
安全上下文
ps -ef 列出该用户的所用进程
ps -ef | grep passwd
chmod u-s /usr/bin/passwd
secure context
源进程所拥有权限为发起者所拥有的,追加s权限后,进程所拥有的权限为程序拥有者所所拥有的权限
特殊权限
SUID: 运行程序时,进程的属主是程序文件自身的权限,而不是进程发起者
chmod u[+|-]s FILENAME 如果文件原来有执行权限就显示为s,反之显示S
SGID: 运行程序时,进程给的所属组是程序文件自身的数组,而不是进程发起者的基本组
为目录属性,给文件定义没有意义。
charp test /test 修改所属组
chmod g[+|-]s DIRNAME
Sticky: 在一个公共目录,每个用户都可以创建文件,删除自己的文件,但不能删除别人的文件 对目录有效
chmod o[+|-]t DIRNAME
扩展权限
setfacl Filesystem Access Control list
-m 设定
u: 用户
g: 组
setfacl -m u:UID:perm filename
-x 取消
u: 用户
g: 组
setfacl -x u:test rootpassword
setfacl -b rootpassword
getfacl filename
隐藏属性
chattr
+ 表示设置该属性
- 表示取消该属性
a
i
lsattr
shell特性:
1、命令行编辑
Ctrl+a 跳到命令行行首
Ctrl+e 跳到命令行行尾
Ctrl+d 向后删除,类似delete
Ctrl+u 删除光标至行首的内容
Ctrl+k 删除光标至行尾的内容
Ctrl+左右箭头, 在模拟终端中支持按单词跳转
Ctrl+l 清屏,等同于clear
Ctrl+c 取消执行当前命令
2、命令历史
history 命令历史管理
命令历史文件为~/.bash_history
命令历史大小由环境变量HISTSIZE来指定,默认为1000
变量配置文件为/etc/profile
-c 清空整个命令历史
-d 删除指定命令历史
-w 将缓冲区中的命令历史保存到命令历史文件
使用技巧
!n 执行命令历史中第n条命令
!-n 执行命令历史中倒数第n个命令
!! 执行上一条命令
!KEY 执行最近一次以指定KEY开头的命令
!$ 引用上一个命令中最后一个参数
ESC+. 同上,多次按还可以切换
ALT+. 同上,在远程终端无效?
3、自动补全
命令补全
在PATH环境变量下搜索补全要输入的命令
路径补全
在输入的字符开始的路径下补全
选项补全
在输入命令之后,可以自动补全选项
什么是变量?
内存使用空间的名称 命名的内存空间