Linux学习笔记——用户管理

用户管理


1、用户管理的配置文件
用户信息文件 /etc/passwd


root:x:0:0:root:/root:/bin/bash
用户名:密码位:UID:GID:注释性描述:宿主目录:命令解释器


man 5 passwd
每行表示一个用户
[root@lovelock frost]# wc -l /etc/passwd
30 /etc/passwd
则用户总数是30


Linux用户分为三类
超级用户 root UID=0
普通用户 UID=500~60000
伪用户 UID=1~499


伪用户特点
1)伪用户与系统和服务程序相关
bin、daemon、shutdown、halt等任何Linux系统都有这些伪用户
mail、news、games、apache、ftp、mysql及sshd等,与Linux系统的进程有关
2)伪用户通常不需要或无法登录系统
3)可以没有宿主目录
不可能有用户不属于任何用户组,或者按照部门分组
[root@lovelock frost]# grep frost /etc/passwd
frost:x:500:500::/home/frost:/bin/bash


用户组特点
每个用户至少属于一个用户组
每个用户组可以包含多个用户
同一用户组的用户享有该组共有的权限
 
Linux中用户组不能属于另外一个用户组
描述信息可描述可不描述,但建议给出
宿主目录用来存放自己的基本信息,如果不手动创建,就会在home目录下创建于用户同名的目录,为宿主目录
用户使用的shell,缺省是bash




MD5加密是单向不可逆的,输入位数不确定,输出位数是一定的




密码文件 /etc/shadow
保存了真正的用户密码


格式说明
root:$6$nqM2zfLVAMfeCClh$aaC1a/ECqrZXt6dOFH7IZRkDcM3Ex3A2jfnP5VW51j2JRCMM3RplNWK
UF0E/zM.aPmOE5zVeM1cFVhkYGv7lK1:15564:0:99999:7:::
用户名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:账号闲置时间:失效时间:标识
用户名:用户登录时用的用户名
密码:加密后的密码,如果将密码删除不是不能登录,而是不需要密码就能登录
最后一次修改时间:从1970年1月1日开始算起的
最小间隔时间:用户最后一次修改密码的时间
最大间隔时间:密码保持有效的最多天数,强迫用户不更改密码就不能登录
警告时间:从系统开始警告到密码失效的天数,当还剩这个天数时系统会提醒用户更改密码
账号闲置时间:用户多少天没有登录过了
失效时间:密码时间失效的绝对天数,比如账号被暂停(锁定)
标识:一般不使用,为空


用户组文件 /etc/group
用户组密码文件 /etc/gshadow
用户配置文件
/etc/login.defs
密码长度,修改时间等的默认值
UID = 500~60000
GUID = 500~60000


/etc/default/useradd
相关的配置可以自己看懂


新用户信息文件 /etc/skel


登录信息 /etc/motd
method of the day
可以改变本地的登录提示信息,希望内部用户看到的信息写到motd里面
文件权限有个粘滞位
[root@lovelock ~]# ls -ld /tmp
drwxrwxrwt. 7 root root 4096 Aug 14 21:40 /tmp
如果一个目录的权限是777,才给它设定粘着位。这样每个用户都可以在这个目录下创建文件,但只能删除自己是所有者的文件。
粘着位=1,t


/etc/group
sys:x:3:bin,adm
组名:组密码位:GID:组内用户列表
添加组
groupadd webadmin
没有什么太大价值
-g用来指定组的ID
用户管理命令
添加用户useradd -g webadmin lovelock
常用选项:
-D 查看缺省参数
-u 设置UID
-g 缺省所属用户组ID
-G 指定用户所属多个组
-d 宿主目录
-s 命令解释器shell
-c 描述信息
-e 指定用户失效时间


gpasswd设置组密码及管理组内成员
-a 添加用户到用户组 add
-d 从用户组中删除用户 delete
-A 设置用户组管理员 Administrator
-r 删除用户组密码 remove
-R 禁止用户切换为该组
用户切换组可以用的命令
先切换到该用户
newgrp 组名 
提示输入密码
完成


