linux 用户、群组及权限操作

来源:互联网 发布:51淘宝小号是真的吗 编辑:程序博客网 时间:2024/06/04 08:12

  • 在linux中,一切皆文件,当我们创建一个用户时,其实是创建了以下文件:
/etc/passwd 用户配置信息
/etc/shadow 用户密码
/etc/group 组信息
/etc/gshadow 组密码
/home 家目录

/var/spool/email/ 用户邮箱

  • /opt/passwd 用户配置信息

以:为分隔符,包含7个信息,分别是

用户名:

密码占位符:x,密码在/etc/shadow中;若没有密码,空着

uid:用户id 相当员工的工号

gid:组id 相当于员工的部门代号

comments:用户描述信息,写啥都行

用户家目录:root用户为 /root ;普通用户为/home/用户名
用户登录shell:执行bin/bash相当于登录一个用户终端(执行了几次就需要几次退出);/sbin/nologin 不能登录shell
新增用户的配置信息在passwd文件的最下面,可以用tail -1 命令来查看
  • /etc/shadow 用户密码


以:为分隔符,包含9个信息,分别是用户名:加密的密码(如果没有密码是!):上次修改密码时间:0最短密码期限:99999最长密码期限:7密码警告期限:密码非活动期限:账号到期时间:保留域

  • /etc/group 组信息

以:为分隔符,包含4个信息:

组名:相当于部门名称
组密码占位符X:组密码信息在/etc/gshadow中,一般不设置组密码,但可以通过gpasswd 组名 命令来设置
gid:组id 相当于部门代号
组成员:可通过vim /etc/group 命令往组内加成员
  • /etc/gshadow 组密码


以:为分隔符,包含4个信息 组名:组密码(没有就!):组管理者:组成员

  • /home 家目录
并不是空的,隐藏的用户初始配置文件 可以用 ls -a 命令查看。手动新建用户时也可以在/etc/skel/下拷贝隐藏文件。

  • 我们可以通过在以上6个文件中添加新的用户信息,来进行新增用户的操作。删除用户时,通过userdel -r 命令可以删除用户及其残留文件。但是对于手动新增的用户,由于该用户的家目录和mail下的用户名文件是复制的的其他用户的,所以其属主、属组信息也是其他用户的,需要先更改其属主、属组为该用户,才能通过这个命令顺利删除。
  • id 用户名 命令可以查看用户的属主和属组信息:

上图的前两个为用户的uid和gid,‘组=...' 那一串是该用户首先在自己的组,也附属于其他组,如wheel、 test、 sbb

  • 权限信息


如上图,a.txt的权限信息:

第一位的 - :表示普通文件(d表示目录文件,b表示块文件,p表示管道文件,l表示软链接,相当于windows的快捷方式)
rw- r-- r-- :三位一组,分别表示属主、属组、其他用户对a.txt的权限, r可读,w可写,x可执行 -无权限
1: 文件的硬链接数; root root 分别是该文件的属主和属组;87为大小,单位是byte字节(也可以通过 ll -h 命令来更直观的显示文件大小;再后面是文件创建日期和文件名
  • chown 属主:属组 /路径 命令可以更改文件或文件夹的属主、属组信息 -R 可以递归的修改

如上图,已更改a.txt的属主和属组信息为ayhan
  • chmod u=rwx,g=rwx,o=rwx /oldboy/a.txt 命令修改权限rwx-权限:

通过 -R 递归的修改:


如上图,-R 递归更改该目录下的所有文件权限信息。更改权限也可以通过数值这种更简单的方式:r=4, w=2, x=1 通过数值相加来赋予权限,如上图中774,(7=4+2+1),于是为属主和属组添加了可读、可写、可执行的权限 ;4,为其它用户添加了可读权限。另外,也可以通过u-w, g-w,o+x 这样加减的方式来修改权限

  • useradd 用户名 -u -g -c  -d -s -G命令 新建用户时指定其uid、gid、描述信息、家目录、shell、附加组:

注意,用这种方式新建用户时,-g指定的组id必须是已经存在的,否则新建不成功

  • groupmod 组名 -n 新组名 命令 更改组名

  • groupadd 组名 -g 数值 命令 新建组,并指定gid
  • groupdel 组名 删除组


  • usermod 用户名 -u -g -c  -d -s 命令更改用户信息,用法同上。我们也可以通过 -G 组名来把该用户加入另一个组,但是多次执行的话是覆盖的方式,即新加入的附加组信息会覆盖之前的附加组信息,如果想加入多个附加组,可以通过-aG 命令(append)。另外,更改了属组信息后,必须重新登录用户才能更新属组并获取属组的权限。

如上图,再次将tester加入附加组1000,覆盖了之前加的的组1024. 下图中用 -aG 的方式,就可以追加组。

  • 文件的权限 & 目录的权限

文件的可读(R):读文件内容

文件的可写(W):修改内容

文件的可执行(X):把文件当程序执行

目录的可读(R):可浏览该目录下的文件名/子文件名

目录的可写(W):可在该目录下新建删除重命名

目录的可执行(X):可以cd到该目录下

root用户不受权限的限制,只要一个文件的属主属组或其他人中的任何一个拥有X权限,root都可以执行。如果都没权限,root用户可以加权限。

  • 新建文件的过程是先CD进去,光对目录有W权限是不行的,所有要同时拥有WX权限,才能在目录下新建文件。另外,虽然文件建好了,但是没有R权限是看不到目录下建的文件名
  • 假设/test目录对others的权限为RWX,/test目录下有a.txt文件,对others的权限为R--,某用户属于others,用vim编辑器 vim /test/a.txt 试图修改并保存a.txt,表面上成了,其实并没有修改a.txt 。因为该用户对/test目录有W权限,vim编辑器工作于内存中,编辑完内容,执行保存时,相当于在/test目录下新建了a.txt,并把内存中编辑的内容写入了新建的这个文档。而新建的a.txt把之前的a.txt覆盖了。
  • . 文件 命令(. 后面加空格,再跟文件) 把文件当命令来执行(前提是要有R权限才行) 可以用来测试X权限


  • .sh 命令(或者sh) 解释执行文件内容,效果和上面的 . 一样。工作方式是读一行,执行一行(跟Python一样),因此和X权限无关,只要有R权限就行