首页 > 系统服务 > 详细

Linux中文件权限、用户和用户组管理

时间:2018-04-14 23:02:25      阅读:316      评论:0      收藏:0      [点我收藏+]
1、文件权限

技术分享图片


2、文件和目录rwx权限说明

  • 文件rwx权限:

r  :  可读,具有读取文件内容的权限(),如果没有r,vi/vim编辑器提示无法编辑(可强制编辑),echo可以追加或重定向。

w :  可写,具有修改文件内容的权限

x  :  可执行,具有执行文件的权限。

       需满足:文件本身具有可执行权限;普通用户还需具有r权限;root用户只要x权限就可执行。linux中可执行文件:*.sh     *.py     *.perl等等。

  • 目录rwx权限:

r  :  可读,查看目录下面文件及子目录的权限,即 ls dir

如果没有x,不能进入到目录里,即无法cd dir ;如果没有x,ls可以看到所有文件名,但会提示无权访问目录下的文件。

w :  可写,具有修改、增加、删除目录内文件名的权限(需要x权限配合)

x  :  可执行,具有进入目录的权限。例如cd dir;但是没有r无法列表文件或目录,没有w无法修改、增加、删除


3、删除文件(或者修改文件名)受父目录权限控制,和文件本身权限无关,删除文件(或者修改文件名)是在操作文件的上级目录的block中与文件名和inode相关联的数据,因此和上级目录权限有关。


4、读取/data/test的过程


5、常用命令


改变文件或目录用户权限:    chmod   [数字权限或字符权限]     [文件名或目录名]   。

加  -R (递归) 表示把目录中的文件或子目录权限改变。

数字权限:r :4   w:2    x:1    -:0

字符权限 :  u:所属主   g:所属组      o:其他人    a:相当于ugo       +:添加权限    -:取消权限     =:取消其他权限只添加给定权限


改变文件或目录所属主:     chown   [选项]  [属主]  [文件名或目录名]

选项:    -R     表示把指定目录中的文件或子目录的所属主改变。


改变文件或目录所属组:chown :[属组]  [文件名或目录名]   

改变文件或目录的所属主和所属组:chown 用户.用户组  [文件名或目录名]   

改变文件或目录所属组:      chgrp    [选项]   [属组]  [文件名或目录名]

选项:   -R     表示把指定目录中的文件或子目录的所属组改变。



6、默认权限分配命令:umask

每个linux系统终端都拥有一个umask,可以用来确定新创建文件或目录的默认权限。由于在系统中创建一个文件默认权限666,创建一个目录默认权限777,权限对外开放比较大,所以设置了umask权限掩码之后,默认的文件目录权限减去umask值才是实际的文件目录权限。

umask 一共4位数字,第一位用于定义特殊权限,后三位表示权限掩码。


对于 超级用户,umask默认值是0022,超级用户(用户root及用户组root)创建目录默认权限 :777-022=755,创建文件默认权限:666-022= 644,是相对安全的权限。

对于普通用户, umask默认值是0002,普通用户创建目录默认权限:777-002=775,创建文件默认权限:666-002=664.


umask设定值如果有奇数位,777 ( 666 )-umask,对应的奇数位再加1,才是创建目录或文件的默认权限

umask设定值如果全为偶数,777(666)-umask,就是创建目录或文件的的默认权限。


查看umask值  :  umask

改变umask值  :   umask   -S   [设定值]    (临时设置,重启无效)

如果需要永久生效,则修改/etc/profile或者/etc/bashrc文件,在文件末尾加上 umask     [设定值]   。/etc/profile  和 /etc/bashrc  都可以用于用户登录时自动执行某些操作,区别是/etc/profile只是在用户第一次登录时被执行,而/etc/bashrc在用户每次登录加载bash shell 时都会被执行。因此,修改/etc/profile只能对新创建的用户生效,/etc/bashrc 对所有登录用户都生效。


7、特殊权限


  • Linux文件的特殊权限是用于弥补一般权限不能实现的功能,是针对于文件设置的一种特殊的功能。

  • Linux文件的特殊权限:

SUID:让执行者临时拥有属主的权限(仅对拥有执行权限x的二进制程序有效)。s(有x时)      ,  S( 无x时 )。

SGID:让执行者临时拥有属组的权限(对拥有执行权限x的二进制程序设置)。 s(有x时),S(无x时)。

主要用在目录中,当某个目录设置了sgid,在该目录中新创建的文件具有该目录的所属组权限,使得在多个用户之间共享目录变得简单。

SBIT(Sticky Bit):只可管理自己的数据而不能删除他人文件(仅对目录有效)。        t( 有x时 )    ,T(无x时)。

  • Linux文件的特殊权限的设置:

SUID:4      SGID:2      SBIT:1

设置SUID:  chmod   4755     [文件名或目录名]   或者     chmod   u+s   [文件名或目录名]  

设置SGID:  chmod   2755     [文件名或目录名]   或者     chmod   g+s   [文件名或目录名]

设置SBIT(粘滞位):   chmod   1755     [目录名]                


8、用户和用户组管理

  • 用户管理:


useradd  :创建用户,常会涉及到更改/etc/passwd   /etc/shadow       /etc/group       /etc/gshadow 文件。

userdel :删除用户,常会涉及到更改/etc/passwd   /etc/shadow       /etc/group       /etc/gshadow 文件,企业环境中慎用userdel  -r!!!

