本文共 8686 字,大约阅读时间需要 28 分钟。
在Linux中有这么一条哲学思想
一切皆文件
在Linux中,所有在系统中存放的数据都会映射为文件。
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
还有两个特殊的目录
cd 命令
切换用户当前工作目录
cd命令 用来切换工作目录至dirname。 其中dirName表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录)。另外,~也表示为home directory的意思,.则是表示目前所在的目录,..则表示目前目录位置的上一层目录。
cd (选项) (参数)
选项实例cd 进入用户主目录; cd ~ 进入用户主目录; cd - 返回进入此目录之前所在的目录; cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思); cd ../.. 返回上两级目录; cd !$ 把上个命令的参数作为cd参数使用。
ls 命令
显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。
-R 若目录下有档案,则以下之档案亦皆依序列出
实例:
stat
三个时间戳:
access time 访问时间, atime 读取文件内容
modify time 修改时间, mtime,改变文件内容(数据)
change time 改变时间, ctime,元数据发生改变mkdir和touch
mkdir 创建目录
创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。
语法
mkdir (选项)(参数)选项
touch
格式:touch [OPTION]... FILE...
cp 命令
复制文件或目录
cp [options] source destcp [options] source... directory
mv
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
常用选项: -i 交互式 -f 强制 -b 目标存在,覆盖前先备份
rm 删除
rm [OPTION]... FILE...
常用选项:
输入输出重定向及管道程序: 指令+数据 读入数据: Input 输出数据: Output打开的文件都有一个fd; file descriptor (文件描述符)标准输入:keyborad(键盘) 0标准输出:monitor(显示器) 1标准错误输出:monitor 2
I/O重定向:改变标准位置
输出重定向: COMMAND > NEM_POS, COMMAND >> NEM_POS > 覆盖重定向,目标文件中的原有内容会被清除 >> 追加重定向,新内容会追加至目标文件尾部 # set -C : 禁止将内容覆盖输出至已有文件中 强制覆盖: >| # set +C: 允许覆盖 2>:覆盖重定向错误输出数据流 2>>追加从定向错误输出数据流 标准输出和错误输出各自定向至不同位置 COMMAND > /PATH/TO/file.out 2> /path/ro/error.out 合并标准输出和错误输出至同一个数据流进行从定向 &> 覆盖重定向 &>> 追加重定向 COMMAND > /PATH/TO/file.out 2> &1 COMMAND >> /PATH/TO/file.out 2>> &1输入重定向: < tr命令:转换或删除字符 tr [OPTION]... SET1 [SET2] -d 删除指定字符串 HERE Documentation : << (此处生成文档) Note:单行重定向 与 多行重定向 #cat << EOF #cat >/path/ro/somefile <
管道:
COMMAND | COMMAND | COMMAND | ...
Note:最后一个命令会在当前shell进程的子shell中执行的tee命令:一路输入两路输出 tee [option]... [file].... -a 追加
文件处理工具 wc cut sort uniq
wc [option] [file]... -l: 统计行数 -c: 统计字节数 -w;统计单词数tr: 转换字符或删除字符 tr '集合1' '集合2' tr -d '字符集合' tr -dc '字符合集' 除了双引号内的,都删除 \n 换行 \r 回车 \t tab键 \v 纵向tab键cut: This is a test line. -d字符:指定分隔符 -f#: 指定要显示字段 单个数字:一个字段 逗号分隔的多个数字:指定多个离散字段 -:连续字段,如3-5;sort: 按字符进行比较 sort [option] file... -f: 忽略字符大小写; -n: 比较数值大小; -t: 指定分隔符 -k: 指定分隔后进行比较字段 -u: 重复的行,只显示一次;uniq: 移除重复的行 -c:显示每行重复的次数 -d:仅显示重复过的行 -u: 仅显示不曾重复的行
1、 小技巧: 可以使用>>创建空文件,相对于来说,比较安全,防止文件存在覆盖数据,造成数据丢失 set 仅在当前shell 有效 单行从定向: cat > file 多行重定向:cat << ls /erro /boot 2> file.out 2> erro.out 相当于将错误的重定向如file.out中,正确的重定向至erro.out ls /error /boot > /file.out 2>&1 不管正确还是错误都重定向至file.out ls /error /boot 2>&1 > file.out中 将错误输出显示至屏幕,正确的重定向至fele.out (ls /error /boot 2>&1 ) > file.out 正确和错误都重定向 ls /error /boot 2> file.out 1>&2 先将错误的重定向至file.out中,然后把正确的当做错误的重定向至同一个文件中 # 以下四个命令中哪个是结果不一样 1 2 3 42、 tr '[:lower:]' [:upper:] 把所有小写字母转换为大写字母 ls [:lower:]* 代表 以l,o,w,e,r 其中任意一个字符开头的行 ls [[:lower:]]* 代表 所有以字母开头的行
资源分派
Authentication 认证Authorizathin 授权 Accouting 审计token,identity(username/passwd)linxu用户: Username/UID管理员: root, 0普通用户:1-65536(60000) 系统用户 1-499 (centos6) 1-999(centos7) 守护进程获取资源进行权限分配 普通用户 500+
Linux的安全上下文:
运行中的程序,进程(process)
以进程发起者的身份运行: #root:cat $tom:cat 进程所能够访问的所有资源的权限取决于程序运行的发起者的身份
Linux组的类别
用户的基本组(主组): 组名同用户组,且包含一个用户,私有组用户的附加组(额外组):
Linux用户和组相关配置文件
/etc/passwd
name:passwd:UID:GID:GECOS:directory:shell用户名:密码:UID:GID:GECOS:主目录:默认shell:
/etc/group
group_name:password:GID:user_list组名:密码:组ID:用户列表(分隔符为逗号)
/etc/shadow
用户名:加密了的密码:最近一次更改密码的日期:密码的最小使用期限:密码的最大使用期限:账号警告时间段:密码禁用期:密码过期日期:保留字段
加密机制: 加密 明文-->密文 解密 密文-->明文 单向加密:提取数据指纹 md5: message digest,128bits sha1: secure hash algorithm,160bits sha224:224bits sha256:256bits sha384:384bits sha512:512bits 雪崩效应:初始的条件的微小改变,将会引起结果的巨大改变 定长输出: 密码的复杂性策略; 1、使用数字,大写字母,小写字母及特殊字符中至少3中 2、足够长: 3、使用随机密码: 4、定期更换:不要使用最近曾经使用过的密码
用户创建: useradd
SYNOPSIS useradd [options] LOGIN useradd -D useradd -D [options] OPTION: -u UID: [UID_MIN,UID_MAX] 定义在/etc/login.defs -g GID: 指明用户所属基本组,可为组名,也可以GID -c "comment" :用户注释信息 (等价于 chfn username) -d /path/tohome_dir: 以指定的路径为家目录 -s SHELL : 指明用户的默认shell程序,可用列表在/etc/shells文件中 (等同 chsh -s ) -G GROUP1[GROUP2,...[,GROUPN]]:为用户指明附加组,组必须事先存在 -n 不为用户创建私有用户组 -M : 不创建主目录 -e date :指定账户过期时间,格式为:MM/DD/YY -f days : 帐号过期几日后永久停权。若指定为 -,则立即被停权,若为 - 1,则关闭此功能 -r : 创建系统用户,默认不创建对应的主目录 -p passwd : 为新建用户创建指定登录密码。(此项使用较少) 默认值设定: /etc/default/useradd文件中 useradd -D \\ 修改默认值
修改用户属性:usermod
SYNOPSIS usermod [options] LOGINOPTION: -a: 将用户添加到补充组。仅与-G选项一起使用 -c <备注> :修改用户帐号的备注文字; -d <登入目录> :修改用户登入时的目录; -e <有效期限> :修改帐号的有效期限; -f <缓冲天数> :修改在密码过期后多少天即关闭该帐号; -g <群组> :修改用户所属的群组; -G <群组> ;修改用户所属的附加群组; -l <帐号名称> :修改用户帐号名称; -L:锁定用户密码,使密码无效; -s:修改用户登入后所使用的shell; -u 帐号名称> 群组> 群组> 缓冲天数> 有效期限> 登入目录> 备注>:修改用户ID; -r : 同时删除家目录
创建用户组: groupadd
Groupadd [-r] groupname Option: -r:创建系统用户组,该类用户组的GID小于500或1000。
修改用户组属性: groupmod
groupmod [options] GROUP Option -n : 改变用户组名称 groupmod -n 新用户组名 原用户组名 -g:重新设置用户组GID groupmod -g new_GID 用户组名称
删除用户组: groupdel
注意:在删除用户组时,被删除的用户组不能某个用户的私有用户组,若要删除,则应先删除私有用户组的账户,然后再删除用户组添加用户到指定组/从指定组移除用户: gpasswd 用法: gpasswd -a username group 将指定用户添加到指定组 gpasswd -d username group 从用户组中移除指定用户设置用户组管理员 gpasswd -A 用户账户 要管理的用户组 命令功能:将指定的用户设置为指定用户组的用户管理员。用户管理员只能对授权的用户组进行用户管理 (添加用户到组或从组中删除用户),无权对其他用户组进行管理。设置账户登录密码: passwd passwd [用户] 也可以通过标准输出来设置密码 echo "字符串" | passwd --stdin username ------------不敢原创,总结了一些笔记
转载于:https://blog.51cto.com/14116879/2368166