本文共 23855 字,大约阅读时间需要 79 分钟。
**文件目录切换和查看 cd **
# cd 改变目录 1 cd ~/ cd 可以直接进家目录 2 cd ~ wang 可以直接进某个账号的家目录、 3 cd - 回到刚才的目录 利用 $OLDPWD变量回退 4 cd .. 切换之父目录 5 cd 切换至当前用户主目录 6 cd /home/alice 绝对路径进入alice的家目录 7 cd home/alice 相对路径 8 pwd $PWD当前目录变量常见的变量有 PS1 提示符 PATH(bin执行路径) OLDPWD(上一次目录路径) HISTSIZE(保存历史记录的多少条) SHELL(使用的shell)
**列出目录内容 ls [option] + file or dir
-a 包含隐藏文件 -l 显示额外的信息 -R 目录递归通过 -ld 目录和符号链接信息 -1 文件分行显示 -s 按从大到小排序 -t 按mtime排序 -u 配合-t选项 ,显示按atime 从新到旧排序 -U 按目录存放顺序显示 -X 按文件后缀排序 **ls-a 与ls -A 区别是 显示. ..[root@centos6 /data]#ls -a. .. f1 f2 f3 mbr[root@centos6 /data]#ls -Af1 f2 f3 mbrbin是软连接 ll /bin 和 ll /bin/有区别
ls /data -1 按照字符次序 数字比字母在前
[root@centos6 /data]#ls -l total 16-rw-r--r--. 1 root root 0 Jan 24 20:06 1-rw-r--r--. 1 root root 7 Jan 23 20:58 f1-rw-r--r--. 1 root root 9 Jan 23 21:00 f2-rw-r--r--. 1 root root 9 Jan 23 21:00 f3-rw-r--r--. 1 root root 512 Jan 23 21:01 mbr
ls -slr 倒序(reverse)
[root@centos6 /data]#ls -slr total 16 4 -rw-r--r--. 1 root root 512 Jan 23 21:01 mbr 4 -rw-r--r--. 1 root root 9 Jan 23 21:00 f3 4 -rw-r--r--. 1 root root 9 Jan 23 21:00 f2 4 -rw-r--r--. 1 root root 7 Jan 23 20:58 f1 0 -rw-r--r--. 1 root root 0 Jan 24 20:06 1
ll --time=atime /data/file6 (access time)访问时间 读时间
状态更改时间 ctime 原数据发生变化的时间 用stats 可查看三状态时间[root@centos6 /data]#stat f1 File: `f1' Size: 7 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 17 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2019-01-23 20:59:11.875867389 +0800 Modify: 2019-01-23 20:58:42.387867040 +0800 Change: 2019-01-23 20:58:42.387867040 +0800
-u withlt 用accesstime时间排序
-c with lt 用changetime排序[root@centos6 /data]#ls -U f1 mbr f2 1 f3 [root@centos6 /data]#ll -U total 16 -rw-r--r--. 1 root root 7 Jan 23 20:58 f1 -rw-r--r--. 1 root root 512 Jan 23 21:01 mbr -rw-r--r--. 1 root root 9 Jan 23 21:00 f2 -rw-r--r--. 1 root root 0 Jan 24 20:06 1 -rw-r--r--. 1 root root 9 Jan 23 21:00 f3 [root@centos6 /data]#ll -C 1 f1 f2 f3 mbr [root@centos6 /data]#ll -c total 16 -rw-r--r--. 1 root root 0 Jan 24 20:06 1 -rw-r--r--. 1 root root 7 Jan 23 20:58 f1 -rw-r--r--. 1 root root 9 Jan 23 21:00 f2 -rw-r--r--. 1 root root 9 Jan 23 21:00 f3 -rw-r--r--. 1 root root 512 Jan 23 21:01 mbr
目录时间就是创建目录时间排序
常用的的,只显示文件夹,不显示文件 ls -d */ (d是只显示文件夹本身,不显示子文件)[root@centos6 ~]#ls -d */bin/ Documents/ Music/ Public/ Templates/ Videos/Desktop/ Downloads/ Pictures/ src/ usr/
#使用文件通配符 glob 查看man帮助 man 7 glob
1.* 匹配零个或多个字符 【:digit:】任意数字,等于0-9 2.?匹配任何单个字符 【:lower:】任意小写字母 3.~ 当前用户家目录 【:upper:】任意大写字母 4.~ alice 用户alice的家目录 【:alpha:】任意大小写字母 5.~+ 当前工作目录 【:alnum:】任意数字或字母 6.~- 上一个工作目录 【:blank:】水平空白字符 7.【0-9】匹配数字范围 【:space:】水平或垂直空白字符 包括blank 8.【a-z】字母 【:punct:】标点符号 9.【A-Z】字母 【:print:】可打印字符 10.【abc】匹配列表中的任意一个字符a,b,c 【:cntrl:】控制(非打印)字符 11.【^abc】匹配列表中的字符以外的字符d,e,f,g…等等 【:graph:】图形字符 【:xdigit:】十六进制字符–实例
[root@centos6 /data]#lsfilea fileA fileb fileB filec fileC filed fileD[root@centos6 /data]#ls file[abc]filea fileb filec[root@centos6 /data]#ls file[^abc]fileA fileB fileC filed fileD[root@centos6 /data]#ls file[a-d] [a-d]大小字母 最后d没有Dfilea fileA fileb fileB filec fileC filed[root@centos6 /data]#ls file[a-D]filea fileA fileb fileB filec fileC filed fileD 大写字母 []代表其中一个 所有还要嵌套一层[][root@centos6 /data]#ls file[[:lower:]]filea fileb filec filed
sysnopsis 简单概述
touch 选项 … file … -a 只改变atime 和ctime -m 只改变mtime和ctime -t 指定atime和mtime的时间戳 yymmddhhmm[.ss] -c 如果文件不存在,则不予创建sysnopsis 简单概述
cp 选项 -T 原数据 目标只能一个 cp选项 元数据 文件夹 (适用多个文件) cp 选项 -t 目录 复制的文件–注意点:
root用的cp是别名(\CP是用cp).bashrc 普通用户用的是原始cp 多个文件复制过去必须是 文件夹 cp命令默认是复制文件夹的,文件夹要-r–cp选项:
-d 保留链接,复制的也是链接 -p 保留mode 权限,ownership 所有者,timestamps 三个时间(只能保留文件的三个属性) -u 只复制源比目标更新文件或目标不存在的文件 -a 全部保留 可以作为备份手段 cp -a 是非常常见的备份手段 du -sh 读取大小 -av(可以看到过程 防止死机不知道)过大不建议用,容易造成终端死机 back up=numbered 目标存在,覆盖前先备份加数字后缀 -r 等于递归recursive–cp实例
cp -a /etc/* /data 复制所有etc的文件保留原来属性到/datacp -r /etc/sysconfig/ /data/dir 递归复制sysconfig下的文件和文件夹到 /data/dir中cp /etc/issue /etc/hosts /data/f1 多个文件复制过去必须是 文件夹cp -d /etc/grub.conf /data/ 复制保留来的链接
sysnopsis 简单概述
mv 选项 -T 原数据 目标只能一个 mv 选项 元数据 文件夹 (适用多个文件) mv 选项 -t 目录 复制的文件–mv选项:
-i 一般表示交互interactive,会提示用户覆盖不覆盖 -f 强制 等于windows 的剪切粘贴-mv实例
#:mv -t /data /root/f1 /root/bmv:overwrite '/data/b'? y#:alice mvalice mv='mv -i'
sysnopsis 简单概述
rm 选项 要删除的文件–rm选项:
-i 一般表示交互interactive,会提示用户是否删除 -f 强制 -r 递归 recursive –no-preserve-root = 删除/-rm注意点:
(命令)\rm就不会提示,是使用原始的命令。 rm删除命令是很危险的建议用别名 rm -r 是递归找到任何所有文件全删。 从centos6开始(rm -rf /)不让你删除,rm -rf / --no-preserve(保存)-root(删系统)rm -rf /(这样也可以)。 rm -rf /data / 这样就是删除两个文件夹 ,中间不能有空格。 建议把rm之类定义别名为移动alias rm=‘mv -t /data’。 数据不是马上被删除,只是把inode号删除,原有数据还在硬盘上,后面写入的数据会把原有的数据覆盖-rm实例
rm -rf / 递归强制删除跟 rm f1 删除f1文件 shred -zv -n 6 hosts 相对比较安全 (对数据来说,恢复起来很难)z(最后一次删除时用0把它覆盖的) v(过程)u(不仅覆盖,在最后还要删除)-n(覆盖多少次)
sysnopsis 简单概述
tree 显示目录以树状的方式显示 -d 只显示目录 -L level 指定显示的层级数目 -P pattern 只显示由指定的pattern 模式匹配到的路径 mkdir 创建目录 -p 存在于不报错,且可自动创建所需的各目录 (父目录如果不存在自动生成) -v 显示详细信息 -m mode 创建目录时直接指定权限 rmdir 删除空目录 (只能删除空目录) -p 递归删除父空目录 -v 显示详细信息 rm -r 递归删除目录树–tree实例
[root@centos6 ~]#tree -L 1 -d /boot/boot├── efi├── grub└── lost+found[root@centos6 ~]#tree -L 2 -d /boot /boot├── efi│ └── EFI├── grub└── lost+found
–mkdir实例
mkdir -pv /data/dir1/dir2/dir3
–rmdir实例
rmdir -p /data/dir1/dir2/dir3/
sysnopsis 简单概述
ln 选项 原文件 链接文件 -s soft 符号链接 软连接-ln注意点:
本质 硬链接:同一个文件多个名字 软连接:一个文件对应快捷方式,本质是不同文件 1、链接数(硬链接会增长链接数,软链接不会) 2、跨分区(软链接可以跨分区,硬链接不可以) 3、目录(硬链接不支持目录,软连接支持) 4、原始和链接的文件关系(硬链接,原属文件和硬链接本质是一样的,软连接依赖于原始文件) 5、删除(硬链接删除,新的文件不受影响,软连接,原始文件删除,新的链接就找不到)–ln实例
[root@centos6 /data]#ln -s fileb linkfile [root@centos6 /data]#ll-rw-r--r--. 1 root root 0 Jan 24 20:49 fileblrwxrwxrwx. 1 root root 5 Jan 25 09:52 linkfile -> fileb[root@centos6 /data]#ln fileb linkfile ln: creating hard link `linkfile': File exists[root@centos6 /data]#ln fileb linkfile2[root@centos6 /data]#ll-rw-r--r--. 2 root root 0 Jan 24 20:49 fileblrwxrwxrwx. 1 root root 5 Jan 25 09:52 linkfile -> fileb-rw-r--r--. 2 root root 0 Jan 24 20:49 linkfile2
sysnopsis 简单概述
检查文件的类型,然后确定适当的打开命令或应用程序使用 file 选项 文件名–file选项:
-b 列出文件辨识结果,不显示文件名称 -f filelist列出文件filelist中文件名的文件类型 -F 使用指定分隔符合替换输出文件名后默认的“:”分隔符 -L 查看对应软链接对应文件的文件类型 –help 显示命令在线帮助-file注意点:
file 可以看文件的类型,而不是简单地看文件的后缀、只看头部分信息判断文件类型 linux对于后缀没有要求 losf 查看删除文件对应路径–file实例
[root@centos6 /data]#echo -e "/etc/hosts\n/data\n/bin/ls\n" >filelist[root@centos6 /data]#lsfilea fileb filec filed filelist linkfile2fileA fileB fileC fileD linkfile[root@centos6 /data]#file -f filelist /etc/hosts: ASCII text/data: directory/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped: cannot open `' (No such file or directory)
sysnopsis 简单概述
-文件的权限只要针对三类对象进行定义 owner:所属用户,u group:所属组,g other:其他,o -每个文件针对每种访问用户都定义了三种权限 r:readable 写权限 针对可看的,二进制文件就不要设置这个权限 w:writeable 读权限 x:excutable 执行权限 文本文件也不需要执行,二进制的需要权限 -文件的权限 r:可使用文件查看类工具获取内容 w:可修改其内容 x:可以把次文件请求内核启动为一个二进制程序 -目录的权限 r:可以使用ls查看此目录中文件列表 w:可在此目录中创建文件,也可删除此目录中的文件 x:可以使用ls -l 查看此目录中文件列表,可以cd进入此目录 X:只给目录x权限,不给文件x权限 -权限对应的数字 r:4 w:2 x:1 chown 选项] [owner]:[group] file / --reference=file file1 设置文件的所有者(change owner) -R 递归 chgrp [选项] group file / --reference=file file1 设置文件的所属组信息(change group) -R 递归 chmod 选项 octal-mode 八进制数字 file -R 递归修改权限 chmod 选项 mode,[mode] file Mode: 修改一类用户的所有权限: u= g= o= ug= a= u= g= 修改一类用户某位或某些位权限 u+ u- g+ g- o+ o- a+ a- + - chmod 选项 --reference=refile file 参考refile权限,将file权限修改成refile who对谁操作 opt 你要做什么操作 per 授予什么权限 file文件 (修改文件权限) who:u 所属者g所属组 o other a(all) opt:+增加权限 -去掉权限 =赋予权限 per:r读w 写x执行 X特殊 umask 可以用来保留在创建文件权限-文件权限注意点:
1.普通用户改所属组,一定要自己在组,不能改所属者 2.删除文件的权限不是文件决定的,而是目录决定的 3.目录是文件,内容存的就是文件列表 4.对于读写来讲,root是不受控制,但是执行权限不一样 没有执行权限所以不能删除 执行权限,如果root没有那就不能执行,除非root自己加上x权限 5.二进制的读权限不是必须的,但是file要看头部信息,所以还是要加的 6.普通用户无法更改用户所有者,删除是对于目录的写权限,普通用户更改所属组是需要自己在组里 7.对目录来讲,目录的读权限就是指看不到目录,但是可以看到里面文件的内容 8.对于目录来讲没有执行权限,不能查看文件详细属性,可以cd进去,可以从外部访问文件内容,rx 是目录最基本权限,目录的写权限可以删除文件,所以文件能否删除,取决于目录的写权限 9.想要几个文件跟一个文件一样的权限用–reference参考 10.file常用的 6 rw,4 r,0 ,1x dir 常用的,7rwx,5r_x,0 11.程序要运行,必须目录要有执行权限, chmod -R 777 dir1危险性不亚于rm -rf 星号 ,无法恢复 chown -R wang/ 带R递归的都很危险 谨慎操作!! 一般操作都是在测试环境测试几遍才去生成环境中执行的 12.系统出于安全考虑,默认文件是666,这样就算不出来执行权限,保证安全–文件权限实例
[root@centos6 /data]#chmod a=r filea[root@centos6 /data]#ll filea-r--r--r--. 1 root root 0 Jan 24 20:49 filea[root@centos6 /data]#mkdir /data/git[root@centos6 /data]#chown -R git.git /data/git/chown: invalid user: `git.git'[root@centos6 /data]#chown -R alice.alice /data/git/ [root@centos6 /data]#chmod 700 /data/git[root@centos6 /data]#ll gittotal 0[root@centos6 /data]#ll -d gitdrwx------. 2 alice alice 4096 Jan 25 11:03 git
sysnopsis 简单概述
SUID,SGID,Sticky 三种常用权限:r,w,x user,group,other 前提:进程有属主和属组;文件有属主和属组 1.任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限 2.启动为进程之后,其进程的属主为发起者,进程的属组为发起者的所属的组 3.进程访问文件时的权限,取决于进程的发起者 a.进程的发起者,同文件的属主:则应用文件属主权限 b.进程的发起者,属于文件属组;则应用文件属组权限 c.应用文件“其他”权限-特殊文件权限注意点:
1.suid只适合应用在二进制可执行的程序上,作用在脚本和文本上是不起作用的 2.suid继承所有者的权限 suid=4 3.suid=4 sgid=2 sticky=1粘滞位 4.用户组里只能自己删除自己,sticky针对文件夹,针对文件无意义 5.具有写权限的目录通常用户可以删除目录中的任何文件,无论该文件的权限或拥有权 6.在目录设置sticky位,只有文件的所有者或root可以删除该文件 7.suid:继承二进制程序所有者的权限 8.sgid:继承二进制程序所有组的权限 作用于目录,此目录新建的文件继承目录的所属组 9.sticky:作用于目录,此目录的文件只能被所有者删除-权限位映射:
SUID:user,占据属主的执行权限位 s:属主拥有x权限 S:属主没有x权限 SGID :group,占据属组的执行权限位 s:group拥有x权限 S:group没有x权限 Syticky:other,占据other的执行权限位 t:other拥有x权限 T:other没有x权限-权限位实例
[root@centos6 ~]#ll /bin/nano-rwsr-xr-x. 1 root root 178896 Nov 12 2010 /bin/nano[root@centos6 ~]#chmod 755 /bin/nano[root@centos6 ~]#ll /bin/nano -rwxr-xr-x. 1 root root 178896 Nov 12 2010 /bin/nano[root@centos6 ~]#chmod 4755 /bin/nano[root@centos6 ~]#ll /bin/nano -rwsr-xr-x. 1 root root 178896 Nov 12 2010 /bin/nano[root@centos6 ~]#chmod 755 /bin/nano
转换成alice普通用户账户操作nano,由于什么人都可以用nano修改文件了很危险,所以此类文件最好不使用SUID
[root@centos6 ~]#su - alice[alice@centos6 ~]$nano /etc/passwd GNU nano 2.0.9 File: /etc/passwd eeeroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin
sysnopsis 简单概述
chattr +i 不能删除,改名 ,更改 chattr +a 只能追加内容 lsattr 显示特定属性-使用场景:
1.需要追加,但是不能修改和删除 用chattr +a 2.chattr +A atime 读时间不可改变 3.linux只针对三类人,但是不如windows能添加地4类人以外的设置权限,所以有以下方法: 比如alice用户一个人不能看不能查不能删,就需要用到acl-设定文件特定属性实例:
chattr + i[root@centos6 /data]#chattr +i s[root@centos6 /data]#lltotal 4----------. 1 root root 2887 Jan 25 17:59 s[root@centos6 /data]#echo abc>>s-bash: s: Permission denied[root@centos6 /data]#mv s ssmv: cannot move `s' to `ss': Operation not permitted[root@centos6 /data]#rm s rm: remove regular file `s'? yrm: cannot remove `s': Operation not permitted[root@centos6 /data]#lsattr s----i--------e- s
setfacl 选项:
-R递归 -M = --modify-file=file 从文件中读取设置 -X= --remove-file=file 从文件中读取删除设置 -d default默认新建文件有acl权限 -b =–remove-all 删除所有追加的acl设置 -m 修改当前文件的acl -x 删除文件的acl设置除了文件的所有者,所属组和其他人,可以对更多的用户设置权限
centos7默认创建的xfs和ext4文件系统具有ACL功能 centos7之前的版本,默认手工创建的ext4文件系统无ACL功能,需手动增加:tune2fs -o acl /dev/sdb1mount -o acl /dev/sdb1 /mnt/test
ACL生效顺序:所有者,自定义用户,自定义组,其他人
设置alice用户一个人不能看不能查不能删,setfacl =set file acl -m modify u:针对用户 wang :0没权限 f1:[root@centos6 /data]#touch f1[root@centos6 /data]#setfacl -m u:alice:0 f1[root@centos6 /data]#su - alice[alice@centos6 ~]$cat /data/f1cat: /data/f1: Permission denied[alice@centos6 ~]$su app1Password: su: incorrect password[app1@centos6 ~]$cat /data/f1
-ACL注意点:
1.用了acl 组的权限就不是传统的组权限而是mask权限 2.如果有mask那就不能超过mask定义的权限范围 3.主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息。 4.getfacl可看到特殊权限:flags 5.通过ACL赋予目录默认x权限,目录内文件也不会继承x权限 6.base ACL 不能删除 7.mask只影响除所有者和other的之外的人和组的最大权限 ·Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission) 用户或组的设置必须在于mask权限设定范围才会生效 8.–set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能像-m一样只是添加ACL就可以 如:setfacl --set u::rw,u:wang:rw,g::r,o::- file1-ACL实例:
备份和回复ACL[root@centos6 /data]#getfacl -R dir1 > acl.txt 复制设置信息到别的文件[root@centos6 /data]#setfacl -R -b /data/dir1 删除所有acl设置[root@centos6 /data]#setfacl -R --set-file=acl.txt /data/dir1 按照acl里的设置批量设置到dir[root@centos6 /data]#setfacl --restore acl.txt 刷新acl[root@centos6 /data]#getfacl -R /data/dir1 可以看到文件夹设置回复了getfacl: Removing leading '/' from absolute path names file: data/dir1 owner: root group: rootuser::rwxgroup::r-xother::r-x file: data/dir1/f1owner: root group: rootuser::rw-group::r--other::r--
使用命令创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z
[root@centos6 /data]#mkdir -p tmp/a{1{/a,/b},2}[root@centos6 /data]#mkdir tmp/{x,y}_{y,z} [root@centos6 /data/tmp]#tree ../tmp../tmp├── a1│ ├── a│ └── b├── a2├── x_y├── x_z├── y_y└── y_z
查看文件的元数据信息有哪些,分别表示什么含义,修改文件的时间戳信息。
[root@centos6 /data]#stat f1 查看f1 文件信息 File: `f1' Size: 0 大小 Blocks: 8 IO Block: 4096 regular empty file 常规空文件Device: 803h/2051d 设备 Inode: 12 节点编号 Links: 1 链接数Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) 创建者信息Access: 2019-01-25 20:09:04.679997071 +0800 访问时间Modify: 2019-01-25 18:04:19.502000204 +0800 修改时间Change: 2019-01-25 18:04:22.858998987 +0800 创建时间[root@centos6 /data]#touch -t 201601200930 f1 修改atime和mtime 时间戳信息[root@centos6 /data]#stat f1 File: `f1' Size: 0 Blocks: 8 IO Block: 4096 regular empty fileDevice: 803h/2051d Inode: 12 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2016-01-20 09:30:00.000000000 +0800Modify: 2016-01-20 09:30:00.000000000 +0800Change: 2019-01-25 21:17:37.127998705 +0800
在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@centos6 /data]#touch tfile-`date +%F-%H-%M-%S` [root@centos6 /data]#ls201601200930 acl.txt dir1 f1 s tfile-2019-01-25-21-27-09 tmp
复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
[root@centos6 /etc]#cp -a /etc/p*[^[:digit:]] /tmp/mytest1
创建用户tom,指定UID为5001,指定家目录为/tmp/tom, 指定shell为/bin/zsh, 指定基本组为tom,附加组为jack。
[root@centos6 /data]#useradd -u 5001 -d /tmp/tom -s /bin/zsh -G jack -U tom
sysnopsis 简单概述
linux用户:username/uid 管理员:root,0 普通用户:1-65535 系统用户:1-499,1-999(centos7) 对守护进程获取资源进行权限分配 登录用户:500+,1000+(centos7) 系统用户一般是服务进程 ,500+是centos6 /etc/passwd 文件格式[root@centos6 /data]#cat /etc/passwd |grep root root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
login name 用户名 :passwd 密码 :UID 用户编号 :GID 组编号 :home directory 家目录:shell 用户默认使用的shell类型
/etc/shadow 文件格式[root@centos6 /data]#cat /etc/shadow |grep root root:$6$tL8GCRnu$HZnCB0zzzv8Hf5nVgp2BQc33J02mkPdIou9AsObhyXrUYSSkyeyfozsB6//xHy1oXT8yZ7mmftL.vM.qZDAdB1:17891:0:99999:7:::
用户名 :用户密码一般用sha512加密 :从1970年1月1日起到密码最近被更改的时间 :密码再过几天可以被变更 (0表示随时可被变更) :密码再过几天必须被变更(99999表示永不过期):密码过期前几天系统提醒用户(默认为以一周):密码过期几天后账号会被锁定:从1970年1月1日算起,多少天后账号失效
group组:groupname/GID
管理员组;root,0 普通组: 系统组:1-499,999(CENTOS7) 普通组:500+,1000(CENTOS7) 用户的主要组(primary group) 用户必须属于一个且只有一个主组 组名同用户名,且仅包含一个用户,私有组 用户的附加组(supplementary group) 一个用户可以属于零个或多个辅助组/etc/group文件格式
[root@centos6 /etc/profile.d]#cat /etc/group tcpdump:x:72:opts:x:2009:xin,xixi
群组名称:群组密码(通常不需要设定,密码是被记录在/etc/gshadow):GID:以当前组为附加组的用户列表(分隔符为逗号)
-密码加密
加密机制: 明文->密文 密文->明文 单向加密:哈希算法,原文不同,密文必不同 相同算法定长输出,获得密文不可逆推出原始数据 雪崩效应:初始条件的微小改变,引起结果的巨大改变 md5:message digest ,128bits sha1:secure hash algorithm ,160bits sha224:224bits sha256:256bits sha384:384bits sha512:512bits 更改加密算法 authconfig --passlgo =sha256 --update-用户和组管理命令
useradd usermod userdel groupadd groupmod groupdel chfn 修改描述信息 chsh 修改用户shell类型 usermod 修改用户账号 chage 更改用户名密码到期信息 (interactive交互式) passwd 更新用户的身份验证令牌 newgrp 相当于把什么当做主组 不在这个组需要输入口令,已经在并且为副组就不需要做口令 vipw 和vigr 会有语法报警 避免操作失误 pwck 和 grpck 验证密码文件的完整性 getent 可用从目录文件中找出符合条件的行-用户创建配置目录
/etc/passwd /etc/shadow /etc/default/useradd 默认创建账号的哪些配置 /etc/login.defs 修改密码默认的到期信息 /etc/skel 家目录模版-用户管理注意点:
1.windows里 net user 查看当前有多少用户,net user test 123 /add 加入用户 net localgroup 查看当前组 2.linux 默认私有组 一个账号创建给一个组 3.当用户运行程序时,这个程序是用用户身份来决定的 。能否访问由contxt 安全上下文决定(运行此程序的用户身份, 用户组身份) 4.一个用户有多个组,那权限是累加的 5.一个账号必须属于一个组,这个组叫主组 6.Linux用户和组的主要配置文件 /etc/passwd:用户及其属性信息(名称、UID、主组ID等) /etc/group: 组及其属性信息 /etc/shadow:用户密码及其相关属性 /etc/gshadow:组密码及其相关属性 .bashrc 用户配置文件 7.pwunconv转换口令,查看加密密码 8.如果没有管理员账号,系统进入死循环,两个管理员的,登录的时候,取上一个名字 9.进程所能够访问资源 权限取决于进程的运行者的身份如: root: /bin/nano alice:/bin/nano 10.可以安装finger查询用户信息 11.cat /etc/login.defs 可以看到修改的文件,这文件可以看到用的加密算法-创建用户文件默认文档 /etc/default/useradd:
[root@centos6 /etc/profile.d]#cat /etc/default/useradd GROUP=100 组HOME=/homeINACTIVE=-1 账号过期时候的宽限期 (-1等于不设置)EXPIRE= 账号的有效时间SHELL=/bin/bash 使用的shell命令SKEL=/etc/skel 模版目录CREATE_MAIL_SPOOL=yes 邮箱
-用户管理实例:
让用户登录立即更改口令 chage -d 0 =passwd -ebob:/:17895:0:9900:7:::[root@centos6 /etc/profile.d]#passwd -e bobExpiring password for user bob.passwd: Success[root@centos6 /etc/profile.d]#grep bob /etc/shadowbob:/:0:0:9900:7:::
sysnopsis 简单概述
useradd 选项 用户名 newusers 可用根据文件批量创建 chpasswd 可用根据情况批量修改密码-useradd常用选项
-u UID -o 配合-u选项,不检查UID的唯一性 -g GID :指明用户所属基本组,可为组名,也可以GID -c “COMMENT”:用户的注释信息 -d HOME_DIR:以指定的路径(不存在)为家目录 -s SHELL:指明用户的默认shell程序 可用列表在/etc/shells 文件中 -G GROUP1 [GROUP2。。] :为用户指明附加组,组必须事先存在 -N 不创建私用组做主组,使用users组做主组 -r:创建系统用户(centos 6:id <500,centos 7 :id<1000) -m 创建家目录,用于系统用户 -M 不创建家目录,用于非系统用户 -a 追加-用户创建实例:
批量创建用户和修改密码[root@centos6 /data]#echo -e "app1:x:2000:2000::/home/app1:/bin/bash\napp2:123456:2001:2002::/home/app2:/bin/bash\napp3:x:2003:2003::/home/app3:/binbash" >users.txt [root@centos6 /data]#newusers users.txt 这些账号是没有口令的,可用批量修改口令 [root@centos6 /data]#echo -e "app1:123\napp2:xx\napp3:1232" >passwd.txt [root@centos6 /data]#cat /data/passwd.txt |chpasswd [root@centos6 /data]#getent passwd app1 app1:x:2000:2000::/home/app1:/bin/bash [root@centos6 /data]#getent passwd app2 app2:x:2001:2002::/home/app2:/bin/bash [root@centos6 /data]#getent passwd app3 app3:x:2003:2003::/home/app3:/binbash
创建用户gentoo,附加组为bin 和root,默认shell为/bin/csh ,注释信息为"gentoo,distribution"
[root@centos6 /data]#useradd -G bin,root -s /bin/csh -c 'gentoo,distributionn' gentoo
用户附加组,一定要先创建组
groupadd webs useradd -G "webs" nginxuseradd -r -s /sbin/nologin**
sysnopsis 简单概述
usermod [选项] 用户名 -u UID 新UID -g GID 新主组 -G group,group1…新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项 -s SHELL 新的默认SHELL -c ‘COMMENT’ 新的注释信息 -d HOME 新家目录不会自动创建;若要创建新家目录并移动原家目录数据,同时使用-m选项 -l login_name 新的名字 -L lock指定用户,在/etc/shadow 密码栏增加’!’ -U unlock指定用户,将/etc/shadow 密码栏的’!'拿掉 -e YYYY-MM-DD 指明用户账号过期日期 -f inactive 设定非活动期限userdel 选项 用户名
-r 删除用户家目录id [选项]…[用户]
-u 显示UID -g 显示GID -G 显示用户所属的组的id -n 显示名称,需要配个ugG使用-注意点:
1.默认不会删除家目录其他东西,var/spool/mail邮箱地址 2.工作中一般不要加r,说不定数据有用 3.id命令通常测试判断某个用户的信息,比如是否存在-用户属性和删除实例:
用户追加组和取消附加组[root@centos6 /data]#usermod -aG app3 app2[root@centos6 /data]#id app2uid=2001(memcachaed) gid=2002(app2) groups=2001(memcachaed),2003(app3)[root@centos6 /data]#usermod -G "" app2[root@centos6 /data]#id app2uid=2001(memcachaed) gid=2002(app2) groups=2001(memcachaed)
sysnopsis 简单概述
su [选项…] [-] [user [args] ] 切换用户的方式: su UserName:非登录时切换,既不会读取目标用户的配置文件,不改变当前工作目录 su - UserName :登录时切换,会读取目标用户的配置文件,切换至家目录,完全切换-切换用户注意点:
1.root su至其他用户无须密码;非root用户切换时需要密码 2.有时候根据使用环境切换,不想退出当前目录工作的就用不完全切换 -l UserName 相当于su - UserName-su 切换用户实例
换个身份执行命令,执行完再退回原来账号[root@centos6 /data]#su app1 -c ls passwd.txt users.txt
sysnopsis 简单概述
passwd [选项] 用户名:修改指定用户的密码 常用选项: -d:删除指定用户密码 -l:锁定指定用户 -u:解锁指定用户 -e:强制用户下次登录修改密码 -f:强子操作 -n mindays:指定最短使用期限 -x maxdays:最大使用期限 -w warndays:提前多少天开始警告 -i inactivedays:非活动期限 –stdin:从标准输入接收用户密码 echo “passwd” |passwd --stdin username修改用户密码策略概述
chage [选项]… login -d last_day -E --expiredate EXPIRE_DATE -I --inactive 无效时间 -m --mindays MIN_DAYS -M --maxdays MAX_DAYS -W --warndays WARN_DAYS -l 显示密码策略-用户相关的其他命令:
chfn指定个人信息 chsh 指定shell fingger -修改密码策略实例:chage -d 0 tom 下一次登录强制重设密码 chage -m 0 -M 42 -W 14 -I 7 tom 设置tom的密码策略为 最短密码有效时间0 (可以马上修改),最长密码有效时间为42天, 提前7天预警,账号有效时间过了还有7天可以使用 chage -E 2016-12-19 tom tom账号到2016-12-19到达使用日期
sysnopsis 简单概述
groupadd [选项] …group_name 组名 -g GID:指明GID号;[GID_MIN,GID_MAX] -r:创建系统组 centos6:id<500 centos7:id <1000组属性修改:
groupmod [选项] …group -n group_name: 新名字 -g GID :新的GID组删除:groupdel
groupdel GROUP更改组密码:
组密码:gpasswd gpasswd [选项] group -a user 将user添加至指定组中 -d user 从指定组中移除用户user -A user1,user2,…设置有管理权限的用户列表 newgrp命令:临时切换主组 如果用户本部属于此组,则需要组密码更改和查看组成员
groupmems [选项] [action] 选项: -g,–group groupname 更改为指定组(只有root) actions: -a,–add username 指定用户加入组 -d,–delete username 从组中删除用户 -p,–purge 从组中清楚所有成员 -l,–list 显示组成员列表 groups [选项].[username]… 查看用户所属组列表–注意点:
1.不能删除主组,可以删附加组-组管理实例
把用户alice 从g1组删除[root@centos6 ~]#groupmems -a alice -g g1[root@centos6 ~]#id aliceuid=2005(alice) gid=2005(alice) groups=2005(alice),2006(g1)[root@centos6 ~]#groupmems -d alice -g g1[root@centos6 ~]#id aliceuid=2005(alice) gid=2005(alice) groups=2005(alice)
删除g1组
[root@centos6 ~]#groupdel g1
sysnopsis 简单概述 程序:指令+数据 读入数据:input 输出数据:output 打开的文件都有一个fd:file descriptor(文件描述符) linux给程序提供三种I/O设备 标准输入(STDIN) -0 默认接受来自键盘的输入 标准输出(STDOUT) -1 默认输出到终端窗口 标准错误(STDERR) -2 默认输出到终端窗口 I/O重定向:改变默认位置
-把输出和错误重新定向到文件:
命令 操作符号 文件名 支持的操作符号包括: > 把STDOUT 重定向到文件 2> 把STDERR 重定向到文件 &> 把所有输出重定向到文件 > 文件内容会被改 set -C 禁止将内容覆盖已有文件,但可追加 > | file 强制覆盖 set +C 允许覆盖 >> 原有内容基础上,追加内容-tr命令:翻译转换或删除字符
tr 转换和删除字符 tr [选项]…SET1 [SET2] set1 表示字符串 选项: -c -C --complement :取字符集的补集 -d --delete:删除所有属于第一字符集的字符(删除set1的字符串,但是不转换) -s --squeeze-repeats:把连续重复的字符以单独一个字符表示(是如果有重复字符压缩成1个字符) -t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符(是把set1 的长度跟set2一致) -glob通配符: [:alnum:]:字符和数字[:alpha:]:字母[:cntrl:]:控制(非打印)字符[:digit:]:数字 [:graph:]:图形字符[:lower:]:小写字母[:print:]:可打印字符[:punct:]:标点符号 [:space:]:空白字符[:upper:]:大写字母[:xdigit:]:十六进制字符-从文件中导入STDIN
使用<来重定向标准输入 某些命令能够接受从文件中导入的STDIN tr ‘a-z’ ‘A-Z’ </etc/issue 该命令会把/etc/issue 中的小写字符都转换成大写字符 tr -d abc </etc/fstab 删除fstab文件中的所有abc中任意字符 cat > file xx1 xx2 按ctrl+d离开,可以使用文件来代替键盘的输入 Cat > filea <fileb 用这种命令可以方便处理文本中的符号,就是把文件内容改成linux格式-把多行发送给STDIN
使用"<<任意终止词" 命令从键盘把多行重导向给STDIN 直到 '终止词’的位置所有文本都发送给STDIN 有时被称为就地文本(heretext) mail -s “Please Call” <hi xxx, > >Please give me a call when you get in.We may need >to do some maintenance on sever1. > >Details when you’re on-site >alice >end-注意点:
1.指令是浮余数据 2.标准输出默认是当前的终端窗口 3.每打开文件就会有fd文件描述符 4.fd的0,1,2,255有特殊含义对应下面 std(stander ) in (input) stdout (output) err (error) 5.标准错误和标准输出都是用当前终端窗口 6.标准输入输出可能以前版本有些不支持,建议写脚本这样 cmd &>all.log;cmd 2>&1;cmd >all.log 2&>1;cmd 2>all.log 1>&2sysnopsis 简单概述
管道(使用符号“|”表示)用来连接命令 命令1|命令2|命令3|。。 将命令1的STDOUT发送给命令2 的STDIN,命令2的STDOUT发送给命令3 的STDIN STDERR默认不能通过管道转发,可利用2>&1或|&实现 最后一个命令会在当前shell进程的子shell进程中执行用来 组合多种工具的功能: 如 ls|tr ‘a-z’ ‘A-Z’-重定向到多个目标(tee)
命令1 |tee 【-a】文件名 |命令2 把命令1的STDOUT保存在文件中,做为命令2的输入 -a追加 使用: 保存不同阶段的输出 复杂管道的故障排除 同时查看和记录输出-部分命令:
less:一页一页地查看输入 (less可以分页显示文件) ls -l /etc | less mail:通过电子邮件发送输入 echo “test email” |mail -s ‘test’ lpr:把输入发送给打印机 echo “test print” |lpr -p printer_name-注意点:
1.管道要求前面的命令必须是标准输出 2.uname -r 内核版本 lsb_release -a系统版本 3.命令要放在反向单引号里-管道实例:
将/home 里面的文件打包,但打包的数据不是记录到文件,而是传送到stdout,经过管道后, 将tar -cvf - /home 传送给后面的tar -xvf -,后面的这个-则是取前个命令的stdout,因此, 就不需要使用临时file了。(前后一致的名字就是。打包前是这个名字,解包也是这个名字, 所以就可以用-号代替)[root@centos6 ~]#tar -cvf - /home |tar -xvf -
只显示数字和空格
[root@centos6 /home]#echo 'ssjjsjff%#!n 2f/f fe 3 edklj'|tr -d [^[:alpha:]lnum:]^[:punct:]] 2 3
将文件etc/centos-release 中每个单词(由字母组成)显示在独立的一行,并无空行
[root@centos6 /home]#cat /etc/centos-release |tr ' ' '\n'CentOSrelease6.10(Final)
转载地址:http://kgzgn.baihongyu.com/