zoukankan      html  css  js  c++  java
  • linux文件权限

    Linux 的安全性

    1./etc/passwd 文件

    /etc/passwd文件
    的字段包含了如下信息:
     登录用户名
     用户密码
     用户账户的UID(数字形式)
     用户账户的组ID(GID)(数字形式)
     用户账户的文本描述(称为备注字段)
     用户HOME目录的位置
     用户的默认shell
    2./etc/shadow 文件

    etc/shadow文件为系统上的每个用户账户都保存了一条记录。记录就像下面这样:
    rich:$1$.FfcK0ns$f1UgiyHQ25wrB/hykCn020:11627:0:99999:7:::
    在/etc/shadow文件的每条记录中都有9个字段:
     与/etc/passwd文件中的登录名字段对应的登录名
     加密后的密码
     自上次修改密码后过去的天数密码(自1970年1月1日开始计算)
     多少天后才能更改密码
     多少天后必须更改密码
     密码过期前提前多少天提醒用户更改密码

     密码过期后多少天禁用用户账户
     用户账户被禁用的日期(用自1970年1月1日到当天的天数表示)
     预留字段给将来使用

    3.添加新用户

    # /usr/sbin/useradd -D
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes
    #

    这个例子列出的默认值如下:
     新用户会被添加到GID为 100 的公共组;
     新用户的HOME目录将会位于/home/loginname;
     新用户账户密码在过期后不会被禁用;
     新用户账户未被设置过期日期;
     新用户账户将bash shell作为默认shell;
     系统会将/etc/skel目录下的内容复制到用户的HOME目录下;
     系统为该用户账户在mail目录下创建一个用于接收邮件的文件

    useradd 命令行参数

    参 数 描 述
    -c comment
    给新用户添加备注
    -d home_dir
    为主目录指定一个名字(如果不想用登录名作为主目录名的话)
    -e expire_date
    用YYYY-MM-DD格式指定一个账户过期的日期
    -f inactive_days
    指定这个账户密码过期后多少天这个账户被禁用; 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 更改默认值的参数

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

    4.删除用户

    userdel

    5.修改用户

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

    5.1usermod

     -c 修改备注字段, -e 修改过期日期, -g 修改默认的登录组。除此之外,还有另外
    一些可能派上用场的选项。
     -l 修改用户账户的登录名。
     -L 锁定账户,使用户无法登录。
     -p 修改账户的密码。
     -U 解除锁定,使用户能够登录。
    -L 选项尤其实用。它可以将账户锁定,使用户无法登录,同时无需删除账户和用户的数据。
    要让账户恢复正常,只要用 -U 选项就行了。

    5.2. passwd 和 chpasswd

    改变用户密码的一个简便方法就是用 passwd 命令。
    # passwd test
    Changing password for user test.
    New UNIX password:
    Retype new UNIX password:
    passwd: all authentication tokens updated successfully.
    #

    -e 选项能强制用户下次登录时修改密码。你可以先给用户设置一个简单的密码,之后再强制在下次登录时改成他们能记住的更复杂的密码。

    如果需要为系统中的大量用户修改密码, chpasswd 命令可以事半功倍。 chpasswd 命令能从标准输入自动读取登录名和密码对(由冒号分割)列表,给密码加密,然后为用户账户设置。你也可以用重定向命令来将含有 userid:passwd 对的文件重定向给该命令。
    # chpasswd < users.txt

    5.3. chsh 、 chfn 和 chage

    chsh 、 chfn 和 chage 工具专门用来修改特定的账户信息。 chsh 命令用来快速修改默认的用户登录shell。使用时必须用shell的全路径名作为参数,不能只用shell名。
    # chsh -s /bin/csh test
    Changing shell for test.
    Shell changed.

    chfn 命令提供了在/etc/passwd文件的备注字段中存储信息的标准方法。

    chage 命令用来帮助管理用户账户的有效期。你需要对每个值设置多个参数

    参 数               描 述

    -d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
      -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
      -h, --help                    显示此帮助信息并推出
      -I, --inactive INACITVE       过期 INACTIVE 天数后,设定密码为失效状态
      -l, --list                    显示帐户年龄信息
      -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”
      -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大天数”
      -R, --root CHROOT_DIR         chroot 到的目录
      -W, --warndays 警告天数       将过期警告天数设为“警告天数”

    使用 Linux 组

    创建新组   groupadd

    在创建新组时,默认没有用户被分配到该组。 groupadd 命令没有提供将用户添加到组中的
    选项,但可以用 usermod 命令来弥补这一点。
    # /usr/sbin/usermod -G shared rich

    修改组

    在/etc/group文件中可以看到,需要修改的组信息并不多。 groupmod 命令可以修改已有组的
    GID(加 -g 选项)或组名(加 -n 选项)。
    # /usr/sbin/groupmod -n sharing shared
    # tail /etc/group
    haldaemon:x:68:

    理解文件权限

    1 使用文件权限符

    $ ls –l
    total 68
    -rw-rw-r-- 1 rich rich 50 2010-09-13 07:49 file1.gz

    drwxrwxr-x 2 rich rich 4096 2010-09-03 15:12 test1

    输出结果的第一个字段就是描述文件和目录权限的编码。这个字段的第一个字符代表了对象的类型:
     - 代表文件
     d 代表目录
     l 代表链接
     c 代表字符型设备
     b 代表块设备
     n 代表网络设备
    之后有3组三字符的编码。每一组定义了3种访问权限:
     r 代表对象是可读的
     w 代表对象是可写的

     x 代表对象是可执行的
    若没有某种权限,在该权限位会出现单破折线。这3组权限分别对应对象的3个安全级别:
     对象的属主
     对象的属组
     系统其他用户

    2 默认文件权限

    要把 umask 值从对象的全权限值中减掉。对文件来说,全权限的值是 666 (所有用户都有读和写的权限);而对目录来说,则是 777 (所有用户都有读、写、执行权限)。

    由于目录的默认权限是 777 , umask 作用后生成的目录权限不同于生成的文件权限。 umask值 026 会从 777 中减去,留下来 751 作为目录权限设置。

    改变安全性设置

    1 改变权限

    chmod 命令用来改变文件和目录的安全性设置。该命令的格式如下:
    chmod options mode file

    与通常用到的3组三字符权限字符不同, chmod 命令采用了另一种方法。下面是在符号模式下指定权限的格式。
    [ugoa…][[+-=][rwxXstugo…]
    第一组字符定义了权限作用的对象:
     u 代表用户
     g 代表组
     o 代表其他
     a 代表上述所有

    后面跟着的符号表示你是想在现有权限基础上增加权限(+),还是在现有权限基础上移除权限(-),或是将权限设置成后面的值(=)

    最后,第三个符号代表作用到设置上的权限。你会发现,这个值要比通常的 rwx 多。额外的设置有以下几项。

      X :如果对象是目录或者它已有执行权限,赋予执行权限。
     s :运行时重新设置UID或GID。
     t :保留文件或目录。
     u :将权限设置为跟属主一样。
     g :将权限设置为跟属组一样。
     o :将权限设置为跟其他用户一样。

    -R 选项可以让权限的改变递归地作用到文件和子目录。

    2 改变所属关系

    chown 命令的格式如下。
    chown options owner[.group] file

    chown 命令采用一些不同的选项参数。 -R 选项配合通配符可以递归地改变子目录和文件的所属关系。 -h 选项可以改变该文件的所有符号链接文件的所属关系

    共享文件

    要创建一个共享目录,使目录里的新文件都能沿用目录的属组,只需将该目录的SGID
    位置位。
    $ mkdir testdir
    $ ls -l
    drwxrwxr-x 2 rich rich 4096 Sep 20 23:12 testdir/
    $ chgrp shared testdir
    $ chmod g+s testdir
    $ ls -l
    drwxrwsr-x 2 rich shared 4096 Sep 20 23:12 testdir/
    $ umask 002
    $ cd testdir
    $ touch testfile
    $ ls -l
    total 0
    -rw-rw-r-- 1 rich shared 0 Sep 20 23:13 testfile
    $
    首先,用 mkdir 命令来创建希望共享的目录。然后通过 chgrp 命令将目录的默认属组改为包
    含所有需要共享文件的用户的组(你必须是该组的成员)。最后,将目录的SGID位置位,以保证
    目录中新建文件都用shared作为默认属组。

  • 相关阅读:
    uploadify
    mark down pad2
    yii1.1.3主从(多从)、读写分离配置
    yii多数据库
    Uploadify上传问题
    出现upstream sent too big header while reading response header from upstream错误
    Nginx 启动脚本/重启脚本
    VB6_小林的气象类模块
    进程与线程
    JDK动态代理与CGLib
  • 原文地址:https://www.cnblogs.com/zhangguilin/p/8981312.html
Copyright © 2011-2022 走看看