zoukankan      html  css  js  c++  java
  • Linux 用户和文件权限管理

    Linux —— 用户权限管理

    权限:

    为什么需要权限管理?
        1.计算机资源有限,我们需要合理的分配计算机资源。
        2.Linux是一个多用户系统,对于每一个用户来说,个人隐私的保护是十分重要的

    由于Linux的一切皆文件的基本思想,对于权限的管理更多的则体现在管理文件权限上。为了
    方便的指派权限,在Linux中定义了文件属主,文件属组,其他人这三类人的权限。
    对于计算机来说,这三类都是一个标识符。

    通过 ls 命令我们可以看到文件的具体权限信息。
    drwxrwxr-x 2 linlin linlin 4096 Jun  5 02:29 .
    drwxrwxr-x 5 linlin linlin 4096 May 29 02:38 ..
    -rw-rw-r-- 1 linlin linlin    0 Jun  5 02:29 file

    文件权限信息一共有9位,每3位一组,分别表示属主,属组,其他人的权限信息

    权限:r  w  x

    对于文件:
    r:可读,可以使用cat等命令查看文件内容
    w:可写,可以进行编辑修改,或删除操作
    x:可执行,可以在命令提示符下当做命令提交给内核运行

    对于目录:
    r:可以对此目录执行ls命令,列出内部所有文件
    w:可以在此目录下创建文件
    x:可以使用cd命令切换进此目录,也可以使用ls -l命令查看内部文件的详细信息

    对于目录来说,一般会有执行权限,而对于文件来说,一般默认没有执行权限。

    表示没有某个权限时,使用 -

    在表示文件权限时,也可以使用八进制数字0,1,2,4...表示
    0 000 ---:无权限
    1 001 --x:可执行
    2 010 -w-:可写
    4 100 r--:可读
    7 111 rwx:可读可写可执行

    储存用户和组的文件
    用户:UID /etc/passwd
    组  :GID /etc/group

    Linux中,在储存用户和组信息的文件,不会直接将用户或组密码储存在其中,而是
    在其他文件中储存,但并不是直接以密码保存,而是保存加密后的文件,影子口令
    用户:/etc/shadow
    组  :/etc/gshadow

    储存用户信息的文件:/etc/passwd
    linlin@ubuntu:~/linlin$ tail -3 /etc/passwd
    linlin:x:1000:1000:linlin's ubunto,,,:/home/linlin:/bin/bash
    mysql:x:121:129:MySQL Server,,,:/nonexistent:/bin/false
    wangml:x:1002:1002:wangml:/home/wangml:/bin/bash

    通过上面示例可以看到,在/etc/passwd文件中,每个用户信息作为一行,而每一行分
    为7段,用 :分隔,分别表示:
    用户名 :密码占位符 :UID :用户私有组(基本组)GID :注释 :用户家目录 :默认shell

    储存组信息文件:/etc/group
    linlin@ubuntu:~/linlin$ tail -3 /etc/group
    mysql:x:129:
    xiaolinlin:x:1001:wangml
    wangml:x:1002:

    表示为 组名 :密码占位符 :GID :

    UID:根据用户类别分类
        管理员ID号永远为0
        普通用户ID号1~65535,16位表示用户
            系统用户ID号1~499
            一般用户ID号500开始
    在/etc/passwd文件中,添加一般用户时,用户ID一般为该文件中最大的一般用户ID+1

    用户组:
        基本组,私有组:本组只有该用户自己,用户创建文件后,该文件的默认组为该用户的基本组
        附加组,额外组:基本组以外的其他组

    在创建一个用户时,如果未指定用户私有组和家目录时,系统默认会为该用户创建一个以该用户名为
    组名的组,作为该用户的私有组组GID一般与用户UID相同。且会在/home目录下为该用户创建一个与
    该用户同名的目录作为该用户的家目录。

    对于系统用户来说,没有默认shell,即系统用户不允许登陆

    储存密码信息文件:/etc/shadow
    mysql:!:17301:0:99999:7:::
    wangml:!!:17303:0:99999:7:::
    用户名 :加密后的密码 :最后一次密码修改时间 :密码最短使用时间 :用户过期时间 :修改密码警告时间 :;:
    可以使用 man shadow 命令查看具体信息

    只有管理员root可以查看/etc/shadow文件
    root@ubuntu:/home/linlin/linlin# ls -l /etc/shadow
    -rw-r----- 1 root shadow 1336 Jun  4 02:52 /etc/shadow

    通过以上内容可以知道,没添加一个用户,就是在 /etc/passwd /etc/shadow /etc/group 这三个文件中各加
    入一行信息,所以,我们可以直接通过修改这是三个文件来添加用户,而不需要使用命令

    用户管理:

    添加用户:useradd 用户名,有事也可以使用 adduser,adduser是一个软链接
    -u:手动指定UID
    -g:指定基本组GID
    -G:指定额外组,附加组
    -c:指定注释信息
    -d:指定某个目录为家目录
    -s:指定用户默认shell
        在/etc/shells下指定了当前系统下的可用的安全shell
    -m -k:给用户强制创建家目录,并将/etc/skel下的文件复制到家目录下
    -M:不给用户创建家目录
    -r:添加系统用户

    删除用户:userdel 选项 用户名
    默认在删除用户时不会删除用户家目录
    -r:删除用户的同事删除用户家目录

    查看用户账号的基本信息:id
    linlin@ubuntu:~/linlin$ id
    uid=1000(linlin) gid=1000(linlin) groups=1000(linlin),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)

    检索用户信息:finger 用户名
    linlin@ubuntu:~/linlin$ finger linlin
    Login: linlin            Name: linlin's ubunto
    Directory: /home/linlin              Shell: /bin/bash
    On since Thu May 18 01:32 (PDT) on tty7 from :0
       18 days 20 hours idle
    No mail.
    No Plan.

    修改用户账号信息:usermod 选项 内容 用户名
    -u:修改UID
    -g:修改基本组
    -G:修改附加组,如果此前用户已有附加组,则使用-G后,该附加组会被覆盖,如果需要添加
    附加组,则使用 -G -a
    -c:修改注释
    -d:指定新家目录,一般与-m一起使用,表示在创建新家目录的同时,将原来家目录下的内容
    复制到新的家目录中
    -e:指定用户过期时间
    -L:锁定账号
    -U:解锁账号

    chsh:修改用户默认shell

    chfn:修改用户注释信息

    修改用户密码:passwd 用户名
    --stdin:从标准输入读取
    -l:锁定用户账号
    -u:解锁
    -d:删除用户密码
        Linux中,禁止空密码用户登录

    pwck:检查用户账号完整性


    组管理:

    创建组:groupadd
    -g:指定GID
    -r:添加系统组

    删除组:groupdel

    修改组属性:groupmod
    -g:修改 GID
    -n:修改组名

    gpasswd:为组设定密码

    newgrp:登录到一个新组,exit退出

    改变用密码过期时间:chage
    -d:最近一次的修改时间
    -E:过期时间
    -r:非活动时间
    -m:最短使用期限
    -M:最长使用期限
    -W:警告时间


    改变文件属主:chown 用户名 files
    只有管理员才可以改变文件属主
    -R:修改目录文件属性时将目录内的文件一起修改
    --reference=文件1 文件2... :将文件2...的属主、属组修改为与文件1相同

    修改文件属组:chgrp
    只有管理员才可以使用,使用方法和chown一样、

    使用chown 用户名:组名 文件 或 chown 用户名.组名 文件 可以同时修改文件的属主属组
    chown 组名 文件:只改属组

    修改文件权限:chmod MODE 文件
    -R:递归修改
    --reference=文件1 文件2... :将文件2...将文件2...的属性修改为与文件1相同
    root@ubuntu:/home/linlin/linlin/test# ls -l file
    -rw-rw-r-- 1 linlin linlin 0 Jun  5 02:29 file
    root@ubuntu:/home/linlin/linlin/test# chmod 600 file
    root@ubuntu:/home/linlin/linlin/test# ls -l file
    -rw------- 1 linlin linlin 0 Jun  5 02:29 file

    修改某类用户权限时:chmod 用户类别(u g o a) +(-) MODE,a表示所有用户,可以省略
    root@ubuntu:/home/linlin/linlin/test# ls -l file
    -rw------- 1 linlin linlin 0 Jun  5 02:29 file
    root@ubuntu:/home/linlin/linlin/test# chmod g+r file
    root@ubuntu:/home/linlin/linlin/test# ls -l file
    -rw-r----- 1 linlin linlin 0 Jun  5 02:29 file

    我们都知道,在创建一个文件后,系统会默认给文件赋予权限,那么,默认权限是由什么决定的?
    umask:遮罩码,不加参数时表示查看系统默认遮罩码,加八进制位表示修改遮罩码
    root@ubuntu:/home/linlin/linlin/test# umask
    0044
    root@ubuntu:/home/linlin/linlin/test# umask 0022
    root@ubuntu:/home/linlin/linlin/test# umask
    0022
    创建文件后默认权限 666-umask
    创建目录后默认权限 777-umask

  • 相关阅读:
    面试题:区分List中remove(int index)和remove(Object obj)
    Collection的子接口之一:List 接口
    面试题:ArrayList、LinkedList、Vector三者的异同?
    jdk 5.0 新增的foreach循环(用于遍历集合、数组)
    Iterator迭代器接口(遍历Collection的两种方式之一)
    哈希值
    Collection接口方法
    集合框架的概述
    注解(Annotation)
    System类、Math类、BigInteger与BigDecimal的使用
  • 原文地址:https://www.cnblogs.com/lnlin/p/6951179.html
Copyright © 2011-2022 走看看