第一部分:Linux命令行
    《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell
    《Linux命令行与shell脚本编程大全》 第二章:走进shell
    《Linux命令行与shell脚本编程大全》 第三章:基本的bash shell命令
    《Linux命令行与shell脚本编程大全》 第四章:更多的bash shell命令
    《Linux命令行与shell脚本编程大全》 第五章:使用Linux环境变量
    《Linux命令行与shell脚本编程大全》 第六章:理解Linux文件权限
    《Linux命令行与shell脚本编程大全》 第七章:管理文件系统
    《Linux命令行与shell脚本编程大全》 第八章:安装软件程序
    《Linux命令行与shell脚本编程大全》 第九章:使用编辑器

    第二部分:shell脚本编程基础
    《Linux命令行与shell脚本编程大全》 第十章:构建基本脚本
    《Linux命令行与shell脚本编程大全》 第十一章:使用结构化命令
    《Linux命令行与shell脚本编程大全》 第十二章:更多的结构化命令
    《Linux命令行与shell脚本编程大全》 第十三章:处理用户输入
    《Linux命令行与shell脚本编程大全》 第十四章:呈现数据
    《Linux命令行与shell脚本编程大全》 第十五章:控制脚本

    第三部分:高级shell编程
    《Linux命令行与shell脚本编程大全》 第十六章:创建函数
    《Linux命令行与shell脚本编程大全》 第十七章:图形化桌面上的脚本编程
    《Linux命令行与shell脚本编程大全》 第十八章:初识sed和gawk
    《Linux命令行与shell脚本编程大全》 第十九章:正则表达式
    《Linux命令行与shell脚本编程大全》 第二十章:sed进阶
    《Linux命令行与shell脚本编程大全》 第二十一章:gawk进阶
    《Linux命令行与shell脚本编程大全》 第二十二章:使用其他shell

    第四部分:高级shell脚本编程主题
    《Linux命令行与shell脚本编程大全》 第二十三章:使用数据库
    《Linux命令行与shell脚本编程大全》 第二十四章:使用Web
    《Linux命令行与shell脚本编程大全》 第二十五章:使用E-mail
    《Linux命令行与shell脚本编程大全》 第二十六章:编写脚本实用工具
    《Linux命令行与shell脚本编程大全》 第二十七章:shell脚本编程进阶


    第六章:理解Linux文件权限


    root账户的UID通常是0

    Linux系统会为各种各样的功能创建不同系统账户,这样即使攻占了某个服务,系统也不会沦陷

    Linux为系统预留了500以下的UID值,普通用户创建账户时,大多数Linux会将500起始的第一个可用UID分配给这个账户(未必适用所有Linux发行版)

    /etc/passwd字段包含如下信息

    1)登录用户名

    2)用户密码

    3)用户账户的UID

    4)用户账户的GID

    5)用户账户的文本描述(称为备注字段)

    6)用户HOME目录的位置

    7)用户的默认shell


    /etc/shadow每条记录有9个字段,包括

    1)与/etc/passwd文件中登录名对应的登录名

    2)加密后的密码

    3)自1970年1月1日(上次修改密码的日期)到当天的天数

    4)多少天后才能更改密码

    5)多少天后必须更改密码

    6)密码过期前提前多少天提醒用户更改密码

    7)密码过期后多少天禁用用户账户

    8)用户账户被禁用的日期,用自1970年1月1日到当天的天数表示

    9)预留字段,给将来使用



    添加新用户

    useradd

    语法:

    参数 描述
    -c cmoment 给新用户添加备注
    -d home_dir 为主目录指定一个名字(如果不想用登录名作为主目录)
    -D 创建新用户时的默认值
    -e expire_date 用YYYY-MM-DD格式指定一个账户过期的日期
    -f inactive 指定这个账户密码过期后多少天这个账户被禁用;0表示密码一过期就立即禁用,-1表示禁止这个功能
    -g initial_group 指定用户登录组的GID或组名
    -G group 指定用户除登录之外所属的一个或多个附加组
    -k 必须和-m一起使用,将/etc/skel目录内容复制到用户的HOME目录
    -m 创建用户的HOME目录
    -M 不创建用户的HOME目录(当默认设置里指定创建时,才用到)
    -n 创建一个同用户登录名同名的新组
    -r 创建系统账户
    -p passwd 为用户账户指定默认密码
    -s shell 指定默认的登录shell
    -u uid 为账户指定一个唯一的UID

    $ useradd -D
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/sh
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=no

    其中的SKEL说明

    userad允许用户创建一个默认的HOME目录配置,以SKEL指定的目录下文件作为模板,自动在每个新用户HOME中放置

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    useradd -D加如下参数可以修改默认的系统新用户值

    参数 描述
    -b default_home 更改默认的创建用户HOME目录的位置
    -e expiration_date 更改默认的新账户过期的日期
    -f inactive 更改默认的新用户从密码过期到账户被禁用的天数
    -g group 更改默认的组名称或GID
    -s shell 更改默认的登录shell

    useradd -D -s /bin/tcsh


    删除用户

    userdel

    默认只会删除/etc/passwd文件中的用户信息,而不会删除用户的任何文件

    -r:删除用户的HOME目录及mail目录


    修改用户

    用户账户修改工具

    命令 描述
    usermod 修改用户账户的字段,并可以指定主要组以及附加组的所属关系
    passwd 修改已有用户的密码
    chpasswd 从文件中读取登录名密码对,并更新密码
    chage 修改密码的过期日期
    chfn 修改用户账户的备注信息
    chsh 修改用户账户的默认登录shell


    usermod

    -c:修改备注字段

    -e:修改过期日期

    -g:修改默认的登录组

    -l:修改用户账户的登录名

    -L:锁定账户,用户无法登录

    -p:用来修改账户密码

    -U:解除锁定


    passwd、chpasswd

    passwd用来修改密码,-e用来强制用户下次登录的时候再次修改密码

    chpasswd可以批量导入用户密码,从标准输入读取数据


    chsh、chfn、chage

    chsh用来修改默认的用户登录shell

    使用时必须是全路径,不能使用shell名


    chfn用来修改/etc/passwd备注字段

    chfn会将Unix的finger命令用到的信息存入备注字段

    chfn不加参数时,会询问你要存进备注字段的值

    (出于安全性考虑,很多Linux管理员禁用finger)


    chage用来帮助管理用户账户的有效期

    参数 描述
    -d 设置上次修改密码到现在的天数
    -E 设置密码过期的日期(可用来创建临时账户,但是过期之后账户信息还在,类似锁定)
    -I 设置密码过期到锁定账户的天数
    -m 设置修改密码之间最少要多少天
    -W 设置密码过期前多久开始出现提醒信息

    chage命令设置日期的格式

    1.YYYY-MM-DD

    2.从1970年1月1日起到该日期天数的数值



    使用Linux组

    有些Linux发行版会创建一个组,把所有用户都当成这个组的成员(这种情况要小心)

    有些发行版会为每个用户创建一个单独的组,这样更安全(例如Ubuntu)

    每个组都有一个唯一的GID和组名


    /etc/group格式

    组名、组密码、GID、属于改组的用户列表

    千万不能直接修改/etc/group来添加用户到一个组,应使用usermod

    列表中有些组并没有列出用户,这并不意味着这些组没有成员。

    当一个用户在/etc/passwd中指定某个组作为默认组时,用户账户不会作为该组成员出现在/etc/group中


    创建新组

    groupadd

    group shared

    默认没有属于该组成员,groupadd命令没有提供将用户添加到组的选项

    usermod

    usermod -G shared rich

    添加rich用户到shared组中

    -G :只是添加组到用户中,不影响默认组

    -g :添加组到用户中,并且替换默认组

    (如果更改了以登录的用户所属的组,用户重新登录后才会生效)


    修改组

    groupmod

    可以修改已有组的GID或组名

    -n:修改组名(可以随意更改,而不会影响安全性)

    -g:修改已有组的GID



    理解文件权限 (参见 #1

    默认文件权限

    umask(参见 #1


    改变安全性设置

    改变权限

    chmod(参见 #1

    符号模式权限

    [ugoa][+-=][rwxXstugo...]

    第一个选项定义了权限作用的对象

    u:代表用户

    g:代表组

    o:代表其他

    a:代码上述所有

    最后的选项代表作用到设置上的权限

    X:如果对象是目录或者它已有执行权限,赋予执行权限

    s:运行时重新设置UID或者GID

    t:保留文件或目录

    u:将权限设置为跟属主一样

    g:将权限设置为跟属组一样

    o:将权限设置为跟其他用户一样


    改变所属关系

    chown

    用来改变文件的默认属组

    可用登录名或UID来指定属组

    语法:

    chown options owner [ .group ] file

    可同时改变文件的属主和属组



    共享文件

    Linux为每个文件和目录存储了3个额外的信息位

    设置用户ID(SUID) :当文件被用户使用时,程序会以文件属主的权限运行

    设置组ID(SGID) :对文件来说,程序会以文件属组的权限运行;对目录来说,目录中创建的新文件会以目录的默认属组作为默认属组

    粘着位 :进程结束后文件还会在内存中

    SGID可通过chmod设置,加到标准3位八进制值之前,或者在符号模式下用符号s

    八进制值 描述
    0 所有位都清零
    1 粘着位置位
    2 SGID位置位
    3 SGID位和粘着位都置位
    4 SUID位置位
    5 SUID位和粘着位都置位
    6 SUID位和SGID位都置位
    7 所有位都置位

    共享目录步骤:

    创建目录

    改变目录的默认属组

    设置SGID

    所有组成员都需要把他们的umask值设置成文件对属组成员可写



    1. 《Unix & Linux 大学教程》 - 第二十五章 文件操作


    转贴请保留以下链接

    本人blog地址

    http://su1216.iteye.com/

    http://blog.csdn.net/su1216/