六.Linux用户和用户组管理

来源:互联网 发布:最短查找时间优先算法 编辑:程序博客网 时间:2024/06/03 18:46
Linux是一个多用户多任务的分时操作系统,当一个用户想使用系统资源的时候,他必须向系统管理员申请一个账号,然后用这个账号进入系统。
使用账号管理的好处:
    1.可以跟踪用户,控制其对系统资源的访问;
    2.帮助用户组织文件,为用户提供安全性保护。
实现用户账号的管理,需要:
    1.用户账号的添加、删除和修改。
    2.用户口令的管理。
    3.用户组的管理。

用户管理
1.添加用户:在/etc/passwd文件中为用户新增加一条记录,同时更新其他系统文件(/etc/shadow,/etc/group等等)
添加用户:在系统中创建一个账号,然后给其分配用户号、用户组、主目录、登录shell等资源。刚添加的账户是被锁定的,无法使用。
语法:useradd 选项 用户名
选项与参数:-c comment:指定一段注释性描述。
                    -d 目录:指定用户主目录,若不存在,则同时使用-m创建。
                    -g 用户组:指定用户所属的用户组。
                    -G 用户组:指定用户所属的附加组。
                    -s Shell文件:指定用户的登录Shell。
                    -u 用户号:指定用户的用户号。同时使用-o表示可以重复使用其他用户的标识号。
例:useradd -d /usr/sam -m sam
        useradd -s /bin/sh -g group -G adm,root gem:创建新用户gem,其登录Shell是/bin/sh,属于group用户组,同时还属于adm和root用户组,group用户组是主组。
2.删除账号:从系统中删除该账号对应的/etc/passed等文件,同时必须还要删除用户的主目录
语法:userdel 选项 用户名
选项和参数:-r:把用户的主目录一起删除
3.修改账号:更改用户有关属性,如用户号、主目录、用户组、登录Shell等。
语法:usermod 选项 用户名
选项和参数:-c, -d, -g, -m, -G, -s, -u, -o,与添加用户一样。
如:usermod -s /bin/ksh -d  /home/z  -g developer sam:将sam的登录Shell改为/bin/ksh,主目录改为 /home/z,用户组改为developer。
4.用户口令的管理
用户刚创建时候没有口令,被系统锁定,无法使用,必须为其制定口令才可以使用,即使指定空口令。超级用户可以指定自己和其他用户口令,普通用户只能修改自己的口令。
语法:passwd 选项 用户名
选项和参数:-l:锁定口令,即禁用账户。
                    -u:口令解锁。
                    -d:使账号无口令。
                    -f:强迫用户下次登陆时候修改口令。
超级用户为用户指定口令时,不需要原口令,而普通用户需要。

用户组管理
Linux下的用户属于与它同名的用户组,在创建用户时候,用户组也同时被创建。
用户组管理包括用户组的添加、删除、修改。管理实际上是对/etc/group文件的更新。
1.增加用户组
语法:groupadd 选项 用户组
选项和参数:-g GID:指定新用户组的组标识号(GID)
                    -o:一般与-g同时使用,表示新用户组的GID可以和已有用户的GID相同。
2.删除用户组
语法:groupdel 用户组
3.修改用户组属性
语法:groupmod 选项 用户组
选项和参数:-g GID:为用户组指定新的组标识号
                    -o:与-g同时使用
                    -n 新用户组:将用户组的名字改为新用户组
4.如果一个用户属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
语法:newgrp 用户组

