您的位置:首页 > 运维架构 > Linux

Linux用户及权限管理

2015-12-13 14:33 726 查看
目录:
-、linux用户及组的管理
1.用户和组的基本概念
1.1用户类别及用户标示
1.2组类别及组标识
1.3用户认证信息及加密算法

2.用户信息及用户密码相关文件
2.1用户的信息库文件/etc/passwd
2.2用户的密码库文件/etc/shadow

3.组信息及组密码相关文件
3.1组的信息库文件/etc/group
3.2组的密码库文件/etc/gshadow

4.用户及组的相关管理命令
4.1用户管理命令
4.2组管理命令
4.3密码管理及其他相关命令

二、linux文件权限管理
1.文件权限模型
1.1进程安全上下文及文件权限的表示
1.2文件和目录的权限状态

2.文件权限状态及相关管理命令
2.1文件的八进制权限表示法
2.2权限管理命令chmod

3.文件从属关系及相关管理命令
3.1属主管理命令chown
3.2属组管理命令chgrp

4.文件umask的特性及管理
4.1umask的作用
4.2umask的管理

linux用户及组的管理:

1.用户和组的基本概念

1.1用户类别及用户标示用户类别:管理员和普通用户管理员,即root用户,可以对系统进行一切操作;

普通用户:分为系统用户和登录用户。
系统用户:是为了能够让那些后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户;这类用户从不用登录系统;
登录用户:是需要操作计算机的交互式登录的用户

用户标示:
即UID,用作用户名称的转换,用0-65535之间的二进制数字表示,默认60000后的UID用作保留管理员的UID永远为0

普通用户的UID则为1-65535
系统用户的UID在centos6里为1-499,在centos7里为1-999
登录用户的UID在centos里为500-60000,centos7里为1000-60000
1.2组类别及组标示用户组按类别可分为三类:
第一种类别:管理员组和普通用户组,普通用户组里又分为了系统用户组和登录用户组。第二种类别:基本组和附加组第三种类别:私有组和公共组
组标示:即GID,用作组名称的转换,用0-65535之间的数字表示,默认60000后的GID用作保留
管理员组的GID永远为0
普通用户组的GID则为1-65535系统用户组的GID在centos6里为1-499,在centos7里为1-999登录用户组的GID在centos里为500-60000,centos7里为1000-60000
1.3用户认证信息及加密算法

用户认证:
用户登录计算机时,计算机通过对比事先存储的数据与登录时提供的信息是否一致;即验证用户的密码。
密码的使用策略应遵循以下几点:1、使用随机密码;2、最短长度不要低于8位;3、应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;4、定期更换

密码文件里存储的密码是加密的,而对密码进行加密的方式在centos里主要是单向加密,算法主要有md5、sha1、sha224、sha256、sha384、sha512
对于单项加密这种机制而言,为了避免多个用户的密码相同,在计算之时加salt(随机数,每个用户的salt都不一样);加入的salt不同,加密后的结果相去甚远,这样即使两个用户的密码相同,在用户看来两个加密后的密文字符串也不一样,避免用户密码泄露

2.用户信息及用户密码相关文件
2.1用户的信息库文件/etc/passwd



用户的信息存储在/etc/passwd文件中,以冒号分隔的每个字段的含义为name:password:UID:GID:GECOS:directory:shellname: 用户名password:密码占位符。实际密码保存在/etc/shadow中UID: 用户的ID号GID: 用户所属的基本组的ID号;GECOS: 注释信息。可选的,提供用户的信息directory:用户的家目录;用户登录系统后首先进入此目录,root用户默认是/root,普通用户则是/home/用户名
shell: 用户的默认shell,定义用户登录系统后使用的shell程序;

2.2用户的密码库文件/etc/shadow
早期的unix系统的密码保存在/etc/passwd中,但passwd文件对所有用户可读,存在安全隐患,所以现在的linux使用shadow保存加密后的密码,/etc/shadow文件只有管理员才可以访问



