用户:UID, /etc/passwd
用户组:GID, /etc/group
影子口令:
用户: /etc/shadow
用户组: /etc/gshadow
用户分类:
- 管理员:0(UID)
- 普通用户:1-65535
- 系统用户:1-499
- 一般用户:500-60000
用户组类别:
- 管理员组
普通组:- 系统组和一般组
用户组类别也可以这样分类:
- 私有组:创建用户时,如果没有为指定所属的组,系统会自动为其创建一个与用户名同名的组
- 基本组:用户的默认组
- 附加组,额外组:默认组以外的其它组
用户管理:
useradd,userdel,usermod,passwd,chsh,chfn,finger,id,chage
组管理:
groupadd,groupdel,groupmod,gpasswd
权限管理:
chown,chgrp,chmod,umask
权限
进程的安全上下文
进程是以用户的身份运行的,当进程访问文件是,先检查发起进程的用户和用户所属的组,在检查文件的的属主和属组,如果文件的属组就是发起进程的用户则引用前三位的权限,如果文件的属组和发起进程的用户的属组相同则应用中三位的权限,都不是的话及应用右三位的权限
文件
r:可读,可以使用类似cat等命令查看文件内容
w:可写,可以编辑或删除此文件
x:可执行,eXacutable,可以命令提示符下当作命令提交给内核运行
目录
r:可以对此目录执行ls以列出的所有文件
w:可以在此目录创建文件
x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息
useradd命令添加用户
选项和参数说明:
- -u:指定用户的UID
- -s:指定用户的shell (系统可支持的shell在/etc/shells 下)
- -r:创建一个系统用户(UID范围centos6为1-499,centos7为1-999可在/etc/login.defs中查看)
- -c:关于登录时的简短描述 后跟描述的字符串
- -d:自定义用户的家目录 后跟家目录路径
- -e:用户账户将被禁用的期限格式为 YYYY-MM-DD
- -f:表示过期后彻底禁用的天数 0表示马上禁止 -1表示禁用这个功能
- -G[GROUP1],[GROUP2],… : 添加用户的附加组多个组用“,”隔开
- -M:不创建用户的家目录 默认复制/etc/skel/目录下的文件到/home/USERNAME/下作为USERNAME的家目录 都是隐藏文件
- -N;不创建同名的私有组
- 修改创建新用户的默认值:(D是default) 命令修改只对当前shell有效
- useradd -D [选项],后面如果跟选项,表示查看新创建的用户值
练习:1、添加用户
[root@localhost ~]# adduser shitou #添加用户
[root@localhost ~]# ls /home/ #查看家目录
shitou test
[root@localhost ~]# id shitou #显示用户的id和组id
uid=1001(shitou) gid=1001(shitou) groups=1001(shitou)
[root@localhost ~]# cat /etc/passwd | grep shitou
shitou:x:1001:1001::/home/shitou:/bin/bash
[root@localhost ~]# cat /etc/group | grep shitou
shitou:x:1001:
[root@localhost ~]# adduser -M liming #添加用户不带家目录
[root@localhost ~]# ls /home/
shitou test
[root@localhost ~]# adduser -g shitou liu #给指定组添加用户
[root@localhost ~]# id liu
uid=1003(liu) gid=1001(shitou) groups=1001(shitou)
[root@localhost ~]# useradd li #添加用户,给用户添加密码
[root@localhost ~]# passwd li
Changing password for user li.
密码******
2、批量添加用户
#!/bin/bash #批量添加用户
#
declare -i sum=0
for user in `cat /root/userlist.txt`;do
id $user >/dev/null 2>&1
if [ $? -eq 0 ];then
echo "the user $user is exist."
else
useradd $user
echo $user"@#$" | passwd --stdin $user &> /dev/null
let sum+=1
fi
done
echo "$sum sucessed."
usermod命令,用于修改用户信息
- -u:修改UID
- -g:修改用户的基本组
- -d:修改用户的家目录 原来的家目录文件不会转移至新目录 要想移动要与参数 -m 一起使用
- -G:修改用户的附加组原来的附加组会被删除 要想追加附加组使用参数 -a
- -c:修改注释信息
- -e:修改过期日期
- -f:修改过期后可使用的天数
[root@localhost shell]# usermod -a -G 1001 liu #给用户添加附加组
[root@localhost shell]# id liu
uid=1003(liu) gid=1003(liu) groups=1003(liu),1001(shitou)
chmod更改文件权限
chmod mode file ,...
- --reference=/path/to/somefile file,...
- -R:修改目录及内部文件的属主
- chmod 用户类别+|-mode file,...
passwd用户密码管理命令
参数
- -k, --keep-tokens keep non-expired authentication tokens用户过期后仍能使用
- -d, --delete delete the password for the named account (root only)删除用户密码,仅能以root用户操作
- -l, --lock lock the password for the named account (root only)锁定用户无权更改密码,不可更
- -u, --unlock unlock the password for the named account (root only)解除用户无权更改密码
- -e, --expire expire the password for the named account (root only)
- -f, --force force operation
- -x, --maximum=DAYS maximum password lifetime (root only)
- -n, --minimum=DAYS minimum password lifetime (root only)
- -w, --warning=DAYS number of days warning users receives before password expiration (root only)
- -i, --inactive=DAYS number of days after password expiration when an account becomes disabled (root only)
- -S, --status report password status on the named account (root only)
- --stdin read new tokens from stdin (root only)
chage用户密码有效期管理
- -d最近一次的修改时间
- -E过期时间,chage -E -1 username让用户永久有效
- -I非活动时间
- -m最短使用期限
- -M最长使用期限
- -W警告时间
pwck命令检查用户密码文件的完整性
grpck命令检查用户组密码文件的完整性
groupadd添加用户组
主要参数
- -g gid:指定组ID号
- -o:允许组ID号,不必惟一
- -r:加入组ID号,低于499系统账号
- -f:加入已经有的组时,发展程序退出
groupdel删除用户组
groupmod修改用户组信息
- -g修改组id
- -n修改组名
gpasswd用户组密码设置
chown改变文件所有者和组
- -R:修改目录及内部文件的属主
chown --reference=/path/to/somefile file,...(属主属组一起改为somefile文件一样的拥有者和组)
也可以使用 chown username:grpname
chgrp与chown相似
su用户切换命令
参数说明
- -f , –fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell。
- -l , –login:加了这个参数之后,就好像是重新登陆一样,大部分环境变量(例如HOME、SHELL和USER等)都是以该使用者(USER)为主,并且工作目录也会改变。如果没有指定USER,缺省情况是root。
- -m, -p ,–preserve-environment:执行su时不改变环境变数。
- SUID:运行程序时,相应进程的属主是程序文件自身的属主,而并非是启动者的属主
- SGID:运行程序时,相应进程的属组是程序文件自身的属组,而并非是启动者所属的基本组