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

    /etc/passwd文件

    [root@tzPC ~]# head -2 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin

     root用户的UID为0

    所有运行在后台的服务都有一个系统用户,系统用户是系统上运行各种服务进程访问资源用的特殊账户。

    Linux系统预留了500以下的UID值

    各字段意思如下

    1. 登陆用户名
    2. 用户密码
    3. 用户账户UID
    4. 用户账户组ID
    5. 用户账户描述信息
    6. 用户HOME目录位置
    7. 用户的默认shell

    /etc/shadow文件

    [root@tzPC ~]# cat /etc/shadow|grep tz
    tz:$6$JRBWbFqS$oy:18461:0:99999:7:::

    只有root账户或者特定程序(如登陆程序)才能访问

    [root@tzPC ~]# ll /etc/shadow
    ----------. 1 root root 2580 Jul 18 21:50 /etc/shadow

    9个字段意思如下

    1. 登陆用户名
    2. 加密后的密码
    3. 从上次修改密码后过去的天数(自1970年1月1日开始算)
    4. 多少天后更改密码
    5. 多少天后必须更改密码
    6. 密码过期前提前多少天提醒用户更改密码
    7. 密码过期后多少天禁用用户账户
    8. 用户账户被禁用的日期(自1970年1月1日到当天)
    9. 预留字段给将来使用

    添加用户

    useradd命令

    命令默认在/usr/sbin/useradd,如果不能用需要查看是否安装以及加入到PATH变量中

    不加参数则使用默认值创建用户

    默认值配置文件在/etc/default/useradd中

    可使用-D参数查看

    [root@tzPC ~]# useradd -D
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes

    各字段含义如下

    1. 新用户会被添加到GID为100的公共组
    2. HOME目录将会位于/home/loginname
    3. 新用户密码过期后不会被禁用
    4. 新用户账号未设置过期日期
    5. 新用户的默认shell为bash shell
    6. 系统会将/etc/skel目录下的内容复制到用户的HOME目录下
    7. 系统为新用户在mail目录下创建一个用于接收邮件的文件
    [root@tzPC ~]# ls /var/spool/mail/
     tz  tz1  tz10  tz2  tz3  tz4  tz5  tz6  tz7  tz8  tz9

    注意:useradd默认会默认创建用户家目录,但userdel不会默认删除用户家目录,需要加-r参数

    -D参数可修改系统默认设置

    参数 描述
    -b 修改默认Home目录位置
    -e

    更改新用户过期时间

    -f 更改新用户密码过期到被禁用的天数
    -g 更改默认组名或GID
    -s 更改默认的登陆shell

    如修改默认shell为tsch

    [root@tzPC ~]# useradd -D -s /bin/tsch

    删除用户

    userdel

    -r 同时删除用户家目录,默认不加此参数不删除用户家目录,使用前需要确认该用户家目录是否含有重要文件!

    修改用户

    usermod

    能修改/etc/passwd文件大部分字段

    常用参数

    参数 描述
    -c 修改备注字段
    -e 修改过期日期
    -g 修改默认登陆组
    -l 修改用户登陆名
    -L 锁定用户使其无法登陆(常用)
    -p 修改用户密码
    -U 解锁用户(常用)

    更改密码

    passwd

    passwd -e能下次登陆时强制修改密码

    chpasswd

    用于给大量用户修改密码使用

    自动读取一个文件中的登陆名和密码对(如username:passwd)

    [root@tzPC ~]# echo tz:321|chpasswd
    [root@tzPC ~]# chpasswd < users.txt 

    更改用户登陆shell

    chsh

    [root@tzPC ~]# chsh -s /bin/sh tz
    Changing shell for tz.
    Shell changed.

    更改用户备注

    chfn

    更改/etc/passwd文件的备注字段

    [root@tzPC ~]# chfn tz
    Changing finger information for tz.
    Name []: tz
    Office []: zjtd
    Office Phone []: 8888
    Home Phone []: 9999
    
    Finger information changed.

    更改后如下

    [root@tzPC ~]# cat /etc/passwd | grep tz
    tz:x:1000:1000:tz,zjtd,8888,9999:/home/tz:/bin/sh

    查看用户信息

    finger

    [root@tzPC ~]# finger tz
    Login: tz                         Name: tz
    Directory: /home/tz                     Shell: /bin/sh
    Office: zjtd, x8888            Home Phone: x9999
    On since Thu Aug  6 12:02 (CST) on pts/4 from 192.168.149.1
       3 hours 28 minutes idle
    No mail.
    No Plan.

    管理账户有效期

    chage

    参数 描述
    -d 设置上次修改密码到现在的天数
    -E 设置密码过期的日期
    -I 设置密码过期到锁定账户的天数(常用)
    -m 设置修改密码之间最少要多少天
    -W 设置密码过期前多久出现提示信息

    日期格式可以为

    • YYYY-MM-DD
    • 从1970年1月1日到该日期天数的数值

    Linux组

    组权限允许多个用户对系统中的对象(文件或目录等)共享一组共用的权限

    /etc/group文件

    系统账户用的组会分配低于500的GID值,用户组从500开始分配

    [root@tzPC ~]# head -2 /etc/group
    root:x:0:
    bin:x:1:

    4个字段解释如下

    1. 组名
    2. 组密码
    3. GID
    4. 属于该组的用户列表

    组密码允许非组内成员通过它成为该组成员

    创建组

    groupadd

    [root@tzPC ~]# groupadd shared
    [root@tzPC ~]# tail -1 /etc/group
    shared:x:1017:

    添加用户到组

    需使用usermod -G参数,将该组成为此用户的属组

    [root@tzPC ~]# usermod -G shared tz
    [root@tzPC ~]# usermod -G shared tz1
    [root@tzPC ~]# tail -1 /etc/group
    shared:x:1017:tz,tz1

     usermod -g参数将修改默认组

    [root@tzPC ~]# usermod -g shared tz
    [root@tzPC ~]# cat /etc/passwd | grep tz
    tz:x:1000:1017:tz,zjtd,8888,9999:/home/tz:/bin/sh
    [root@tzPC ~]# cat /etc/group | grep 1017
    shared:x:1017:tz,tz1

    修改组

    groupmod -g修改已有组的GID

    groupmod -n修改已有组的组名

    将shared组名更改为sharing

    [root@tzPC ~]# groupmod -n sharing shared
    [root@tzPC ~]# tail -1 /etc/group
    sharing:x:1017:tz,tz1

    文件权限符

    [root@tzPC ~]# ls -l 
    total 40
    -rw-r--r--. 1 root root 10240 Aug  5 18:04 My.tar
    -rw-r--r--. 1 root root 10240 Aug  5 18:04 Rich.tar

    -代表文件

    d代表目录

    l代表链接

    c代表字符型设备

    b代表块设备

    n代表网络设备

    umask显示默认权限值

    [root@tzPC ~]# umask
    0022

     第一位代表粘着位(sticky bit)

    一个文件默认的读写权限是从全权限值减去umask值

    文件全权限值为666,减去umask值022,结果为644,所以创建一个文件的权限为644

    [root@tzPC ~]# touch test
    [root@tzPC ~]# ll test
    -rw-r--r--. 1 root root 0 Aug  6 16:09 test

     目录的全权限值为777

     修改umask值

    [root@tzPC ~]# umask 026

    改变权限

    chmod

    [root@tzPC ~]# chmod 760 test

    另外写法

    [root@tzPC ~]# chmod o+r test
    [root@tzPC ~]# chmod u-w test
    [root@tzPC ~]# chmod g+rw test
    [root@tzPC ~]# chmod a+rwx test

    -R 递归目录及其文件

    [root@tzPC ~]# chmod -R a=rwx test1
    [root@tzPC ~]# ll | grep test1
    drwxrwxrwx. 2 root root    18 Aug  6 16:15 test1
    [root@tzPC ~]# ll test1/
    total 0
    -rwxrwxrwx. 1 root root 0 Aug  6 16:15 test

    更改属主跟属组

    Linux共享文件的方式就是创建组

    chown

    [root@tzPC ~]# chown tz test
    [root@tzPC ~]# ll | grep test
    -rwxrwxrwx. 1 tz   root     0 Aug  6 16:09 test

    同时更改属主跟属组

    [root@tzPC ~]# chown tz.tz test
    [root@tzPC ~]# ll | grep test
    -rwxrwxrwx. 1 tz   tz       0 Aug  6 16:09 test

    只更改属组

    [root@tzPC ~]# chown .tz test

    将属组更改为属主的默认属组

    [root@tzPC ~]# chown tz. test
    [root@tzPC ~]# ll | grep test
    -rwxrwxrwx. 1 tz   sharing     0 Aug  6 16:09 test

    可以看到属组不写,会更改为属主的默认属组

    -R可递归更改目录及文件所属关系

    -h可以改变该文件所有符号链接文件的所属关系

    chgrp

    可以更改文件或目录的属组,前提是用户必须是这个文件的属主,还得是新组的成员,root除外。

    [root@tzPC ~]# chgrp root test
    [root@tzPC ~]# ll | grep test
    -rwxrwxrwx. 1 tz   root     0 Aug  6 16:09 test

    SUID跟SGID

    SUID

    当文件被用户使用时,程序会以文件属主的权限运行

    [root@tzPC tz]#chmod u+s test 设置SUID位
    [root@tzPC ~]#chmod 4744 /home/tz/test
    [root@tzPC tz]# ll
    -rwsr--r--. 1 root root 0 Aug  6 17:10 test
    
    [root@tzPC tz]#chmod u-s test 去掉SUID设置

    SGID

    对文件来说,程序会以文件属组的权限运行,对目录来说,目录中创建的新文件会以目录的默认属组作为属组。

    [root@tzPC tz]# chmod g+s testdir
    [root@tzPC tz]# ll | grep testdir
    drwxr-sr-x. 2 root tz   16 Aug  6 17:44 testdir
    [root@tzPC testdir]# ll
    -rw-r--r--. 1 root tz 0 Aug  6 17:44 xx

    锁定文件或文件夹

    chattr

    +i :给文件或目录加锁,使文件或者文件夹不可删除、移动、修改或者追加内容;                 

    +a :使文件或者文件夹不可删除、移动、修改的操作,但可以追加内容的操作;
    +i,+a 可以复制,但复制后的新文件权限变了默认权限;

    [root@tzPC tz]# chattr +i xx
    [root@tzPC tz]# lsattr
    ----i----------- ./xx
    [root@tzPC tz]# chattr -i xx

    查看隐藏权限

    lsattr
    -a :查看目录里面包含的子目录和(包括隐藏)文件的隐藏权限;
    -R:查看目录里面包含的子目录和文件的隐藏权限(并可快捷查看子目录下的隐藏权限);

    -d : 查看当前目录的隐藏权限

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    wait函数和waitpid的使用和总结
    linux中sleep函数的使用和总结
    alarm()函数的使用总结
    linux定时器的实现方法
    Socket的长连接和短连接
    记录各种材质的数据
    max导出模型插件
    鸡汤 -心灵 记录
    UGUI 加载图片
    u3d udp服务器
  • 原文地址:https://www.cnblogs.com/tz90/p/13445464.html
Copyright © 2011-2022 走看看