/etc/shadow文件中保存了用户加密后的密码及密码的各种期限,以冒号为分隔每段分别表示为:
用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期限:非活动期限:过期期限:保留字段
用户名:即用户的名称,对应/etc/passwd中的用户名

加密的密码:
此段如果表示为*,则表示禁止此用户登录;如果加密的字符串前有!表示用户被禁用,新创建的用户还没有密码时就是禁用状态,使用!!表示;如果此段是空的,表示用户没有密码,登录时不需要密码;

加密后的密码以$为分隔符,分隔成三段第一段:加密算法,1-6分别表示md5、sha1、sha224、sha256、sha384、sha512第二段:用户的salt随机数第三段:用户加密后的密码
最近一次修改密码的时间:linux计算日期是以1970年 1月1号开始计算到修改密码那一刻的时间天数
最短使用期限:表示多久后才可以改密码。0表示可以随时更改
最长使用期限:更改后的密码最长可以使用多少天
警告期限:密码在到达最常使用期限前,系统会发出警告,提醒用户密码将过期请更新密码,默认是7,表示密码在到达最常使用期限前的7天会发出警告
非活动期限(过期期限):如果过了警告期没有更有更改密码,则在非活动期限内,必须更改密码后才可以登录进系统
过期期限:账户过期时间,账户过期时,用户将不被允许登录注意,账户过期不同于密码过期。账户过期时,用户将不被允许登录;密码过期时,用户将不被允许使用其密码登录。
保留字段:此字段保留作将来使用

3.组信息及组密码相关文件

3.1组的信息库文件/etc/group
组的信息存储在/etc/group文件中

每行以冒号为分隔符分割成4段,依次表示 为group_name:password:GID:user_list
group_name:用户组的名称password: 组密码占位符,实际密码保存在/etc/shadow中
GID: 组的id号
user_list: 用户列表,注意:该组的用户成员是:以此组为附加组的用户的用户列表;而用户的基本组在/etc/passwd中记录

3.2组的密码库文件/etc/gshadow
/etc/gshadow 文件中保存了用户组加密后的密码

分别为:组名:加密了的密码:组管理员:组成员
4.用户及组的相关管理命令

4.1用户管理命令

useradd命令:创建用户
useradd [选项] 登录名
选项:
-u, --uid UID:指定UID;-g, --gid GROUP:指定基本组ID,此组必须事先存在;-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;-c, --comment COMMENT:指明注释信息;-d, --home HOME_DIR:以指定的路径作为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件; -s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;-r, --system:创建系统用户;-M:不创建用户主目录,即使系统在/etc/login.defs 中的设置 (CREATE_HOME) 为 yes-f:用户密码过期后,账户被彻底禁用之前的天数。0表示(到最长使用期限后)立即禁用,-1表示禁用这个功能(账户永不禁用,改密码后仍可以使用)。 注意:创建用户时的诸多默认设定配置文件为/etc/login.defs useradd-D:显示创建用户的默认配置; useradd -D 选项: 修改默认选项的值;修改的结果保存于/etc/default/useradd文件中;


练习:将创建用户时默认shell更改为/bin/csh


usermod命令:修改用户属性
usermod [选项] 登录名 -u,--uid UID:修改用户的ID为此处指定的新UID; -g, --gid GROUP:修改用户所属的基本组;注意,指定的组要事先存在 -G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组。注意:原来的附加组会被覆盖; -a, --append:与-G一同使用(-a -G NEW_GROUP),用于为用户追加新的附加组;

-c, --comment COMMENT:修改注释信息; -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置; -m, --move-home:只能与-d选项一同使用(-m -d NEW_HOMEDIR),用于将原来的家目录移动为新的家目录;原有的文件都会保留

