Linux入门-用户及文件的属性和权限
在Linux操作系统中,用户及文件的属性和权限是系统安全不可或缺的部分。
用户管理
建立用户:useradd
格式:useradd [options] LOGIN
参数: -u ##指定用户的uid
-g ##指定用户初始组信息(已存在的组)
-G ##指定附加组(已存在的组)
-c ##说明、标签
-d ##指定用户家目录
-s ##指定用户所使用的shell(/etc/shells记录了用户能使用的shell)
删除用户:userdel
格式:userdel [options] LOGIN
参数: -r ##删除用户时,同时删除用户家目录及邮件有关的文件
建立组:groupadd
格式:groupadd [options] GROUP
参数: -g ##指定组ID
删除组:groupdel
格式:groupdel GROUP
查看用户信息:id
更改用户信息:usermod
格式:usermod [options] LOGIN
参数: -l ##更改用户名称
-u ##更改uid
-g ##更改gid
-G ##更改附加组
-aG ##添加附加组
-c ##更改说明
-d ##更改家目录
-md ##更改家目录及家目录名称
-s ##更改shell
-L ##冻结帐号
-U ##解锁帐号
用户认证信息控制:chage
格式:chage [options] LOGIN
参数: -d ##用户密码最后一次修改时间
-m ##最短有效期
-M ##最长有效期
-W ##警告期
-I ##用户非活跃天数
-E ##帐号到期日,格式 -E "YYYY-MM-DD"
文件管理
查看文件、目录属性:ls -l、ls -ld
d rwxr-xr-x. 138 root root 8192 Apr 4 14:06 etc
[1] [2] [3] [4] [5] [6] [7] [8]
[1] ##文件类型
- #普通文件
d #目录
s #socket套接字
l #软链接
p #管道
c #字符设备
b #块设备
[2] ##读写权限
rwx r-x r-x
前三位是拥有者能做的动作(u)
中间三位是所属组的组成员能做的动作(g)
后三位是其他人能做的动作(o)
[3] ##文件内容被系统记录的次数 、子目录个数
[4] ##拥有者
[5] ##所属组
[6] ##文件大小、目录中内容的属性的大小
[7] ##文件最后一次被更改的时间、目录中文件增减或更名的时间
[8] ##文件名称、目录名称
用户、组的更改
更改拥有者:chown
更改所在组:chgrp
格式:COMMAND [OPTION]... NAME FILE ##-R:递归修改(目录需要加此参数)
权限的识别
ls -l 中 2-10字符为文件权限
r表示可读:对文件表示可以查看文件内容,对目录表示可以ls查看目录中存在的文件名称
w表示可写:对文件表示可以更改文件的内容,对目录表示可以删除目录中的子文件或子目录
x表示可执行:对文件表示可以开启文件中记录的程序,对目录表示可以进入目录中
修改权限:chmod
chmod [ugo+-=rwx] FILE
也可以用三位数字分别表示:拥有者、所属组、其他人的权限
r=4,w=2,x=1,例:u=rw-=6,g=r--=4,o=r--=4,644
特殊权限
stickyid
o+t (=1) ##只针对目录,目录有此权限时,目录中的文件只能被拥有者删除
sgid
g+s (=2) ##针对目录时,目录有此权限时,目录中的都归属目录所在组。针对二进制文件时,文件执行时,以所属组的身份执行
suid
u+s (=4) ##针对文件,文件记录动作在执行时,以文件拥有者身份执行
权限列表acl
当ls-l命令看到的文件权限最后有“+”,表示特殊权限列表开启
[[email protected] mnt]# ls -l
-rw-rwxr--+ 1 root root 0 Apr 11 14:30 file
查看权限列表:getfacl
设定权限列表:setfacl
-m:设置权限
-x:删除权限
-b:关闭权限列表
[[email protected] mnt]# setfacl -m u:jinx:rwx file ##设定jinx用户对file文件拥有rwx权限
[[email protected] mnt]# setfacl -m g:jinx:rw file ##设定jinx组对file文件拥有rw权限
[[email protected] mnt]# getfacl file ##查看file文件的权限列表
# file: file ##文件名称
# owner: root ##文件的拥有者
# group: root ##所属组
user::rw- ##拥有者拥有的权限
user:jinx:rwx ##用户jinx所拥有的权限
group::r-- ##所属组拥有的权限
group:jinx:rw- ##jinx组的用户拥有的权限
mask::rwx ##权限最大值
other::r-- ##其他人拥有的权限
[[email protected] mnt]# setfacl -x u:jinx file ##删除用户jinx对文件的特殊权限
[[email protected] mnt]# setfacl -x g:jinx file ##删除组jinx对文件的特殊权限
[[email protected] mnt]# setfacl -b file ##关闭权限列表
##当设定了acl权限列表后,如果使用chmod命令更改文件的权限,会更改mask值
[[email protected] mnt]# setfacl -m m:rwx file ##更改mask值
如果针对目录,可以设定在设定权限列表后,该目录内新建的文件拥有的特殊权限,需要加“d:”
[[email protected] mnt]# setfacl -m d:u:jinx:rwx linux
[[email protected] mnt]# getfacl linux
# file: linux
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx ##default属性:
default:user:jinx:rwx ##目录内新建文件的默认权限
default:group::r-x ##对已经存在的文件不生效
default:mask::rwx
default:other::r-x
实验:
- 有三个部门,shengchan、caiwu、jishu
- tom是生产部门的员工
- harry是财务部门的员工
- leo是技术部门的员工
- admin是管理员
- /pub目录为公共存储目录,所有用户可读、写、执行
- /sc目录为生产部存储目录,只能对生产部人员写入,并生产部人员建立文件自动归属shengchan组
- /cw目录为财务部存储目录,只能对财务部人员写入,并财务部人员建立文件自动归属caiwu组
- admin用户对/sc和/cw目录拥有可读写执行权限
[[email protected] /]# groupadd shengchan ##创建组shengchan
[[email protected] /]# groupadd caiwu ##创建组caiwu
[[email protected] /]# groupadd jishu ##创建组jishu
[[email protected] /]# useradd -G shengchan tom ##创建用户tom,附加组shengchan
[[email protected] /]# useradd -G caiwu harry ##创建用户harry,附加组caiwu
[[email protected] /]# useradd -G jishu leo ##创建用户leo,附加组技术
[[email protected] /]# useradd admin ##创建用户admin
[[email protected] /]# mkdir /pub /sc /cw ##创建目录,/pub,/sc,/cw
[[email protected] /]# chmod 1777 /pub ##设定/pub目录的权限为1777,所有人可读写进入目录,但只能删除自己的文件
[[email protected] /]# chgrp -R shengchan /sc ##设定/sc目录的所属组为shengchan组
[[email protected] /]# chgrp -R caiwu /cw ##设定/cw目录的所属组为caiwu组
[[email protected] /]# chmod 3770 /sc /cw ##设定/sc、/cw目录的权限为3770,本部门组成员可读写进入目录,
但只能删除自己的文件,创建的文件所属本部门组
[[email protected] /]# chown -R admin /sc /cw ##设置admin用户为/sc、/cw目录的拥有者
[[email protected] /]# setfacl -m d:m:r-- /sc /cw ##设定/sc、/cw目录的mask值r--,同部门用户只能查看,无法修改他人文件