shell之理解linux文件权限
/etc/passwd文件
这个文件是专门用来将用户登录名保存起来的文件,同时记录了相匹配的UID
/etc/shadow
可以更好的控制用户密码
用户操作
添加新用户
useradd
-D 用来查看系统中所用的默认值
/usr/sbin/useradd -D GROUP=100 ## 新用户会被添加到GID为100的公共组 HOME=/home ## 新用户的home文件位于/home/user INACTIVE=-1 ## 新用户的密码在过期后不会被禁用 EXPIRE= SHELL=/bin/bash ## 默认使用/bin/bash作为shell SKEL=/etc/skel ## 系统会将/etc/skel目录下的内容复制到用户的home目录下 CREATE_MAIL_SPOOL=yes
useradd的参数
参数 描述 -c comment 给新用户添加备注 -d home_dir 为主目录指定一个名 -e expire_date 用YYYY-MM-DD格式指定一个账户过期的日期 -f inactive_days 指定这个账户密码过期后多少天这个账户被禁用;0表示密码一过期就立即禁用,1表示 禁用这个功能 -g initial_group 指定用户登录组的GID或组名 -G group 指定用户除登录组之外所属的一个或多个附加组 -k 必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录 -m 创建用户的HOME目录 -M 不创建用户的HOME目录 -n 创建一个与用户登录名同名的新组 -r 创建系统账户 -p passwd 为用户指定默认密码 -s shell 指定默认的登录shell -u uid 为账户指定唯一的uid
删除用户
默认情况下,userdel只会删除/etc/passwd
下的用户信息,如果加上-r参数,则可以删除home目录和邮件目录
修改用户
- usermod:修改用户账号的字段,还可以指定主要组及附加组的所属关系,大部分参数与useradd的相同
- passwd和chpasswd:
passwd test
使用linux组
创建新组:groupadd xx,在创建新组的时候,默认没有用户会分到这个组,groupadd命令没有提供将用户添加到组中的选项,usermod可以实现
groupadd test usermod -G test user1 usermod -G test user2
修改组:groupmod,-g修改GID,-n修改组名
理解权限
-代表文件
d代表目录
l代表链接
c代表字符型设备
b代表块设备
n代表网络设备 之后有3组三字符的编码。每一组定义了3种访问权限:
r代表对象是可读的 w代表对象是可写的
x代表对象是可执行的 若没有某种权限,在该权限位会出现单破折线。
这3组权限分别对应对象的3个安全级别:
- 对象的属主
- 对象的属组
- 系统其他用户
改变权限
- chmod options mode file
- chmod 760 newfile
- chmod o+r newfile
改变所属关系
有时需要改变文件的属主,有两种方式来实现
- chown改变文件的属主
- chown options owner [.group] file
- chown dan newfile :文件归dan
- chown dan.shared newfile :文件属主为dan,属组为shared
- -R 可以递归改变
- chgrp改变文件的属组
- chgrp 可以更变文件和目录的默认属组
- chgrp shared newfile
共享文件
linux为每个文件和目录存储了三个额外的信息位
设置用户id(SUID)
设置组id(SGID),:对文件来说,程序会以文件属组的权限运行;对目录来说,目录中 创建的新文件会以目录的默认属组作为默认属组。 在启用SGID后,你可以强制在一个共享目录下创建的新文件都属于该目录的属组。
mkdir testdir ## 创建一个文件夹 $ ls -l drwxrwxr-x 2 rich rich 4096 Sep 20 23:12 testdir/ $ chgrp shared testdir 将这个文件的属组改为shared $ chmod g+s testdir 文件夹添加SGID $ ls -l drwxrwsr-x 2 rich shared 4096 Sep 20 23:12 testdir/ $ umask 002 设置默认对属组成员可写 $ cd testdir $ touch testfile $ ls -l 然后shared组的所有用户都可以访问并修改了