-l, --login NEW_LOGIN:修改用户名; -s, --shell SHELL:修改用户的默认shell; -L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!"禁止用户登录 -U, --unlock:解锁用户的密码 userdel命令:删除用户,默认不删除用户的家目录userdel [选项] 登录
-r:删除用户时一并删除其家目录 4.2组管理命令 groupadd命令:添加组groupadd [选项] group_name -g GID:指定GID;默认是上一个组的GID+1 -r: 创建系统组 groupmod命令:修改组属性
groupmod [选项] GROUP
-g GID:修改GID -n new_name:修改组名
groupdel命令:删除组 groupdel [选项] GROUP 练习1:创建用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001);

练习2:创建用户fedora,其注释信息为"Fedora Core",默认shell为/bin/tcsh;

练习3:修改gentoo用户的家目录为/var/tmp/gentoo;要求其原有文件仍能被用户访问;

练习4:为gentoo新增附加组netadmin;

4.3密码管理及其他相关命令 passwd命令:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-nmindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username] (1) passwd:不带任何选项,修改用户自己的密码;(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限; -l, --lock 锁定用户,使其无法登录; -u, --unlock 解锁用户; -d, --delete 清除用户密码串; -e, --expire 终止用户密码,使其立即过期,必须修改密码方可登录; -i, --inactive DAYS 非活动期限; -n, --minimum DAYS 密码的最短使用期限; -x, --maximum DAYS 密码的最长使用期限; -w, --warning DAYS 警告期限; --stdin: echo "PASSWORD" | passwd--stdin USERNAME 将管道前输入的字符串内容作为管道后用户的密码
练习:将magedu作为docker用户的密码,同时不显示密码更改信息

组密码文件:/etc/gshadow默认给组定义其组密码,也能管理组中的用户组密码作用:需要临时切换到某个组作为其基本组的用户,如果其附加组不包含此组,则必须输入组密码后才能切换到此组
gpasswd命令: gpasswd [选项] GROUP_NAME-a USERNAME:向组中添加用户 练习:向mygrp组中添加docker用户

-d USERNAME:从组中移除用户 练习:将mygrp组中的archlinux用户移除

newgrp命令:临时切换指定的组为基本组;newgrp [-] [group] 切换后需要退出执行exit即可,注意:如果切换的组是用户所属的附加组,则可以直接切换;否则切换到其他组则需要输入其组密码才可以切换到此组 -:-选项会模拟用户重新登录以实现重新初始化其工作环境;即登录时的基本组就为临时切换的指定组不加-则只表示临时切换到新的基本组 chage命令:更改用户密码过期信息 chage [选项] 登录名 -d 修改最近一次修改密码的时间 -E 修改密码过期时间 -I 非活动期限 -W 警告期限 -m 最短使用期限 -M 最长使用期限
linux文件权限管理:

1.文件权限模型
文件的权限模型大体分为两类:1、mode:rwxrwxrwx 注意:权限当中的读写执行权限位置是固定的2、ownership:从属关系(user, group) 1.1进程安全上下文及文件权限的表示 进程安全上下文,进程对文件的访问权限应用模型:1、进程的属主与文件的属主是否相同;如果相同,则应用属主权限;2、否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;3、否则,就只能应用other的权限; 权限:r:readable, 可读的w:writable, 可写的x:executable,可执行的
1.2文件和目录的权限状态
文件:r:可使用cat、less等工具获取文件的数据w:可修改文件的数据,包括改动原来的内容或新增内容x:可将此文件运行为进程; 对于文件来说,默认不应该有执行权限,应为如果其拥有执行权限,则可以将其运行为一个进程,有可能发起危险操作 目录(路径映射):r:可使用ls命令获取其下的所有文件列表;但是不包括查看详细信息(ls -l)w:可修改此目录下的文件列表;即创建或删除文件;x:可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息; 对于目录来说,一般都会有读取和执行权限,否则无法查看目录下的文件列表
2.文件权限状态及相关管理命令

2.1文件的八进制权限表示法ls-l rwxrwxrwx:左三位:定义user(owner)属主的权限中三位:定义group属组的权限; 右三位:定义other其他用户的权限
权限组合机制:---000 0--x001 1-w-010 2-wx011 3 r--100 4 r-x101 5 rw-110 6 rwx111 7
练习:rw-rw-r--(664),rwxrwxr-x(775),rwxr-x---(750),rw------(600), rwxr-xr-x(755),664(rw-rw-r--),640(rwxr-----),600(rw-------),775(rwxrwxr-x)
2.2权限管理命令chmod
chmod命令:改变文件权限 chmod [OPTION]...MODE[,MODE]... FILE...chmod [OPTION]... OCTAL-MODEFILE...chmod [OPTION]...--reference=RFILE FILE...
三类用户:u:属主 userg:属组 groupo:其它 othera:所有 all
(1) chmod [OPTION]... MODE[,MODE]... FILE...
赋权表示法:直接操作一类用户的所有权限位rwx;u=g=o=a=例如:chmodg=rw fstabchmodug=r fstabchmodu=rwx,g=rw,o= fstab
授权表示法:直接操作一类用户的一个权限位r,w,x;u+,u-g+,g-o+,o-a+,a-例如:chmodu-x fstabchmodo+r fstabchmodug+x fstabchmodg-wx fstabchmod+x fstabchmod-x fstabchmodu+x,g+w fstab
(2) chmod [OPTION]... OCTAL-MODE FILE... 八进制权限位表示法:三个位置的权限都要写上例如:chmod 660 fstab
(3)chmod [OPTION]... --reference=RFILE FILE... 参考其他的文件权限并修改至与之一样例如:chmod--reference=/var/log/messages fstab 将fstab的权限改至跟/var/log/messages一样
选项:-R,--recursive:递归修改 递归修改文件权限时,最好只用于授权表示法中,因为目录有执行权限,递归修改文件后,所有文件也拥有了执行权限例如:chmod-R 700 skel/chmod-R go= skel/chmod-R u+r skel/
注意:用户仅能修改属主为自己的那些文件的权限;

3.文件从属关系及相关管理命令

3.1属主管理命令chown
chown命令:既可以修改属主,也可以修改属组chown [OPTION]... [OWNER][:[GROUP]] FILE...chown [OPTION]... --reference=RFILE FILE...
选项:-R:递归修改例如:chown -R docker skel/chown:mygrp /tmp/mytest/ 冒号之前没有内容,表示属主不变chown -R archlinux:mygrp skel/chown -R archlinux.mygrp skel/chown-R --reference=/tmp/moosefs/ /tmp/skel/
3.2属组管理命令chgrp chgrp命令:只能用来改属组,一般很少用到(chown命令既可以修改属主,也可以修改属组)chgrp [OPTION]... GROUP FILE...chgrp [OPTION]... --reference=RFILE FILE... 注意:仅管理员可修改文件的属主和属组;
练习:
1、新建系统组mariadb, 新建系统用户mariadb,属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;


2、新建GID为6000的组mageedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;


3、新建用户suse,其家目录为/users/suse,密码同用户名;


4、新建用户www, 其家目录为/users/www;删除www用户,但保留其家目录;


5、为用户gentoo和fedora新增附加组mageedu;



6、复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为mageedu,并让属组对目录本身拥有写权限;




4.文件umask的特性及管理

4.1 umask的作用
umask:文件的权限反向掩码,遮罩码;文件的默认权限:666-umask (因为文件默认不应该拥有执行权限)目录的默认权限:777-umask (目录默认应该拥有执行权限) 注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1;umask: 023666-023=644777-023=754 4.2 umask的管理umask命令:umask:查看当前umaskumask MASK: 设置umask注意:此类设定仅对当前shell进程有效; 练习:设置umask为023并创建/tmp/test文件 和/tmp/testdir目录查看其权限

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: