Linux常用命令详解

1. ls:list directory contents 【列出当前目录的所有文件和目录】
    -l:use a long listing format 【显示长列表格式,比如文件的创建时间,大小等等】
        [root@libaoliang xiaobao]# ls -l    命令显示内容如下
        -rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
            -:文件类型(第一个字符)
                -:普通文件(f)
                d:目录文件
                b:块设备文件(block)
                c:字符设备文件(character)
                l:符号连接文件(symbolic link file)
                p:命令管道文件(pipe)
                s:套接字文件(socket)
            rwxrw-r--:文件权限(后续9位)
                每3个一组(rwx)读(r)写(w)执行(x)
                第一组rwx:文件拥有者的权限是读,写,执行
                第二组rw-:与文件所有者同一组的用户的权限是读、写 但不能执行
                第三组r--:不与文件拥有者同组的其他用户的权限是读 不能写和执行
                可以用数字表示为:r=4,w=2,x=1因此 rwx=4+2+1=7
            1:文件硬连接的次数,如果是目录,则是目录里包括的文件数
            root:文件的属主(owner)
            root:文件的属组(group)
            1213:文件大小(size),单位是字节
            Feb 2 09:39:时间戳(timestamp):最后一次修改的时间
                访问:access
                修改:modify,文件内容发生改变
                改变:change,metadata,元数据
            abc:文件名
    -h:文件大小做单位转换
    -a:[--all]    do not ignore entries starting with .【显示以 . 开头的隐藏文件】
        . 表示当前目录
        .. 表示父目录
    -A:[--almost-all]    do not list implied . and ..【显示隐藏文件,但是不显示. 和 ..】
    -d:[--directory]    list directory entries instead of contents, and do not dereference symbolic links显示目录自身属性
        如果需要看目录文件信息的话,需要额外添加一个-d参数才可以
        ls -ld /etc 【查看/etc目录中文件的权限与属性】
    -i:[--inode]    print the index number of each file 【显示每个文件的索引号inode】
    -r:[--reverse]    reverse order while sorting [逆序显示]
    -R:[--recursive]    list subdirectories recursively [递归(recursive)显示]
1. ls:list directory contents 【列出当前目录的所有文件和目录】
2. cd:Change the shell working directory 【改变目录】
    cd :不带参数 到登录用户的工作主目录 家目录 home directory
    cd ~: 切换到前用户的家目录
    cd ~USERNAME:进入指定用户的家目录
    cd -:在当前目录和前一次所在的目录之间来回切换
2. cd:Change the shell working directory 【改变目录】
type:Display information about command type 【显示命令类型】
    内部命令(shell内置)
        help COMMAND
    外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
        COMMAND --help
3. type:Display information about command type 【显示命令类型】
4. man 命令
    分章节:
        1:用户命令(所有用户都可以使用的命名)
        2:系统调用
        3:库调用
        4:特殊文件(设备文件)
        5:文件格式(配置文件的语法)
        6:游戏
        7:杂项(Miscellaneous)
        8:管理命令(/sbin,/usr/sbin,,/usr/local/sbin)
    <>:必选
    []:可选
    ...:可以出现多次
    {}:分组
    NAME:命令名称及功能简要描述
    SYNOPSIS:用法说明,包括可用的选项
    DESCRIPTION:命令功能的详尽说明,可能包含每一个选项的意义。
    OPPTIONS:说明每一个选项的意义
    FILES:此命令相关的配置文件
    BUGS:bug报告相关地址
    EXAMPLES:使用事例。
    SEE ALSO:另外参照。
    翻屏:
        向后翻一屏:SPACE空格键
        向前翻一屏:b
        向后翻一行:ENTER,j
        向前翻一行:k
    查找:
        /keyword:向后
        n:下一个
        N:前一个
        ?keyword:向前
        n:下一个
        N:前一个
    退出:q
4. man 命令

5. whatis COMMAND :显示命令摘要信息,以及出现在那些章节中

6. info COMMAND:read Info documents 【在线手册,对man的补充】

