Linux02(目录、文件、用户、用户组管理)
作者:互联网
目录
rootfs:根文件系统
/boot:系统启动相关的文件,如内核、initrd,以及grub(bootloader)
/dev:设备文件
设备文件:
块文件:随机访问,数据块
字符设备:线性访问,按字符为单位
设备号:主设备号(major)和次设备号(minor)
/etc:配置文件
/home:管理员的家目录
/lib:库文件
静态库,.a
动态库, .dll, .so(shared object)
/lib/modules:内核模块文件
/media:挂在点目录,移动设备
/mnt:额外的临时文件系统
/opt:可选目录,第三方程序的安装目录
/proc:伪文件系统;当系统没启动时,该文件夹时空的,当系统启动时,这个文件夹显示的是内核的映射(映像)文件
/sys:伪文件系统;跟硬件设备相关的属性映射文件
/tmp:临时文件
/var:可变化的文件
/bin:可执行文件,用户命令
/sbin:管理命令
# bin,sbin下是跟系统启动相关的命令
/usr(shared,read-only):全局的共享的只读文件
/usr/bin
/usr/sbin
/usr/lib
# usr下bin、sbin在系统自身启动起来以后,为了提供一些基本功能应该具备的命令或者可执行程序
/usr/local:
/usr/local/bin
/usr/local/sbin
/usr/local/lib
命名规则:
1.文件名长度不能超过255个字符;
2.不能使用/当文件名;
3.严格区分大小写;
相对路径
绝对路径
文件管理
目录管理
ls
cd
pwd
mkdir:创建空目录
-p:多级目录
-v:显示创建多级目录的创建信息
# mkdir -pv /root/m/n/l
1.如何一句命令创建/mnt/test/x/m,y?
方法一:mkdir -pv /mnt/test/x/m /mnt/test/y
方法二:mkdir -pv /mnt/test/{x/m,y}
2.如何在/mnt/test2下创建a_b,a_c,d_b,d_c文件夹?
(a+b)(c+d)=ab+ac+bc+bd
{a,b}_{c,d}
方法:mkdir -pv /mnt/test2/{a,b}_{c,d}
rmdir (remove directory) # 删除空目录
# 文件的创建何删除
1. touch # 本不是创建文件的命令,只是歪打正着了。
touch 文件名
# eg:touch a
2. nano 文件名
eg: nano abb
在Linux下在同一个文件夹下不能创建同一个名字的文件或文件夹
touch: # 它是改变文件的时间戳的命令
touch -c c # 表示不创建文件名为c的文件
touch -a a.txt # chang only the access time,不指定时间,默认将a.txt文件的权限时间修改成当前时间。
touch -m # chang onlu the modification time
touch -m -t 201810181818 a.txt # 表示将a.txt文件的modify时间改成指定的201810181818
stat: # 查看文件属性信息:主要是看Access Modify Change三种状态下的时间戳
stat 文件名
eg:stat a.txt
cp:
# 一个文件到一个文件,多个文件到一个目录
cp /etc/passwd /tmp 表示将etc下的passwd文件拷贝到tmp文件夹下,并且文件名还是passwd
cp /etc/passwd /tmp/test # 如果test不存在,表示将etc下的passwd文件拷贝到tmp下并重命名为test;如果test存在,1:如果test是个文件,则提醒我们是否要覆盖掉test文件;如果test是个目录,则将etc下的passwd拷贝到/tmp/test文件夹下,文件名仍是passwd。
# 如果源文件是多个文件,则目标必须是个目录
cp /etc/passwd /etc/issue /etc/inittab /tmp/abc # 这里abc必须存在,且是一个目录。
cp -a # 是把原文件或文件夹原样打包一份,归档复制,常用于备份。
cp -L # 拷贝原文件或者文件夹连接所指向的文件或者文件夹
cp -d # 只拷贝源文件或文件夹链接
# eg: cp /etc/{passwd,inittab,rc.d/rc.sysinit} /tmp
mv: # 移动文件
1. mv 源文件或目录 目标文件或目录
# 如何将一个文件或目录重命名?
mv abc mn # 表示将当前目录下的abc文件重命名为mn,或者当前目录下的abc目录重命名位mn目录
# mv还有一种特殊用法!!!!!!!
2. mv -t 目标文件或目录 源文件或目录 # 加-t与1相反
install:
-d DIRECTORY...:创建目录
-m 指定修改文件的权限,不指定默认有执行权限
install -d /tmp/install.1 /tmp/install.2 等同于 install -d /tmp/{install.1,install.2} # 可以用来创建目录,可以同时创建多个。类似mkdir
install /etc/passwd /var/tmp/install.file # 表示将passwd文件拷贝到/var/tmp下,并重命名为install.file,但是install.file文件有了执行权限,可以通过-m指定权限。类似cp
install -t DIRECTORY SRC... # 表示将源文件或文件夹拷贝到DIRECRTORY中。类似cp
du: # 显示文件或目录所占用的磁盘空间。
-h 输出文件系统分区使用的情况,例如:10KB,10MB,10GB等
-s 显示文件或整个目录的大小,默认单位是KB
du -sh # 显示当前目录的大小
du -sh httpd # 显示某个目录或文件的大小
du -sh ./* # 显示当前目录下所有文件的大小
du -h --max-depth=1 # 查找占用空间最大的文件与目录
查看文件
1. cat
cat -n 文件名 # 显示文件的行号
cat -E /etc/issue # 对于Linux系统而言,文本文件的行结束符是$符;而windows的文本行结束符是$+enter(回车)
2. tac
tac /etc/issue # 将issue文本逆向显示,与cat显示文本的方式相反。
3. more # 向后翻,向前翻到最后一行自动推出
4. less # 向前翻,到最后一行不会退出,按q键推出
5. head
head -n 5 /etc/passwd # 指定显示文件的前5行,不指定行数,默认显示开头的10行
6. tail
tail -n -5 /etc/passwd # 指定显示文件的后5行,不指定行数,默认显示末尾的10行
tail -f /tmp/hello.txt # 显示hello文本的后 行内容,并且不会退出;此时如果有其它进程往这个文本末尾追加内容,等待显示新增加内容
文本处理
# cut join sed awk
1. cut
-d # 指定字段分隔符,不指定的话,默认是空格;
-f # 指定要显示的字段 -f1:表示显示第一个字段 -f 1,3表示显示1和3字段 -f 1-3 表示显示1到3的字段
eg:
cut -d : -f1 /etc/passwd
cut -d : -f 1,2 /etc/passwd
cut -d : -f 1-3 /etc/passwd
2. join
文本排序
# sort
1. sort
-n:数值排序
-r:降序
-t:字段分隔符
-u:排序后相同的行只显示一次
-f:排序时忽略字符大小写
sort 文件名 # 按照ASCII码表对行进行升序排序
sort -n 文件名 # 按照数字大小进行升序排序
sort -r 文件名 # 按照ASCII码表对行进行逆序排序
sort -r -n # 按照数字大小进行降序排序
sort -t: -k3 /etc/passwd # 按照第3个字段,按照ascii码进行排序
sort -t: -k3 -n /etc/passwd # 按照第3个字段,按照数值大小进行排序
sort -n -u sort.test
2. uniq(report or omit repeated lines):# 报告相邻重复的行
uniq 文件名 # 将文件中相邻重复的行删除一行
uniq -d 文件名 # 只显示相邻重复的行,只显示重复行当中的一行
uniq -D 文件名 # 显示相邻重复行中的所有行
uniq -c 文件名 # 显示相邻每一行重复的次数
文本统计
wc(word count)
-l:只显示行数
-w:只显示单词数
-m:只显示字符数
-c:只显示字节数
-L:表示最长的一行包含多少个字符
字符处理命令
tr:转换或删除字符
tr [OPTION]... SET1 [SET2]
-d:删除出现在字符集中的所有字符
tr -d 'ab'
tr 'ab' 'AB'
tr 'a-z' 'A-Z' < /etc/passwd # 将passwd文本中全部的小写字母转换成大写字母 <是重定向
bash及其特性
shell:外壳
GUI:Gnome,KDE,Xfce
CLI:sh(bsh),csh,ksh(商业化的产品,需要付费才能使用,后来分为社区版和商业版),bash(兼具csh,ksh,比sh更加强大),tcsh(增强版),zsh(功能更加强大,但是还不是很流行),在红帽系列和众多的发行版上使用的都是bash,所以学习bash是首选。
bash:
1.命令历史
bash会自动记录执行的命令,会将使用的命令放入缓冲区。
-c:清空命令历史
-d OFFSET [n]:
-w:保存命令历史至文件中
-n:
history -d 500 # 删除第500个命令
history -d 500 10 # 从第500个命令开始,删除10个命令
命令历史的使用技巧:
!n: 执行命令历史中的第n条命令
!-n:执行命令历史的倒数第n条命令
!!:执行上一条命令
!string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数 # 方式1
# eg:nano !$
按下'ESC'键之后按'.',会自动弹出上一个变量;# 方式2
ALT+. # 方式3
输入命令的开头字母,连续两次'tab键',将显示与该字母开头的所有命令。
2.管道、重定向
3.命令别名
alias 别名='COMMAND [options] [arguments]'
在shell 中定义的别名仅在当前shell生命周期中有效:别名的有效范围仅为当前shell进程。
# eg:
1. alias 查看系统中已命名的别名
2. alias cls=clear
取消别名:
unalias 别名
# eg: unalias cls
如果重命名的别名与命令相同且别名后带有参数,想使用原命令,需要 \CMD
4.命令行编辑
光标跳转:
ctrl+a:跳到命令行首
ctrl+e:跳到命令行尾
ctrl+u:删除光标至命令行首的内容
ctrl+k:删除光标至命令行尾的内容
ctrl+l:清屏
5.命令行展开
6.文件名统配:# 通过 man 7 glob 命令查看特殊字符的通配符
*:任意长度的任意字符
?: 任意单个字符,如果需要匹配指定个数的字符,就需要指定个数的'?'
[]: 匹配指定范围内的单个字符,eg:[abc],[a-m],[A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z]
[^]:匹配指定范围之外的任意单个字符,eg:ls [^0-9]*
[:space:]: 空白字符
[:punct:]: 所有的标点符号
[:lower:]: 小写字母
[:upper:]: 大写字母
[:alpha:]: 大小写字母
[:digit:]: 数字
[:alnum:]: 数字和大小写字母
# eg: 如何表示字母开头、字母结尾、中间有空格的文件?
[[:alpha:]]*[[:space:]]*[[:alpha:]]
7.变量
环境变量:
PATH:命令搜索路径
HISTSIZE:命令历史缓冲区大小
SHELL:用于保存当前用户默认shell的
8.编程
9.命令替换: $(COMMAND),使用反引号也是一样的 `COMMAND`
把命令中某个子命令替换为其执行结果的过程。
echo 'the current directory is $(pwd)'
touch flie-$(date +%F-%H-%M-%S).txt
touch flie-`date +%F-%H-%M-%S`.txt
bash支持的引号有3种:
``:命令替换
"":弱引用,可以实现变量的替换
'':强引用,不完成变量的替换
用户、组、权限
# 权限:r、w、x
文件:
r:可读,可以使用类似cat等命令查看文件内容;
w:可写,可以编辑或删除此文件;
x:可执行,executable,可以命令提示符下当作命令提交内核运行;
目录:
r:可以对此目录执行ls以列出内部的所有文件;
w:可以在此目录创建文件;
x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;
用户:UID,/etc/passwd
组:GID,/etc/group
影子口令:
用户:/etc/shadow # 用户密码的存放位置
组:/etc/gshadow # 组密码实际存放位置
用户类别:
管理员:# UID永远为0
普通用户:1-65535
系统用户:1-499,
一般用户:500-60000
用户组类别:
管理员组:
普通组:
系统组:
一般组:
用户组类别:
私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名同名的组
基本组:用户的默认组
附加组,额外组:默认组以外的其它组
# 分析passwd文件下七个字段的所代表的含义
whatis passwd # 查看passwd有几个章节的慢文档
man 5 passwd # 第5个章节是对配置文件的说明
# /etc/passwd
account:登录名
password:密码 # 如果密码的位置是X,则x是一个占位符,密码真正的存放位置在shadow中
UID:
GID:基本组ID
comment:注释
HOME DIR:家目录
SHELL:用户的默认shell
# 分析shadow文件下七个字段的所代表的含义
whatis shadow # 查看shadow有几个章节的慢文档
man 5 shadow # 第5个章节是对配置文件的说明
# /etc/shadow
account:登录名
encrypted password:加密的密码
date of last password change: # 上一次修改密码的时间
minimum password age: # 最短使用天数
maximum password age:# 密码最长使用期限,99999天,表示永不过期
password warning period # 离过期之前的警告时间
password inactivity period: #
account expiration date:
reserved field
# 查看当前系统中由哪些可用的shell
cat /etc/shells
cat /etc/shadow:
两个 !! 表示不让其登录,所以如果不想让某个用户登录可以在shadow文件中对应的用户加上两个“!!”
$6,表示一种加密方式,其中$1是MD5加密。
用户管理
创建用户和添加密码
useradd(或者adduser) 用户名 # 普通用户或者root用户都可以创建新用户,只不过普通用户没办法给新建用户添加登录的密码,这样用户就没办法登录,要想创建的账户可以登录,需要用root用户给这个用户添加密码。创建用户时,会在passwd,shadow,group,gshadow中分别增加一条记录,只有在给新建用户创建密码后,在shadow中用户的密码才从‘!!’变成加密的密码
passwd 用户名 # 给新建用户添加密码,连续两次输入密码。
useradd
-u UID 用户名
-g GID 用户名 # 指定基本组
-G GID,... 用户名 # 指定额外组(附加组)
-c "COMMNET" 用户名 # 指定注释
-d(directory) /path/to/somedirectory # 创建用户时给用户指定家目录
-s shell路径 用户名 # 给新建用户指定shell,最好是/etc/shells文件中已存在的shell
-m -k # 如果用户没有家目录,强制给用户创建家目录, -m和-k一般组合使用,在创建用户时,指定-k,会把/etc/skel下的.logout .bash_history .bashrc .bash_profile复制到用户的家目录中
-M 用户名 # 创建用户,但不给其指定(创建)家目录(默认创建用户时,不指定家目录路径,就以用户名作为用户的家目录),这在 /etc/login.refs文件中都有配置说明,具体详细查看该文件。
删除用户
# id 查看用户信息
id # 显示当前用户的id信息
id 用户名 # 显示此用户的id信息
id -u # 只显示用户的uid信息
id -G # 只显示用户的gid信息
id -u -n # 显示用户的用户名
id -G -n # 显示用户的组名
# finger:查看用户账号信息
finger # 查看当前用户信息
finger USERNAME # 查看指定用户信息
finger -l USERNAME@host # 查看远程用户信息
userdel [OPTION] USERNAME
userdel 用户名 # 默认是不会删除这个用户的家目录的
-r 用户名 # 同时删除用户的家目录
修改用户账号属性
usermod
-u: # 修改用户的UID
-g: # 修改用户的GID
-a -G: # 不使用-a选项,会覆盖此前的附加组;使用-a则在原有的附加组基础之上追加新的附加组
-c:
-d: # 给用户指定新的家目录,通常和 -m一起使用,表示即给用户指定新的家目录,还给用户的家目录下的文件一起复制到新的家目录中。
-s: # 修改用户的shell
-l: # 修改用户的登录名
-L(Lock): # 锁定用户账号,锁定之后这个用户就不能登录了。
-U(Unlock): # 解锁账号
chsh(chageshell): # 修改用户的shell
chsh 用户名
chfh(change finger): # 修改账户注释信息(/etc/passwd7个字段中的comment)
chfh 用户名
用户密码管理
passwd 用户名
--stdin # 接收标准输入的。Linux的哲学思想是:尽量避免与用户交互
-l(lock):
-u(unlock)
-d(delete):# 删除用户密码,用户就不能登录了。
pwck: # 检查用户账号完整性
组管理
创建组
# cat /ect/group
用户组名:
用户密码:
GID:
以这个组为附加组的用户列表:
# 创建组
groupadd 组名 # 不指定组id,默认是从500以后的上一个组加1.
-g GID
加密方法
对称加密:加密和解密使用同一个密码
公钥加密:每个密码成对儿出现,一个为私钥(secret key),一个为公钥(public key)
单项加密,散列加密(由明文到密文,不可解密):提取数据特征码,常用于数据完整性校验
1. 雪崩效应 :初始条件微小改变,可能会引起结果的巨大变化(防止暴力破解)
2. 定长输出
MD5:Message Digest:128位的定长输出
SHA1:Secure Hash Algorithm(安全的hash算法),160位的定长输出。
设备管理
软件管理
进程管理
网络管理
命令小结:
目录管理:
ls/cd/pwd/mkdir/rmdir/tree
文件管理:
touch/stat/file/rm/cp/mv/nano
日期时间:
date/clock/hwclock/cal
文本处理:
cat/more/less/head/tail/cut/sort/uniq/grep
标签:文件,命令,Linux02,passwd,用户组,用户,etc,目录 来源: https://www.cnblogs.com/zhangchaocoming/p/14526884.html