如果需要同时使两个或两个以上的用户对一个目录有写权限或其他特殊权限,就需要新建一个组,使这两个用户都属于这个用户组,使该用户组对这个目录有相应的权限。
Solaris和Aix中没有gpasswd这个命令


用户组管理命令
groupmod -n 改变组名
groupmod -g 改变组ID
如把webadmin组该名称apache
groupmod -n ngix webadmin


用户管理命令
pwck 检测/etc/passwd文件
如果多个人用vi对一个文件进行写操作就不能锁定文件,造成写混乱
而如果用vipw就可以锁定passwd文件,一个用户在编辑时其他用户就无法再同时进行编辑,不会造成混乱
id 查看用户ID和组信息
su - username和su username的区别
前者会把用户当前所在目录和搜索路径切换到要目标用户的宿主目录和搜索路径,而后者不会。如下
[root@lovelock ~]# su - frost
[frost@lovelock ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/frost/bin
[frost@lovelock ~]$ exit
logout
[root@lovelock ~]# su frost
[frost@lovelock root]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
即su -会切换环境变量,而su不会


passwd -S username 查看用户的密码状态,即对/etc/shadow/中的文件进行的提取
[root@lovelock ~]# passwd -S frost
frost PS 2012-08-14 0 99999 7 -1 (Password set, MD5 crypt.)


锁定用户,因为可能一个用户很久没有登录了,或可能有违规操作,需要禁用。原理是MD5加密生成的255位的字符串,加密后就会在前面多加两个叹号,这时密码就无法验证,所以就被锁定了。
passwd -l jack或usermod -L jack
恢复用户锁定
passwd -u jack或usermod -U jack
who可以查看登录的用户,w可以看到更详细的信息,是用远程登录还是直接登录,该用户在执行的命令都可以看到
vigr可以在编辑/etc/group时锁定该文件
可以用find命令查找在删除某个用户后隶属于该用户的文件
find /home -user jack -ok rm {} \;
chage -l jack
[root@lovelock ~]# chage -l frost
Last password change                                    : Aug 14, 2012
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7


启用或停用shadow功能
pwconv/pwunconv
grpconv/grpunconv
authconfig


批量添加用户


newusers 导入用户信息文件
pwunconv 取消shadow password功能
chpasswd 导入密码文件(格式:用户名:密码)
然后pwunconv
然后导入用户的密码文件比如
newuser < user.info
pwunconv
chpasswd < passwd.info
pwconv
这时redhat自带的,比较麻烦,简单的是写一个shell脚本。


用户授权
限制用户su为root
新建一个用户组,将/bin/su权限中的其他人位设置为0,再将需要的用户添加到该组。
sudo在执行sudo命令时临时成为root
不会泄漏root口令
仅向用户提供有限的命令使用权限
sudo不仅可以授权用户执行root可以执行的命令,也可以让普通身份以root身份执行任何命令。命令可以精确化,选项可以指定。关键


案例
让普通用户完全管理apache
1、编辑Apache的配置文件
2、使用Apache的启动脚本
3、更新网页
以上的权限
1、a设置用户为配置文件的所有者 chown
     b改变文件的所属组,把用户加入该组,授予该组写权限
     cvisudo用户 地址=/bin/vi /etc/httpd/conf/httpd.conf
2、start reload fullstatus configtest
3、/var/www/html 改变所有者


权限授予可以精细化,精确到参数


useradd lisi
usr/bin/passwd有一个特殊的权限
[root@lovelock etc]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 22 19:48 /usr/bin/passwd
s=set uid
当一个可执行程序具有setuid权限的时候,用户执行这个程序时 ,就会以这个程序的所有者执行
chmod u+s 可以授予setuid权限
           4755
必须是可执行的才会如此,如果不是它会是大写的S,这是一种警告。

你可能感兴趣的:(学习笔记)