本文内容:
索引节点
硬链接与软链接
重定向
用户组
useradd命令
索引节点:
索引节点包含了一个表,包含了有关文件的元数据,包含:
文件类型,权限,UID,GID 链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳。
指向磁盘上文件的数据块指针。
有关文件的其他数据。
索引节点与数据是分开存放的。
cp命令:分配一个空闲的inode号,在inode表中生成新条目,在目录中创建一个目录项,将名称与inode编号关联,拷贝数据生成新的文件。
rm 命令:链接数递减,从而释放的inode号可以被重用,把数据块放在空闲列表中 删除目录项 数据实际上不会马上被删除,但当另一个文件使用数据块 时将被覆盖。
mv命令:如果mv命令的目标和源在相同的文件系统,作为mv 命令 用新的文件名创建对应新的目录项 删除旧目录条目对应的旧的文件名 不影响inode表(除时间戳)或磁盘上的数据位置,此时没有数据被移动!所以速度很快,如果目标和源在一个不同的文件系统, mv相当于cp和rm。
硬链接:一个文件的一个或多个文件名,本质上是一个文件。
特点:创建硬链接会增加额外的记录项以引用文件 v
对应于同一文件系统上一个物理文件 v
每个目录引用相同的inode号。
创建时链接数递增,删除文件时,rm命令递减计数的链接
文件要存在,至少有一个链接数,当链接数为零时,该文件被删除
v 不能跨越驱动器或分区
语法: ln filename [linkname]
可以看出,f1和f2实际上是一个文件。
软链接:软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
I/O:输入与输出
程序:指令+数据 读入数据:Input 输出数据:Output
打开的文件都有一个fd: file descriptor (文件描述符) v
Linux给程序提供三种I/O设备 Ø
标准输入(STDIN)-0 默认接受来自键盘的输入 Ø
标准输出(STDOUT)-1 默认输出到终端窗口 Ø
标准错误(STDERR)-2 默认输出到终端窗口
STDOUT和STDERR可以被重定向到文件:
命令 操作符号 文件名
支持的操作符号包括:
> 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把所有输出重定向到文件
标准输入重定向:
多行重定向:cat <<E >f1
>
>
>E
单行重定向:
cat >f1
xxx
yyy
mail重定向:又称就地文本
mail -s hi wang <<eof
>aa
>bb
>cc
>eof
tr命令:转换或者删除字符串
tr [options] str1 str2
eg:
tr ‘a-z’ ‘A-Z’
tr ‘a-z’ ‘A-Z’ </etc/issue
选项:
-c:取补集。
-d:删除字符,不做转换。
-s:把连续的重复的字符用一个字符显示。
-t:str1 str2 删除第一字符集较第二字符集多出的部分。
练习:
1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中 v
3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下: Hello, I am 用户名,the system version is here,please help me to check it ,thanks! 操作系统版本信息
4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开。
5、file1文件的内容为:”1 2 3 4 5 6 7 8 9 10” 计算出所有数字的总和
6、删除Windows文本文件中的'^M'字符
7、处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字 和空格
管道(使用符号“|”表示)用来连接命令 命令1 | 命令2 | 命令3 | … Ø 将命令1的STDOUT发送给命令2的STDIN,命令2的 STDOUT发送到命令3的 STDIN ,STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现。 Ø
最后一个命令会在当前shell进程的子shell进程中执行用来组合多种工具的功能。
eg:ls | tr 'a-z' 'A-Z'。
tee:可以继续标准输出。同时写进文件中。
set -C:禁用覆盖功能。
set +C:取消禁用。
/dev/null:垃圾桶,不占空间。
用户,组和权限
linux用户:Uername/UID
管理员:root uid为0
一般用户:1-65535
系统用户:1-499 对守护进程获取资源进行权限分配。(不需要登录)
登录用户:500+
组:Groupname/GID
管理员组:root,0
普通组:
系统组:1-499
用户组:500+
主要组:用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户,又叫私有组。
用户的附加组(辅助组)
一个用户可以属于0个或多个附加组。
组的信息保存在/etc/group下。
id 用户:查看用户,属组信息。
运行中的程序:进程
以进程发起者身份运行:
root:/bin/cat
liuzhuo:/bin/cat
进程所能访问资源的权限取决于进程的运行者的身份。
用户和组的配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
passwd文件格式:
login name:登录用名(wang) v
passwd:密码 (x) v
UID:用户身份编号 (1000) v
GID:登录默认所在组编号 (1000) v
GECOS:用户全名或注释 v
home directory:用户主目录 (/home/wang) v
shell:用户默认使用shell (/bin/bash)
chsh -s+路径 改shell
linux通过UID来识别是管理员还是普通用户。只认ID 不认人。
shadow文件格式
登录用名 v
用户密码:一般用sha512加密 v($6)
从1970年1月1日起到密码最近一次被更改的时间
密码再过几天可以被变更(0表示随时可被变更)
密码再过几天必须被变更(99999表示永不过期)
密码过期前几天系统提醒用户(默认为一周)
密码过期几天后帐号会被锁定
从1970年1月1日算起,多少天后帐号失效。
group配置文件:
groups:查看某个用户属于哪个用户组
id +用户名:查看用户的信息。
root:x:0:(组的成员) 0为组id。
默认情况下,创建一个文件的所有者和所属组同名。
bin:::bin,daemon
第一个组名,第二个密码,第三个放该组的管理员账户
newgrp:临时性切换属组。
vipw=vi /etc/passwd
vigr=vi /etc/group 具有语法检查功能。
pwck:检查语法
grpck:检查语法
useradd:创建用户
useradd [options] 用户名
useradd -u 1234 zhang 指定UID
useradd -g wang li 指定组名或者GID
-o 配合-u 选项,不检查UID的唯一性
-c "COMMENT":用户的注释信息 -d HOME_DIR: 以指定的路径(不存在)为家目录 -s SHELL: 指明用户的默认shell程序 可用列表在/etc/shells文件中。
对于服务等系统应用,shell可以设置成为/sbin/nologin 同时加-r定义为系统用户,这样就不会自动创建家目录。
-G GROUP1[,GROUP2,…]:为用户指明附加组,组必须事先存在
-N 不创建私用组做主组,使用users组做主组
-r: 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
家目录模板文件夹:/etc/skel
cat /etc/default/useradd 添加用户的配置文件
useradd -D 显示useradd配置文件信息。
原创文章,作者:liuzhuo,如若转载,请注明出处:http://www.178linux.com/30503