linux对用户和组的基本操作
- 查看用户所属的组
切换到当前用户,输入id命令即可
- 添加用户amberli,并且为创建的用户指定所在的目录
# adduser -d /usr/amberli -m amberli
-d /usr/amberli 指定用户所在的目录
- 给新添加用户amberli创建密码
# passwd amberli
Changing password for user amberli.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
- 查看用户详情信息
# cat /etc/passwd|grep amberli
amberli:x:1002:1002::/usr/amberli:/bin/bash
amberli:添加的新用户名
x:密码信息
1002:用户amberli的id
1002:用户amberli所属组的id
/usr/amberli:用户amberli所指定的目录
/bin/bash 用户amberli命令位置
- 查找组详情信息
# cat /etc/group
root:x:0:
root用户默认id为0
docker:x:994:
安装docker后,默认创建组group为docker, docker的id为994
系统用户 :
CentOS5, 6 : 1 ~ 499
CentOS7 : 1 ~ 999
普通用户:
CentOS5,6 : 500 ~ 65535
CentOS7 : 1000 ~ 65535
- 给添加的新用户amberli指定所在的组
# usermod -G root,docker amberli
注意格式,多个组用-G,组名之间用逗号","隔开 后面为用户名
查看是否成功,需切换到新用户 su amberli
# su amberli
输入id命令
$ id
uid=1002(amberli) gid=1002(amberli) groups=1002(amberli),0(root),994(docker) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
可以看出groups=1002(amberli),0(root),994(docker) 当前amberli所属的组有3个
- 删除用户
# userdel -frZ amberli
userdel: user amberli is currently used by process 14188
Login mapping for amberli is not defined, OK if default mapping was used
- 给用户添加权限
1、添加用户
首先用adduser命令添加一个普通用户,命令如下:
#adduser amberli //添加一个名为amberli的用户
#passwd amberli //修改密码
Changing password for user amberli.
New UNIX password: //在这里输入新密码
Retype new UNIX password: //再次输入新密码
passwd: all authentication tokens updated successfully.
2、赋予root权限
方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
然后修改用户,使其属于root组(wheel),命令如下:
#usermod -g root amberli
修改完毕,现在可以用amberli帐号登录,然后用命令 su - ,即可获得root权限进行操作。
方法二:修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
amberli ALL=(ALL) ALL
修改完毕,就可以用amberli帐号登录,然后用命令 su - ,即可获得root权限进行操作。
Bash的标准输入输出
- 名词解释
- 标准输入(stdin):键盘上的输入 文件描述符-->0
- 标准输出(stdout):屏幕上正确的输出 文件描述符 -->1
- 标准错误(stderr): 屏幕上错误的输出 文件描述符-->2
- 相关符号
>: 标准输出重定向,覆盖重定向,1>或>标准输出重定向,2>标准错误重定向
>>: 重定向追加,1>>标准输出追加,2>>标准错误追加
<: 标准输入
&>: 标准输出和标准错误一起重定向
/dev/null linux系统下特殊的设备文件,空设备,类似黑洞(什么都可以往里放,但看不见)
Linux下文件查找命令
- 命令查找
- which 命令:找出命令的绝对路径
- whereis 命令:找出命令的路径以及文档手册信息
- 文件查找(find)
- find 命令:精确查找,磁盘搜索,IO读写,cpu开销大
- find 查找路径 选项 关键字
-name 按照文件名查找
-iname 按照文件名忽略大小写查找
-size 按照文件大小来查找 +1M 大于1M -1M小于1M 1M等于1M
-type 按照文件类型来查找
-mtime 按文件修改时间来查找文件 -n指n天以内 +n指n天以前
-atime 按文件访问时间来查找
-ctime 按文件创建时间来查找
-perm 按照文件权限来查找文件
- find 路径 选项 关键字 动作
-exec 对查找到的文件直接执行该参数后的shell命令
-ok 对查找到的文件询问式执行该参数后的shell命令
-delete 删除查找到的文件
-ls 列出查找到的文件
-print 打印出查找到的文件(默认选项)
find 路径 选项 '关键字' -exec | -ok shell命令 \; (一定要以空格、反斜杠、分号结尾 \;)
-
Linux相同路径下文件名严格区分大小写 windows不区分
-
tar命令:可以将多个文件打包成一个并且压缩,不会改变文件属性,很常用
tar 选项 打包后的文件 需要打包的文件
常用选项 说明
-c 创建tar包(打包)
-z 调用gzip工具压缩
-j 调用bzip2工具压缩
-J 调用xz工具压缩
-v 显示详细信息
-f 指定包名
-x 解压
-C 指定解压路径
-t 列出或查看tar包内容
-r 往tar包里追加文件
用户的基本管理
- 创建用户(useradd)
useradd [选项] 用户名
常用选项:
-u 指定用户uid,唯一标识,必须唯一
-g 指定用户的默认组(主组)
-G 指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
-d 指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
-s 指定用户shell
- 查看系统支持的shell(命令解释器)
[root@master ~]# cat /etc/shells
/bin/sh 软连接文件
/bin/bash 系统默认的解释器
/usr/bin/sh 软连接文件
/usr/bin/bash 系统默认的解释器
- 用户密码信息保存文件/etc/shadow
了解相关配置文件内容,可以通过求man文档解决,即 man 5 shadow
以冒号:分隔为9列,如下:
login name
登录的用户名
encrypted passwd
加密后的密码;!!表示空密码,没有设置密码
date of last password change
最后一次更改密码的天数(距离1970年1月1日到现在的天数)
minimum password age
密码的最小生存周期;0表示可以立刻修改密码;如果是3,则表示3天后才能更改密码
maximum password age
密码的最大生存周期;如果是30,则表示每隔30天需要更新一次密码
password warning period
密码过期前几天发出警告; 7表示过期前7天开始警告
password inactivity period
密码的宽限期;如果3表示允许密码过期3天,3天内还能登陆系统,但是要求修改密码。3天后(密码过期3天后账户被封锁,需要联系管理员)
account expiration date
账户过期的时间,账户过期的用户不能登录,密码过期用户不能用原来的密码登录,以1970年1月1日算起
reserved field
保留
- 设置用户密码
方法一:passwd 用户名 给指定的用户设置密码(管理员可以给任何人设置任何密码)
方法二:echo 密码|passwd --stdin 用户名 (非交互式,通常用于脚本中)
- 修改用户信息(usermod)
usermod [选项] 用户名
常用选项
-u 指定用户uid,唯一标识,必须唯一
-g 指定用户的默认组(主组)
-G 指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
-d 指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx
-s 指定用户默认shell
-md usermod -md 新的家目录 用户名 (可以将用户之前的家目录移动到新的家目录)
- 删除用户
userdel [选项] 用户名
常用选项:
-r 删除用户并且移除其家目录和邮箱
-f 强制删除正在登陆的用户
- 组成员管理
gpasswd [选项] 组名
常见选项:
-a 添加用户到组
-d 从组中删除成员
-A 指定管理员
-M 指定组成员,可以批量添加用户到组中
-r 删除密码
gpasswd 组名 给组设置密码
vim编辑器
- 命令行模式
- 命令行模式可以进行一些基本的复制、删除、跳转、撤销、移动等操作
命令 | 含义 | 备注 |
---|---|---|
yy | 复制光标所在行 | 3yy表示一次性复制3行 |
p(小写) | 光标所在行后面粘贴 | |
P(大写) | 光标所在行前面粘贴 | |
gg | 光标快速跳转到文件首行,并且定位到首字符 | 3gg表示快速跳转到文件第3行行首字符 |
G | 光标快速跳转到文件尾行,并且定位到首字符 | |
home | 跳转到行首 | shift+6即^符合表示行首 |
end | 跳转到行尾 | shift+4即$符号表示行尾 |
dd | 删除光标所在行 | 3dd表示删除3行(包括光标所在行) |
d^ | 从光标位置删到行首,不包括光标位置 | |
d$ | 从光标位置删至行尾,包括光标位置,与D作用相同 | |
dG | 删除光标所在行以及下面所有行 | |
dgg | 删除光标所在行以及上面所有行 | |
x(小写) | 删除光标所在字符后面一个字符,3x删除3个字符 | 类似windows下delete键 |
X(大写) | 删除光标所在字符前面一个字符,3X删除3个字符 | 类似windows下backspace键 |
u | 撤销操作 |
- 搜索替换
搜索替换
:/root n往下匹配;N网上匹配
替换模式
:%s/root/ROOT/ 全文搜索,替换每一行匹配到的第一个关键字
:%s/root/ROOT/g 全文搜索,替换每一行所有匹配到的关键字
:%s/root/ROOT/gc 交互式替换(询问是否替换 y 替换 n 不替换)
:%s\/sbin\/nologin/\/bin\/bash/ \转义字符
:%s#/sbin/nologin#/bin/basg#g 更换分隔符
:7s/shutdown/SHUTDOWN/g 只替换第7行的内容
取消高亮
:noh (no highlight)
- 其他功能
临时设置行号:
:set number 或 :set nu
临时取消行号:
:set nonumber 或 :set nonu
永久设置行号
echo "set number" >> /etc/vimrc
:set list 查看控制符
地址定位:
:1,5 w /tmp/5.txt 保存前5行内容到/tmp/5.txt
:r /tmp/5.txt 在光标所在行下面读取/tmp/5.txt文件内容
:3r /tmp/5.5xt 在当前文本的第3行后读取/tmp/5.txt文件
:1,8d 删掉文本的1到8行
:nr !command 在第n下面读取命令所执行的结果
:n! command 用命令的执行结果替换第n行内容
-
可视化模式
- 按键:ctrl+v(可视块) 或V(可视行), 然后按下箭头方向键来选中所需内容
- 复制的区块,按下y键进行复制(不要按下yy),最后按下p键粘贴
- 退出可视模式按Esc
-
如何修改文件的属主和属组
- chown命令修改
- chown命令既可以修改文件的属主,也可以修改文件的属组
- chgrp命令只能修改文件的属组
只修改文件的属主
# chown 用户名 文件名
修改文件的属主和属组
# chown 用户名.组名 文件名
# chown 用户名:组名 文件名
# chown 用户名. 文件名 //没有指定组名,默认是用户的主组
只修改文件的属组
# chown .组名 文件名
# chown :组名 文件名
可以加-R选项,表示递归修改
# chgrp 组名 文件名
- 高级权限
冒险位(SETUID)
冒险位,指文件操作者(用户)临时拥有文件拥有者的权限
冒险位,一般针对的是命令或者脚本文件
冒险位,用字母表示是s或S;数字表示是4
冒险位的设置:chmod u+s 文件名 或者 chmod 4xxx 文件名
强制位(SETGID)
强制位一般针对的是目录
如果一个目录拥有强制位,那么任何用户在该目录里所创建的任何文件的属组都会继承该目录的属组
强制位,用字母表示是s或S;数字表示是2
强制位的设置:chmod g+s 文件名 或者 chmod 2xxx 文件名
粘滞为(STICKY)
粘滞位,一般针对的是公共目录
如果一个公共目录拥有粘滞位,那么该目录下的文件,只有root和文件的创建者可以删除,其他人只能自己管理自己,(A用户不能删除B用户创建的文件)
粘滞位,用字母表示是t或T,数字表示是1
粘滞位的设置:chmod o+t 文件名 或者 chmod 1xxx 文件名
- 高级权限总结
高级权限分类:
冒险位:针对命令 s/S 4 chmod u+s 命令文件
强制位:针对目录 s/S 2 chmod g+s 目录
粘滞位:针对公共目录 t/T 1 chmod o+t 公共目录
高级权限设置:
chmod 4xxx 文件名
chmod 2xxx 目录名
chmod 1777 公共目录
- 文件默认权限有谁控制
文件默认权限由umask控制
1.临时控制
临时控制,指的是用命令umask临时设置,只在当前终端当前进程中生效
查看当前用户的umask
[user02@master code]$ umask
0002
[user02@master code]$ exit
logout
[root@master tmp]# umask
0022
注意:
1.管理员和普通用户的umask不同,就表示管理员和普通用户创建的文件默认权限不同
2.第1位数字表示高级权限;后3位数字表示普通权限
[root@master ~]# 管理员默认权限:目录 755 文件 644^C
[root@master ~]# 普通用户默认权限:目录 775 文件 664^C
如何临时设置用户的umask
linux系统中,默认创建目录的最大权限是0777;文件的最大权限是0666
umask = 文件的最大权限 - 文件的默认权限
[root@master ~]# umask 0007 临时设置root用户的umask为0007
问:umask=0007, 那么在当前终端上root用户所创建目录和普通文件的权限?
计算如下:
umask = 文件的最大权限-文件的默认权限
目录:
目录的默认权限=0777-umask=0777-0007=0770 rwxrwx---
普通文件:
文件的默认权限=0666-umask=0666-0007=0660 rw-rw----
说明:
1.权限用数字表示是没有负数,所以最小为0
2.默认权限规则遵循Linux系统中权限最小化原则
$ stu1 umask 0003
目录:0777-0003=0774 rwxrwxr--
文件:0666-0003=0663 rw-rw--wx 实际权限:rw-rw-r--
$ stu2 umask 0005
文件:0666-0005=0661 rw-rw---x 实际权限:rw-rw--w-
- 相关配置文件介绍
全局配置文件(针对所有用户所有进程)
/etc/profile 系统和用户的环境变量信息,当用户第一次登录时,该文件被读取
/etc/bashrc 每个运行的bash信息(系统别名,函数及默认权限的定义),当bash被打开时,该文件被读取
局部配置文件(针对某特定用户以及用户的所有进程)
~/.bashrc 当前用户的bash信息,当前用户登录和每次打开shell时该文件被读取
~/.profile 当前用户的环境变量,当用户登录时,该文件被读取
~/.bash_profile 保存当前用户历史命令的文件
~/.bash_logout 当用户退出bash或终端时,会首先执行该文件里的代码,然后再退出
全局和局部配置冲突时,一般以局部配置为准;二般情况,看情况