7.日历时间命令
date :print or set the system date and time 【用于显示及设置系统(软件时间)时间或日期】 格式为:"date [选项] [+指定的格式]"。
        date [MMDDhhmm[[CC]YY][.ss]] 意思是指 月月日日时时分分年年年年.秒秒;
        例如:date 081709202017.30 表示设置系统时间为2017年8月17日09时20分30秒
            参数         作用
            %t        跳格[TAB键]
            %H        小时(00-23)
            %I        小时(00-12)
            %M        分钟(00-59)
            %S        秒(00-59%X        相当于%I:%M:%S %p
            %Z        显示时区
            %p        显示本地AM或PM
            %A        星期几 (Sunday-Saturday)
            %a        星期几 (Sun-Sat)
            %B        完整月份 (January-December)
            %b        缩写月份 (Jan-Dec)
            %d        日(01-31)
            %j        一年中的第几天(001-366)
            %m        月份(01-12)
            %Y        完整的年份
            %F        full date; same as %Y-%m-%d
            %T         time; same as %H:%M:%S
        date 【按照默认的格式查看当前的系统时间】
        date "+%Y-%m-%d %H:%M:%S" 相当于 date "+%F %T"  【按照"年-月-日 小时:分钟:秒"的格式查看当前的系统时间】
        date -s "20160901 8:30:00" 【设置当前的系统时间为2016年9月1日8点30分】
date :print or set the system date and time 【用于显示及设置系统(软件时间)时间或日期】 格式为:"date [选项] [+指定的格式]"。
clock 或 hwclock:查看硬件时间(晶体振荡器)
    hwclock:
        -w:Set the Hardware Clock  to  the  current  System Time.【将系统时间设置为硬件时间。】
        -s:Set the System Time from the Hardware Clock.【将硬件时间设置为系统时间 】 
clock 或 hwclock:查看硬件时间(晶体振荡器)
cal:calendar 日历
        cal 3 2003 【查看2003年3月的月历】
        cal 2008     【查看2008年年历】
cal:calendar 日历
echo:【用于在终端显示字符串或输出变量提取后的值】格式: echo [字符串|$变量]
    -n     do not output the trailing newline【默认echo输出尾随的换行符,加-n选项 不输出尾随的换行符】
    -e     enable interpretation of backslash escapes 【启用反斜杠转义的解释】
    -E     disable interpretation of backslash escapes (default)【默认不启用反斜杠转义的解释】
    \b     backspace
    \n     new line   
    \t     horizontal tab 【横向制表符】
    \v     vertical tab  【纵向制表符】
    事例:echo -e "First line \n \bSecond line" 相当于 echo -e "First line \nSecond line"  【分2行显示】
printf:format and print data 【格式和打印数据,默认不输出尾随换行符,需要\n转义,跟echo的区别】
    \n     new line
8. echo 和 printf 在终端输出显示命令
9. mkdir:make directories【创建目录】
    -p:[--parents] no error if existing, make parent directories as needed 【可创建多级目录】
    -v:[--verbose] print a message for each created directory(verbose)【显示过程详细信息】
        例如:mkdir -pv /mnt/test/{x/m,y} 【创建2个目录(花括号展开,将花括号中 逗号分割的 展开为2个) 相当于 mkdir -pv /mnt/test/x/m  /mnt/test/y】 
    -m, [--mode=MODE] set file mode (as in chmod), not a=rwx - umask 【设定文件权限】
        例如:mkdir -m 777 testDir1 【创建目录testDir1,并且权限为rwxrwxrwx】
9. mkdir:make directories【创建目录】
10. rmdir:remove empty directories 【只能删除空目录】
     -p:[--parents] remove DIRECTORY and its ancestors; e.g., ‘rmdir -p a/b/c’ is similar to ‘rmdir a/b/c a/b a’ 【可删除多层目录】
     -v:[--verbose] output a diagnostic for every directory processed 【显示处理详细信息】
10. rmdir:remove empty directories 【只能删除空目录】
11. touch:【建立空文件】【创建空白文件与设置文件的各种时间】 格式:touch [格式] [文件]

12. stat:display file or file system status 【显示文件或系统的属性信息,用于查看文件的具体存储信息和时间信息】 格式:stat [OPTION]... FILE...

13. cp:copy 复制文件 ,可以一次复制多个文件到指定目录 cp file1 fiel2 fiel3   dir 将 fiel1,file2,file3 复制到 dir目录
    -p:【保留原有属性。比如 文件a 的创建者是 xiaobao ,复制者是root,那么cp a b ;b文件的属主是root;  cp -p a c,c文件属主是原来的xiaobao】
    -i:【( --interactive) 当文件被覆盖时提示】
    -f:【不用提示,强制覆盖】
    -r:【(--recursive 递归复制  copy directories recursively)】
    -d: 【若对象为"链接文件",则保留该"链接文件"的属性】
    -a:【相当于-pdr,保留文件原有的一切属性。归档复制,常用的备份】
13. cp:copy 复制文件 ,可以一次复制多个文件到指定目录 cp file1 fiel2 fiel3 dir 将 fiel1,file2,file3 复制到 dir目录

14. mv:move (rename) files【移动文件和改文件名】

15. rm:【删除文件和目录】用type rm 可以看到 rm 是 rm -i 的别名,即默认使用 rm -i 交互方式删除文件。如果想使用 原生rm删文件,需要加\ 即 \rm
    -i:prompt before every removal 交互方式
    -f:强制删除
    -r:递归删除
    rm -rf * 【删除所有内容(包括目录和文件)r递归 f强制】
15. rm:【删除文件和目录】用type rm 可以看到 rm 是 rm -i 的别名,即默认使用 rm -i 交互方式删除文件。如果想使用 原生rm删文件,需要加\ 即 \rm
install: copy files and set attributes,install【命令即安装程序使用的命令。可以用作复制文件】。
    install -d dir 创建目录dir
    install  source targe 复制文件;用install 复制的文件,默认可带执行权限,这是和cp命令不同的地方
    -d:创建目录
    -m:设置权限,若不设置,默认为 rwxr-xr-x    
16. install: copy files and set attributes,install【命令即安装程序使用的命令。可以用作复制文件】。
17. file:determine file type【查看文件的类型】 格式:file 文件名
    file mytest1.java
    file /dev/sda
17. file:determine file type【查看文件的类型】 格式:file 文件名
18. 查看文件命令:cat、tac、more、less、head、tail
cat:concatenate files and print on the standard output【连接并显示,用于查看纯文本文件(较短的)】
    -n:显示文本行号
    -E:显示文本结束符,linux中结束符是$
cat:concatenate files and print on the standard output【连接并显示,用于查看纯文本文件(较短的)】
more:【显示文件(较长的)内容,带分页】
    SPACE空格键:向后翻一屏,翻到最后直接退出
    b键:向前翻一屏
    Enter键:向后翻一行
more:【显示文件(较长的)内容,带分页】
less:【显示文件内容,带分页。类似与man的用法】
    SPACE空格键:向后翻一屏,翻到最后直接退出
    b键:向前翻一屏
    Enter键 或 j键:向后翻一行
    k键:向前翻一行
    翻到最后不直接退出,需要按q键盘退出。注意与more的区别。
less:【显示文件内容,带分页。类似与man的用法】
head:【查看前n行】
    -c:--bytes=[-]K 【显示前n个字符】     
    -n:--lines=[-]K 【显示前n行】     
    head -n 5 /etc/inittab 和 head -5 /etc/inittab:【查看前5行,-n可以省略,直接用-数字】
    head -c -5 /etc/inittab 【显示前5个字符】
head:【查看前n行】
tail:【用于查看纯文本文件的后n行 或 持续刷新内容】
    -f:【查看文件尾部,不退出,等待显示后续追加到此文件的新内容。】
    tail -n 20 文件名【查看文件后20行】
    tail -f /var/log/message 【持续刷新 日志文件,实时查看最新日志文件内容】
tail:【用于查看纯文本文件的后n行 或 持续刷新内容】
19. 文本处理相关命令:cut、join、grep、sed、awk
cut:remove sections from each line of files 【按列显示指定列字段的内容】
    -d:指定字段分隔符
    -f:指定要显示的字段
    -f 1,3 表示显示第1个,和第3个字段
    -f 1-3 表示显示第1到第3个字段
    cut -d: -f 1-3 /etc/passwd    显示/etc/passwd文件中 以:分割,第1-3个字段的内容
cut:remove sections from each line of files 【按列显示指定列字段的内容】
sort:sort lines of text files【文本排序,默认按ascii排序】
    -n:[--numeric-sort]按数值排序  
    -r:[--reverse]逆序排序
    -d:[ --dictionary-order]只考虑空格和字母数字字符
    -t:[ --field-separator]指定分隔符
    -k:--key=POS1[,POS2] 以那个字段为关键字进行排序
    -u:[--unique]将重复的行过滤掉,行内容一样就算重复行
    -f:[--ignore-case] 忽略字符大小写
    sort -t: -k 3 -n /etc/passwd   指定分割:,按第三个字段 以数值 比较排序
sort:sort lines of text files【文本排序,默认按ascii排序】
uniq:report or omit repeated lines,【该命令将 行内容相同 并且 相邻的行才叫重复行】
    -d:[--repeated]显示重复行
    -D:显示所有重复行
    -c:prefix lines by the number of occurrences 显示文件中行重复的次数
uniq:report or omit repeated lines,【该命令将 行内容相同 并且 相邻的行才叫重复行】
grep:print lines matching a pattern 【根据模式搜索文本,并将符合模式的文本行显示出来】grep [OPTIONS] PATTERN [FILE...]
    Pattern:文本字符和正则表达式的元字符组合而成匹配条件 
    -i:[--ignore-case] 【忽略大小写】
    --color:【将匹配的内容高亮显示】
    -n:[--line-number]Prefix  each  line  of  output with the 1-based line number within its input file【显示行号】
    -v:[--invert-match] Invert the sense of matching, to select non-matching lines. 【显示没有被匹配到的行】
    -o:[--only-matching]Print  only  the  matched  (non-empty)  parts of a matching line 【只显示被匹配到的 字符串】
    -E:[--extended-regexp] 使用扩展表达式
    -A NUM:[ --after-context=NUM]如果某行被grep 模式匹配到后,还会显示匹配到的行后面的n行
    -B NUM:[--before-context=NUM]
    -C NUM:[ -NUM, --context=NUM]
    grep “libaoliang” aaa.java  表示 在 aaa.java文件中查找 libaoliang
grep:print lines matching a pattern 【根据模式搜索文本,并将符合模式的文本行显示出来】grep [OPTIONS] PATTERN [FILE...]


20. tr:【字符处理命令】 translate or delete characters 
    -d:[--delete] delete characters in SET1, do not translate  删除出现在字符集中所有字符
    tr a-z A-Z < /etc/inittab :将/etc/inittab文件中所有小写字符转换为大小字符
    
20. tr:【字符处理命令】 translate or delete characters
21. wc: 【文本统计命令】 print newline, word, and byte counts for each file 【显示文件的 行数,单词数,字节数】
    -l:( --lines)   print the newline counts 只显示行数
    -w:(--words) print the word counts 只显示单词数
    -c:(--bytes)只显示字节数
    -L(--max-line-length)print the length of the longest line 显示最长的行的长度
    wc -l /etc/passwd 【passwd用于保存系统帐号信息的文件,这样可以统计出当前系统有多少个用户】
21. wc: 【文本统计命令】 print newline, word, and byte counts for each file 【显示文件的 行数,单词数,字节数】
22. bash特性
pstree: display a tree of processes 【查看进程树】
①命令历史
  
    history:【显示最近执行的所有命令】
        -c:清空命令历史
        -d OFFSET [n] :删除指定位置命令
        -w:保存命令历史到历史文件(历史文件 是 用户家目录里的.bash_history)
        history -d 500 删除第500个命令
        history -d 500 10 从第500个开始往后删除10个
    命令历史使用技巧
        !n:执行命令历史中第n条命令
        !-n:执行命令历史中倒数第n条命令
        !!:执行上一条命令
        !string:引用命令历史用最近一个以指定字符串开头的命令
        !$:引用前一个命令的最后一个参数
        ESC,.:引用前一个命令的最后一个参数
        Alt+. :引用前一个命令的最后一个参数
history:【显示最近执行的所有命令】

  HISTSIZE:命令历史缓冲区大小,环境变量中定义,默认值 为1000,
  history命令默认会保存1000条执行过的命令,若要修改可直接编辑/etc/profile文件的HISTSIZE值
  历史命令会被保存到用户家目录中的".bash_history"文件中

②管道,重定向

| :【管道命令】在linux和unix中 |表示管道命令,将上个命令的结果交给后面的命令处理。 例如:ls -l /etc/ | more  这段命令表示:将/etc/目录下内容以长格式 的结果交给 | (管道) 后面的命令more 分页显示
    tee: read from standard input and write to standard output and files 【标准输入读取数据,输出到标准输出】
        -a: [--append] append to the given FILEs, do not overwrite
        echo “hello world” | tee /home/xiaobao/myfile.txt :【标准输出屏幕会输出hello world,文件myfile.txt中 也会添加 hello world】
练习
练习
        1.统计/usr/bin/目录下的文件个数
            ls -l /usr/bin/ | wc -l
        2.取出当前系统上所有用户的shell,要求,每种shell只显示一次,并且按顺序进行显示
            ①cat /etc/passwd | cut -d: -f7 | sort -u    
            ② cut -d: -f7 /etc/passwd | sort -u
        3.思考:如何显示/var/log目录下每个文件的内容类型
            ①file /var/log/*
            ②file `ls /var/log`

        4.取出/etc/inittab文件的第5行
            head -5 /etc/inittab | tail -1
        5.取出/etc/passwd文件中倒数第9个用户的用户名和shell,显示到屏幕上并将其保存到/tmp/users 文件中
            tail -9 /etc/passwd | head -1 | cut -d: -f1,7 | tee /home/myfile.txt
        6.显示/etc目录下所有以pa开头的目录,并统计其个数
            ls -d /etc/pa* | wc -l
        7.不使用文本编辑器,将 alias cls=clear 一行内容添加到当前用户的.bashrc文件中
            echo "alias cls='clear'" | ~/.bashrc
****************************************管道 练习**********************************************************
    > :覆盖重定向
        set -C :禁止对已经存在文件使用覆盖重定向
            如果不想关闭-C选项功能,需要强制覆盖输出,则使用  >|,如 ls /etc/inittab >| /tmp/var.out
        set +C:关闭上述功能
    >>:追加重定向
    2>:重定向错误输出 覆盖
    2>>:重定向错误追加
    &>:重定向标准输出和错误输错到用以文件
    &>>:重定向追加 标准输错 和 错误输出到同一文件
    <:输入重定向
    <<:Here Document,常用于 用户多行输入 生成文件  
       
     cat >> myfile.txt << EOF    #通过用户输入生成文档
      
****************************************重定向 练习**********************************************************

③命令别名

  
    alias CMALIAS='COMMAND [options] [arguments]'
        alias 【显示系统当前定义的所有alias】
        alias llh='ls -l /home' 【这样设置后,当输入llh时,相当于输入了 ls -l /home】
        在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程
    unalias CMDALIAS 撤销别名
        已定义别名的命令 若想使用原命令可使用 \CMD ,例如 alias mv='mv -i' ,可以使用\mv 即不加-i参数
alias CMALIAS='COMMAND [options] [arguments]'

④命令行编辑

  
光标跳转:
        Ctrl+a:跳转到命令行首
        Ctrl+e:跳转到命令行尾
        Ctrl+d:删除一个光标后的字符
        Ctrl+u:删除光标到命令行首内容
        Ctrl+k:删除贯标到命令行尾内容
        Ctrl+l:清屏
        Ctrl+→  或←:命令光标以单词为单位移动
光标跳转

⑤命令行展开
⑥文件名通配  

  *:任意长度的任意字符
  ?:任意单个字符
  []:指定范围内的任意单个字符 [a-m],[A-Z] ,[0-9],[a-zA-Z]
  [:space:]:空白字符
  [:punct:]:标点符号
  [:lower:] :小写字符 "[[:lower:]]" instead of "[a-z]"
  [:upper:]:大写字母
  [:alpha:]:大小写字母
  [:digit:]:数字
  [:alnum:]:数字和大小写字母
  使用 man 7 glob 可以获得以上列表
  [^]:配置指定范围之外的任意单个字符 例如 : [^0-9]* 表示 匹配非数字开头的文件

  练习

通配符 练习

    1.创建a123,cd6,c79m,c1 my,m.z,k 67,8yu,789等文件,以上文件是以逗号隔开的,其他部分都是文件名的组成部分

      用 矩形 和 椭圆 圈住的表示一个文件,文件与文件之间用 英文半角 空格 隔开;椭圆圈住的文件名包括空白字符,使用 中文全角 空格
    2.显示所有以a或m开头的文件
      ls [am]*
    3.显示所有文件名中包含了数字的文件
      ls *[[:digit:]]*
      ls *[0-9]*
    4.显示所有以数字结尾且文件名中不包含空白的文件
      通配符无法精确描述
    5.显示文件名中包含了非字母或数字的特殊符号文件
      ls *[^[:alnum:]]*
      ls *[^a-zA-Z0-9]*

****************************************通配符 练习**********************************************************

⑦变量
⑧编程

  反引号 `COMMAND` 或 $(COMMAND) 命令替换,将子命令括起来 就可以得到子命令结果
  双引号 “” :弱引用,可以实现变量替换
  单引号 '' : 强引用,不完成变量替换
  反斜杠 \ 的作用就是转义后面的一个字符变为单纯的字符串,

****************************************转义符 练习**********************************************************
23. 查看用户帐号属性信息
id:查看用户帐号 的pid,gid,groups
-u:(--user) print only the effective user ID
-g:(--group)print only the effective group ID
-G:(-groups) print all group IDs
-n:(--name) print a name instead of a number, for -ugG
id:查看用户帐号 的pid,gid,groups

finger USERNAME:查看用户帐号属性信息

24. 用户及 组 管理相关命令,只有root用户,和拥有root权限的用户才能 管理用户    
useradd [options] USERNAME 添加用户
    -u:[--uid UID] The numerical value of the user´s ID【指定用户UID,一定要大于等于500】
    -g:[--gid GROUP]  The group name or ID for a new user´s initial group 【指定基本组】
    -G:(GID,....)指定附加组
    -c  "COMMENT":[--comment COMMENT] 【指定注释信息】
    -d /path/to/somedirectory :[--home-dir HOME_DIR] 【指定用户家目录】
    -e:[--expiredate EXPIRE_DATE]The date on which the user account will be disabled. The date is specified in the format YYYY-MM-DD. 【帐号有效截至日期,格式:YYYY-MM-DD】
    -s :[--shell SHELL] 【指定shell】
        /etc/shells 定义了当前系统可用的安全Shell
     -M:[-create-home] 创建用户家目录
        /etc/login.defs :定义了创建用户时 添加到/etc/shadow中的默认信息
    -m:[--create-home] 创建家目录,和 -k组合使用
    -k:[--skel SKEL_DIR] 【指定了 -m 选项,这个选项才有效】
        /etc/default/useradd:定义了创建用户时 添加到passwd中的默认信息
    -r:[--system] Create a system account.【添加系统用户,系统用户不能登录系统,没有家目录】
    -N:[--no-user-group] Do not create a group with the same name as the user 【不创建与用户同名的基本用户组】
useradd [options] USERNAME 添加用户
userdel [options] USERNAME:【删除用户】
    -r:[--remove] 同时删除家目录
userdel [options] USERNAME:【删除用户】
usermod:modify a user account
    -u :[--uid UID] 修改UID
    -g:[-gid GROUP] 修改 基本组
    -G:--groups GROUP1[,GROUP2,...[,GROUPN]]] 修改附加组,只用-G修改附加组 会覆盖掉原来的附加组,要在现有基础上添加附加组,一般 -G -a 一块使用,表示在现有基础上附加新组
    -d:[--home HOME_DIR] 修改用户家目录,和 -m (--move-home)一块使用,即改用户家目录,又移动原来家目录到新家目录
    -c:[--comment COMMENT] 修改注释信息
    -s:[--shell SHELL] 修改 shell
    -l:[--login NEW_LOGIN] 修改用户登录名
    -L:[--lock]锁定用户
    -U:[--unlock]解锁用户
usermod:modify a user account
chsh:change your login shell 【修改用户默认shell】
    -s:[ --shell shell] Specify your login shell.
chsh:change your login shell 【修改用户默认shell】
chfn [username]:修改注释信息
    -l: [--list-shells] Print the list of shells listed in /etc/shells and exit.
chfn [username]:修改注释信息
passwd [USERNAME]:update user’s authentication tokens 【修改密码】
    --stdin:(标准输入流)
    -l:锁定帐号
    -u:解锁帐号
    -d:删除用户密码
    -n:This will set the minimum password lifetime
    -x:This will set the maximum password lifetime
    -e:This is a quick way to expire a password for an account. The user will be forced to change the password during the next login attempt 【强制用户下次登陆时修改密码】
    -S:This will output a short information about the status of the password for a given account 【显示用户的密码状态】
passwd [USERNAME]:update user’s authentication tokens 【修改密码】

pwck:verify integrity of password files 【检查用户帐号完整性】

groupadd: create a new group 【添加组】
    -g:[--gid GID] 【指定GID】
    -r:[--system] 【添加 系统组】
groupadd: create a new group 【添加组】
groupmod:修改组
    -g GID :[--gid GID] 修改 GID
    -n GRPNAME :[--new-name NEW_GROUP] 【修改组名称】
groupmod:修改组

groupdel:删除组

gpasswd :administer /etc/group and /etc/gshadow 【为组加密码】

newgrp:log in to a new group,【用户临时切换 基本组;操作完成后,可以用 exit,退出临时组】

chage:change user password expiry information
    -d:[--lastday LAST_DAY] 最近一次的修改时间
    -E:[--expiredate EXPIRE_DATE] 过期的时间
    -i:非活动时间
    -M:[--maxdays MAX_DAYS] 最长使用期限
    -w:[--warndays WARN_DAYS] 警告时间    
chage:change user password expiry information

练习

用户/组 练习
    1.创建一个用户mandriva ,其中ID为2002,基本组为 distro (组ID为3003),附加组为linux
        groupadd -g 3003 distro
        groupadd linux
        useradd -u 2002 -g distro -G linux mandriva
    2.创建一个用户fedora,其全名为 Fedora Community,默认shell是tcsh
        useradd -c 'Fedora Community' -s /bin/tcsh fedora
    3.修改mandriva的ID号为4004,基本组为linux,附加组为distro 和 fedora
        usermod -u 4004 -g linux -G distro,fedora mandriva
    4.给fedora加密码,并设定其密码最短使用期限为2天,最长为50天
        passwd -n 2 -x 50 fedora
        passwd fedora
    5.将mandriva的默认shell改为/bin/bash
        usermod -s /bin/bash mandriv
    6.添加系统用户hbase,且不允许其登录系统
        useradd -r -s /sbin/nologin  hbase
****************************************用户/组 练习**********************************************************
25. 文件权限管理
chown:【用于修改文件或目录的所属主与所属组】格式为:“chown [参数] 所属主:所属组 文件或目录名称”,对于目录文件时需要加上大写参数-R来表示递归操作(只有管理员才可以使用此命令)
    chown USERNAME file,....:只修改文件属主
    chown USERNAME:GRPNAME file,...修改文件属主和属组
    chown USERNAME.GRPNAME file,....修改文件属主和属组
    chown :GRPNAME file,... 只修改属组
    -R:修改目录及其内部文件的属主(递归修改)
    --reference=/path/to/somefile file,,..:将 file,....等文件的 属主 和 属组 设置为/path/to/somefile文件的属主 和 属组
chown:【用于修改文件或目录的所属主与所属组】格式为:“chown [参数] 所属主:所属组 文件或目录名称”,对于目录文件时需要加上大写参数-R来表示递归操作(只有管理员才可以使用此命令)
chgrp GRPNAME file,...:【修改文件或目录属组】
    -R:递归修改目录及内部文件属组
    --reference=/path/to/somefile file,,..
chgrp GRPNAME file,...:【修改文件或目录属组】
chmod:【改变文件或目录的权限】
    修改三类用户的权限
        chmod MODE file,....   例如 chmod 755 file,file2
        -R:递归修改目录及目录包含文件的权限
        --reference=/path/to/somefile ,以somefile为基准,将其他文件改为跟somefile一样的权限
    修改某类用户或某些类的权限
        u,g,o,a
        chmod 用户类别=MODE file,...  例如:chmod u=rwx file
           chmod go=r:将属组 和 其他组 改为只读
    修改某类用户的某位或某些位的权限
        u,g,o,a
        chmod 用户类别+|- MODE file,....  例如:chmod u+x fiel 给file文件属主添加执行权限
chmod练习
        chmod 755 abc:赋予abc权限rwxr-xr-x
        chmod u=rwx,g=rx,o=rx abc:同上 u=用户权限 g=组权限 o=不同组其他用户权限
        chmod u-x,g+w abc:给abc取出用户执行权限,增加组写的权限
        chmod a+r abc:给所有用户添加读的权限
chmod:【改变文件或目录的权限】
 练习
    1.创建一个没有家目录的用户openstack
        useradd -M openstack
    2.复制/etc/skel为/home/openstack
        cp -r /etc/skel/ /home/openstack
    3.改变/home/openstack及其内部文件的属主属组均为openstack
        chown -R openstack.openstack /home/openstack/
    4./home/openstack及其内部的文件,属组和其他用户没有任何访问权限
        chmod -R  go= /home/openstack/
    5.手动添加用户hive,基本组为hive(5000),附加组为mygroup
        ①用 nano 编辑 /etc/group文件添加
            mygroup:x:4006:hive       #添加组 mygroup ,GID为4006,mygroup是hive用户的附加组
            hive:x:5000:                    #添加组 hive,GID为5000
        ②用nano 编辑 /etc/passwd文件 添加
            hive:x:4006:5000:这个用户是手动编辑本文档添加的,哈哈哈:/home/hive:/bin/bash    #添加用户hive,UID为4006,基本组GID为5000,用户hive的家目录为 /home/hive,使用的shell为/bin/bash
        ③编辑/etc/shadow文件,添加
            hive
        ④用户hive家目录处理
            cp -r /etc/skel/ /home/hive         #复制骨架目录(/etc/skel)及文件 到 /home/hive 
            chown -R hive:hive /home/hive/     #修改hive家目录/home/hive 及 内部文件的属主和属组为hive
            chmod -R go= /home/hive/        #修改hive家目录/home/hive 及 内部文件的 属组和其他组无任何权限 
        经过以上4步,用户添加完成。只是添加的用户没有密码。用 su - hive 可以正常切换到 hive用户
****************************************用户/组 练习,手动添加用户及指定用户组**********************************************************
umask:遮罩码
    umask不带选项 会显示当前登录用户的umask
    umask 022 会设置当前登录用户的umask是022
    管理员的 umask(遮罩码) 是022
    普通用户 umask            是002
    mkdir dir  创建的目录权限 777-umask
    touch file 创建的目录权限是 666-umask  ,文件默认不能具有 x 执行权限,如果算得结果中有执行权限,则将其权限 + 1   
umask:遮罩码

 



posted @ 2017-08-16 19:07  沐浴梓狼  阅读(493)  评论(0)    收藏  举报