与用户账号有关的系统文件
1./etc/passwd:最重要的一个用户管理工作涉及的文件
Linux系统中每个用户在/etc/passwd文件中都有对应的记录行,记录了用户的基本属性。
每行记录被冒号分为起个字段,格式与含义:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
    1.用户名:通常长度不超过8个字符,由大小写祖母和/或数字组成。不能有冒号,最好不要有点字符(.)并不使用连字符(-)和加号(+)开头。
    2.口令:存放加密后的用户口令字。现在Linux都是用了shadow技术,把真正的加密口令字存放在了/etc/shadow文件中,在/etc/passwd中只存放一个特殊字符,如: x 或者 * 。
    3.用户标识号:是一个整数,系统内部用来标识用户。通常取值范围是0~65535,0是超级用户root的标识号,1~99由系统保留,普通账号标识号从100开始。在Linux系统中,这个界限是500。若几个用户的标识号相同,则系统内部把他们视为一个用户,但是他们可以有不同的口令、不同的主目录和不同的登录Shell。
    4.组标识号:对应/etc/group文件中的一条记录。
    5.注释性描述:记录用户的一些个人情况。
    6.主目录:用户登录到系统后所在的目录。各用户对自己的目录有读、写、执行的权限。大多数系统下,各用户的主目录都被组织在同一个特定的目录下,而用户主目录名称就是该用户名。
    7.登录Shell:Shell是用户与Linux系统之间的接口。用户登录后,要启动一个进程负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或者某个特定的程序,即Shell。

伪用户:在/etc/passwd文件中有一条记录,但是不能登陆,因为他们的Shell为空。
伪用户含义:
    bin:拥有可执行的用户命令文件
    sys:拥有系统文件
    adm:拥有账户文件
    uucp:UUCP使用
    lp:lp或lpd子系统使用
    nobody:NFS使用
拥有账户文件
1.除了上述伪用户,还有其他许多标准的伪用户,如:audit、cron、mail、usenet等,他们各自为相关的进程和文件所需要。
由于/etc/passwd文件对于所有用户都是可读,所以系统将加密后的口令分离出来存放在/etc/shadow文件中,只有超级用户才可读。
2./etc/shadow与/etc/passwd记录一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生的。由若干字段组成,字段间用冒号分离。
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
    1.登录名:与/etc/passwd中一致的账号名
    2.加密口令:加密后的用户口令,13个字符长度,必须为{./0-9A-Za-z}中的字符,若为空,则用户登录不需要口令。
    3.最后一次修改时间:从某个时刻起,到最后一次修改口令的天数。
    4.最小时间间隔:两次修改口令之间所需的最小天数。
    5.最大时间间隔:口令保持有效的最大天数。
    6.警告时间:从系统开始警告用户到用户口令失效的之间的天数。
    7.不活动时间:用户没有登录活动但是账号仍然保持有效的最大天数。
    8.失效时间:是一个绝对的天数,账号的生存期,期满后,账号失效。
3.用户组信息存放在/etc/group文件中。 
若用户所属多个组,则/etc/passwd存放的是用户所属的主组,若用户要访问附加组的文件时,需要先用newgrp命令使自己变为要访问组的成员。
/etc/group文件格式:由冒号隔开若干字段。
组名:口令:组标识号:组内用户列表
    1.组名:由数字和字母组成,不应重复。
    2.口令:用户组加密后的口令。Linux中的用户组一般没有口令,所以此个字段为空或者为 * 。
    4.组内用户列表:不同用户之间用逗号分隔,可能是主组,也可能是附加组。

批量添加用户
方法:
    1.先编辑一个文本用户文件:按照/etc/passwd文件的格式书写,每个用户的用户名、UID、宿主文件都不可以相同,密码栏可以留做空白或输入x。
    
    2.以root身份执行命令 /usr/sbin/newusers,从刚创建的用户文件user.txt中导入数据,创建用户。
    
        执行后查询结果:
    
    3.执行命令 /usr/sbin/pwunconv:将/etc/shadow产生的shadow密码解码,然后回写到/etc/passwd中,并将/etc/shadow的shadow密码栏删掉,即先取消shadow password功能。
    
    4.编辑每个用户的密码对照文件。
        passwd.txt文件内容:
        
    5.以root身份执行命令 /usr/sbin/chpasswd。
        
    6.确定密码经编码写入/etc/passwd的密码栏后,执行命令/usr/bin/pwconv将密码编码为shadow password,并将结果写入 /etc/shadow。
    

原创粉丝点击