Linux用户与组管理
Linux系统上,用户通过内核拷贝程序到内存中,从此发起进程。进程以发起者的身份进行,进程对文件的访问权限,取决于发起进程的用户的权限。而有些后台进程或服务类进程以非管理员身份运行,为此也需要创建多个普通用户,此类用户不需登录。
系统中,用户类别分为管理员和普通用户(系统用户和登录用户),组类别分为基本组和附加组。管理系统上的用户与组主要通过以下四个文件来实现
-
/etc/passwd 用户的基本信息
-
/etc/shadow 用户密码
-
/etc/group 组的基本信息
-
/etc/gshadow 组密码
生成密码采用单向加密算法,并借助salt完成。分别用数字1-6来标识md5, sha1, sha225, sha256, sha384, sha512六种加密算法。对用户与组的管理一般涉及以下几类工作:用户/组的创建、修改、删除、切换、设置密码四个方面。
用户管理
创建用户 useradd
useradd [option] login-name -u 指定UID -g 指定基本的GID,但指定的组必须事先存在 -G 指定用户所属的附加组,多个组之间用","隔开 -c 指定注释信息comment -d /path/to/home-dir 指定用户家目录;通过复制/etc/skel目录并重命名实现;如果指定的及目录已经存在,不从skel文件夹中复制文件 -s 指定用户默认shell,可用的所有可选shell存储在/etc/shells文件中 -r 创建系统用户 -m 强制创建用户主目录 -M 不为用户创建主目录 -f 用户非活动期 -1 永不过期 注意:创建用户时的诸多默认设定,配置文件为/etc/login.defs useradd -D 显示创建用户的配置信息 useradd -D [options] 修改默认选项的值,修改的结果保存在/etc/default/useradd文件中
修改用户属性 usermod
usermod [option] login-name -u newUID 修改用户的UID为此处指定的UID -g 修改用户的GID,修改用户所属的基本组 -G 修改用户所述的附加组。注意:此处修改只能覆盖原有附加组设置 -a 与-G共同使用,为用户添加附加组 -c 修改用户的注释信息 -d /path/to/new-home-dir 修改用户的家目录,用户原有的文件不会被转移至新目录 -m 只能与-d一同使用,将原有的家目录转移为新的家目录; -l 修改用户的登录名 -s 修改用户的默认shell -L 锁定用户的账号,禁止用户登录;即在用户原来的面字符之前添加一个“!” -U 解锁用户的账号
设置密码信息 passwd
passwd [option] [login-name] 命令后不指明login-name时,用户可为自己的账号修改密码信息 passwd login-name 只有root能修改其他用户的密码信息 -l/-u 锁定/解锁用户账户 -d 清除用户密码 -e date 指明用户账户过期明确的日期 -n days 密码最小使用期限 -x days 密码最长使用期限 -i days 非活动期限 -w days 警告期限 --stdin 从标准输入读取密码
切换用户 su
登录式切换:会通过重新读取用户的配置文件来重新初始化 su - username su -l username 非登录式切换: su username 注意:管理员可以无密码切换至其他任何用户 su - username -c "COMMAND" 以某用户的身份运行“COMMAND”
显示用户有效ID
id [option] [user] -u 仅显示UID -g 仅显示用户基本组ID -G 仅显示用户所属的所有组ID -n 显示用户的名称而非ID
删除用户 userdel
userdel [option] login-name -r 删除用户时一并删除其家目录
组管理
创建新组 groupadd
groupadd [option] group-name -g GID 指定GID;默认为上一个GID+1 -r 创建系统组
修改组属性 groupmod
groupmod [option] group-name -g GID修改组ID -u new-group-name 修改组名
修改组密码 gpasswd
gpasswd [option] group -a username 向组中添加用户 -d username 从组中移除用户 -r 删除指定组的组密码
组切换 newgrp
newgrp [-] [group-name] 如果命令后不跟group-name,则用户切换回/etc/passwd文件中记录的默认组 - 会模拟用户以新组重新登录,以实现重新初始化工作环境
删除组 groupdel
groupdel [option] group-name
权限管理
Linux文件中的权限有9位字符,通过ls命令的-l选项可以查看。
[root@localhost ~]# ls -l . total 8 -rw-------. 1 root root 1624 Nov 13 08:29 anaconda-ks.cfg -rw-------. 1 root root 1672 Nov 13 00:36 initial-setup-ks.cfg
-
左三位是文件属主的权限,中三位是文件属组的权限,右三位是其他用户对该文件的权限。
-
每类用户的权限共有8种组合“—, –x, -w-, r–, -wx, r-x, rw-, rwx”,r:可读取文件的内容,w:可以修改文件的数据,x:可将文件运行为进程。8种组合表示为数字分别为:0,1,2,3,4,5,6,7。
Linux中进程对文件的访问权限遵从以下模型:1 如果进程的属主与文件的属主一致,则应用属主对该文件的权限;2 如果属主不一致,如果进程的属主属于用户的属组,则应用该文件的属组对该文件的权限;3 如果进程的属主以上两条都不满足,则应用other权限。
Linux中权限的管理主要涉及两个方面:设定文件的属主、属组;设定文件属主、属组以及其他用户分别所具有的权限。
设置文件属主、属组以及其他用户的权限 chmod
chmod [option] mode[,mode]... fiel... mode表示法: 赋权表示法:直接操作一类用户的所有权限位rwx; u/g/o/a= 授权表示法:直接操作一类用户的一些权限位r,w,x; u+, u- g+, g- o+, o- a+, a- --reference=/path/to/reference 以reference文件的权限作为参考标准 -R 递归修改
修改文件的从属关系 chown
chown [option]... [owener][:group] file --reference=/path/to/reference 以reference文件的属主属作为参考标准修改之 -R 递归修改
文件的权限反向掩码,遮罩码 umask
新建文件:其权限为666-umask;新建目录:其权限为777-umask。Linux中新建文件默认不能拥有执行权限,如果(666-umask)结果中有执行权限,则自动为其加一。
umask 查看当前命令 umask MASK 设置umask,只对当前shell进程有效
原创文章,作者:N24_fynl,如若转载,请注明出处:http://www.178linux.com/62961
评论列表(1条)
基础命令总结的得非常好,希望你能牢记这些基础知识。加油!