usermod :修改用户信息,常会涉及到更改/etc/passwd   /etc/shadow       /etc/group       /etc/gshadow 文件。

passwd  :设置或修改密码,更改/etc/shadow文件。

chage:修改密码有效期,更改/etc/shadow文件。


id   :查看用户的UID,GID及所属的用户组。

w:查看登录用户并显示在做什么

who:查看登录用户

last  或 lastb:查看登录用户历史

lastlog:查看所有用户最近登录情况


su:切换用户

sudo:后接命令,表示不需要root密码就可以执行只有root才可以执行的权限。这个权限可以通过visudo命令(推荐用法)或者直接编辑/etc/sudoers(配置完后要用 visudo  -c  检查语法)来实现。

visudo:编辑sudo配置文件,配置完后执行 visudo  -c  检查。

在/etc/sudoers中:别名和具体授权配置的关系,一般应用于多个系统用户,需要分类、分层次管理,需注意以下:

(1)命令别名下的成员必须是文件或目录的绝对路径;

(2)别名名称包含大写字母、数字、下划线;

(3)一个别名下的成员之间要用半角状态下“,”分隔开,成员必须是有效存在的;

(4)别名成员要与别名一一对应;

(5)别名规则是以每行为单位,如要换行要用 \来续行;

(6)指定切换的用户要用()括起来,如无()默认root用户,(ALL)代表切换到所有用户;

(7)无需密码直接运行的命令,应加上 NOPASSWD:参数;

(8)禁止某类命令或程序运行,要在前面加!,放在允许执行的命令的后面;

(9)用户组前面要加%;


  • 用户组管理:


groupadd:创建用户组,常会涉及到更改/etc/group       /etc/gshadow 文件。

groupdel :删除用户组,常会涉及到更改/etc/group       /etc/gshadow 文件。

groupmod:更改用户组信息,常会涉及到更改/etc/group       /etc/gshadow 文件。


  • 用户和组的关系:一对一,一对多,多对一,多对多。

  • 用户分类:

超级用户:UID=0,root

虚拟用户:UID=1-499,满足文件或者服务启动的需要,一般不能登录系统。

普通用户:UID=>=500,由超级用户或者具有超级用户权限的用户创建。


  • 与用户相关的文件:/etc/passwd(需要熟悉内容)     /etc/shadow       /etc/group       /etc/gshadow

/etc/skel:用来存放新用户配置文件的目录,当添加用户时,就会把新用户的配置文件复制到新添加用户家目录中,默认情况下该目录下所有文件为隐藏文件,通过修改,添加,删除/etc/skel下的文件:为新用户统一提供初始化用户环境;添加用户登录信息通知。

如:终端提示符显示的是-bash-4.1

原因是:用户家目录下配置文件丢失。root在/root下面的几个配置文件丢失,丢失文件如下:

   1、.bash_profile  

   2、.bashrc 这两个文件都是用户必备的文件。

修复要把这两个文件重新拷贝到/root下:

   cp /etc/skel/.bashrc /root/

   cp /etc/skel/.bash_profile  /root/

  注销root,重新登录就可以恢复正常。  

/etc/login.defs:用来定义创建用户时需要的一些用户配置信息,如:创建用户的家目录,UID和GID的范围,用户密码的有效期。(一般不需要修改)
/etc/default/useradd:添加用户时默认的配置信息。


企业环境:

(1)密码需8位以上字母数字特殊字符复杂组合;大企业用户密码采用LDAP(相当于活动目录,openldap )对linux用户统一认证,批量管理;动态密码,动态口令。

(2)企业环境下删除用户,如果不确定有无重要数据不要删除用户家目录(慎用userdel -r),一般通过 vi  /etc/passwd  注释掉要删除的用户,观察一个月,无异常再删除;或者把登录shell改成/sbin/nologin;或openldap管理的,在ldap库里删掉用户即可。

9、chattr、lsattr


  • chattr:   命令用于改变文件或目录属性,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。

       这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

        如:    chattr +i    /etc/resolv.conf      #用chattr命令防止系统中某个关键文件被修改:

参数:

  -R                    :递归处理,将指定目录下的所有文件及子目录一并处理。

  -v<版本编号> :设置文件或目录版本。

  -V                   :显示指令执行过程。

  +<属性>          : 开启文件或目录的该项属性。

  -<属性>           :关闭文件或目录的该项属性。

  =<属性>          : 指定文件或目录的该项属性。

属性:

  1. a:让文件或目录只能追加内容。

  2. b:不更新文件或目录的最后存取时间。

  3. c:将文件或目录压缩后存放。

  4. d:将文件或目录排除在倾倒操作之外。

  5. i:不得任意更动文件或目录。

  6. s:保密性删除文件或目录。

  7. S:即时更新文件或目录。

  8. u:预防意外删除。


  • lsattr   :  显示chattr命令设置的文件属性。

lsattr [-adlRvV][文件或目录...]

参数:


  • -a  显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。

  • -d  显示,目录名称,而非其内容。

  • -l  此参数目前没有任何作用。

  • -R  递归处理,将指定目录下的所有文件及子目录一并处理。

  • -v  显示文件或目录版本。

  • -V  显示版本信息。

 


Linux中文件权限、用户和用户组管理

原文:http://blog.51cto.com/12674559/2103502

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!