linux(redhat7)学习笔记(05)用户身份与文件权限

一、用户及用户组的管理

1.  useradd [选项] 用户名

用于创建新的用户。

参数 作用

-d 指定用户的家目录(默认为/home/username)

-e 账户的到期时间,格式为YYYY-MM-DD.

-u 指定该用户的默认UID

-g 指定一个初始的用户基本组(必须已存在)

-G 指定一个或多个扩展用户组

-N 不创建与用户同名的基本用户组

-s 指定该用户的默认Shell 解释器

 

例1:增加用户user1,不加参数,用户默认创建后通过“id 用户名”查看真实有效的用户ID(UID)和组ID(GID), UID 是对一个用户的单一身份标识。组ID(GID)则可以对应一个或多个UID。

[root@linux~]# adduser user1

[root@linux~]# id user1

uid=1001(user1) gid=1001(user1) groups=1001(user1)

 

例2:

创建一个普通用户user2并指定其home目录的路径、用户的UID 以及Shell 解释器.

注意:终端解释器设置为/sbin/nologin,表示该用户不能登录到系统中

[root@linux~]# useradd -d /home/user2home -u 8888 -s /sbin/nologin user2

[root@linux~]# id user2

uid=8888(user2) gid=8888(user2) groups=8888(user2)

 

2.  groupadd [选项] 组名

用于创建用户组,通常一个组里面有多个用户,便于针对一类用户统一安排权限。

例1.创建技术人员组jsryz

[root@linux~]# groupadd jsryz

可以通过查看/etc/group文件 查看所有用户组

 [root@linux~]# cat /etc/group

…(略)…

user1:x:1001:

user2:x:8888:

jsryz:x:8889:

 

3. usermod [选项] 用户名

Linux 系统中的一切都是文件,创建用户也就是修改配置文件(/etc/passwd)的过程。

可以用usermod 命令修改已经创建的用户信息,用户信息包括诸如用户的UID、基本/扩展用户组、默认终端等,也可以直接用文本编辑器来修改其中的用户参数项目。

例1. 将用户user1加入到jsryz用户组中,这样扩展组列表中则会出现jsryz用户组的字样,而基本组1001(user1)不会受到影响.

[root@linux~]# id user1

uid=1001(user1) gid=1001(user1) groups=1001(user1)

[root@linux~]# usermod -G jsryz user1

[root@linux~]# id user1

uid=1001(user1) gid=1001(user1) groups=1001(user1),8889(jsryz)

 

4. passwd [选项] [用户名]

修改用户密码

5. userdel [选项] 用户名

删除用户

参数 作用

-f 强制删除用户

-r 同时删除用户及用户家目录

[root@linux~]# useradd -d /home/user3home -u 9999 -s /sbin/nologin user3

[root@linux~]# userdel user1

[root@linux~]# userdel -f user2

 [root@linux~]# userdel -r user3


二、文件权限与归属

1文件符号类型对应关系

-:普通文件。

d:目录文件。

l:链接文件。

b:块设备文件。

c:字符设备文件。

p:管道文件。

 

2权限

 

三、文件的特殊权限

单纯设置文件的rwx 权限无法满足我们对安全和灵活性的需求,因此便有了SUID、SGID 与SBIT 的特殊权限位。

 

1. SUID

例如:存储 Linux 系统中用户的密码信息的/etc/shadow 文件,只有 root 用户拥有对它的读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。

[root@linuxhome]# ls -l /etc/shadow

----------. 1 root root 1154 Mar  4 14:42 /etc/shadow

由此可知上述文件的默认权限是000,也就是说除了root 管理员以外,所有用户都没有查看或编辑该文件的权限。

root用户查看此文件,发现linuxprobe用户的密码信息如下:

linuxprobe:$6$TImw0SXf$N2mlQazZTiYHLx1hbsSezXDJ5XppDEBVelozVE79434dHhC066qFUuKg1vl8l0W0FTACVTwa10ptyEj4k.Ct30:18315:0:99999:7:::

通过命令su切换用户为linuxprobe用户,用户没有查看shadow的权限

[linuxprobe@linux~]$ cat /etc/shadow

cat: /etc/shadow: Permission denied

然后通过命令passwd修改密码后,再切回用户root,再次查看文件shadow后发现

linuxprobe:$6$28AsHxFb$VAfzFsV49.RT.Aa5h9xpHacchWop9rV/15YLGJp0A21PWG19MWtLMNWsW.i08TzKhLJAPDTLMsPOD2SqijkFT1:18325:0:99999:7:::

由此可以判断用户linuxprobe在修改密码时修改了此文件关于自己的密码信息。

通过whereis命令查看passwd

[root@linux~]# whereis passwd

passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

[root@linux~]# ls -l /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 Jan 30  2014 /usr/bin/passwd

说明用户linuxprobe在执行passwd命令时会临时获得root权限

它的默认权限是000,也就是说除了root 管理员以外,所有用户都没有查看或编辑该文件的

权限。但是,在使用passwd 命令时如果加上SUID 特殊权限位,就可让普通用户临时获得程

序所有者的身份,把变更的密码信息写入到shadow 文件中

2.SGID

让目录内新建文件的所有组,将会继承原目录的所有组

 

chmod +权限  文件

chmod -权限  文件

chown 属性

SUID u+s

SGID g+s

SBIT o+t

 

例:

[root@linux~]# cd /home

[root@linuxhome]# mkdir haha

[root@linuxhome]# ls -dl haha

drwxr-xr-x. 2 root root 6 Mar  4 16:59 haha

[root@linuxhome]# chmod -R g+s haha

[root@linuxhome]# ls -dl haha

drwxr-sr-x. 2 root root 6 Mar  4 16:59 haha

由此可知此目录haha拥有了SGID权限,且此目录的所有组为root,其它用户如果在此目录中新建文件 ,则文件所有主为其它用户,但所有组将会是root.

下面执行实验,切换至linuxprobe用户

[root@linuxhome]# chmod -R 777 haha

[root@linuxhome]# su - linuxprobe

 [linuxprobe@linux~]$ touch newfile

[linuxprobe@linux~]$ ls -l newfile

-rw-rw-r--. 1 linuxlinux0 Mar  4 17:11 newfile

[linuxprobe@linux~]$ cd /home/haha

[linuxprobe@linuxhaha]$ touch newfile

linuxprobe@linuxhaha]$ ls -l newfile

-rw-rw-r--. 1 linuxroot 0 Mar  4 17:23 newfile

 

3.SBIT

保护位 粘滞位

保护自己的文件不被别人所删除

例如:上个练习中的haha目录中linuxprobe用户新建了文件newfile,用户user1新建了2个文件test2和usertxt.txt,

[linuxprobe@linuxhaha]$ ls -l

-rw-rw-r--. 1 linuxroot 0 Mar  4 17:23 newfile

-rw-rw-r--. 1 user1      root 0 Mar  5 10:46 test2.txt

-rw-rw-r--. 1 user1      root 0 Mar  5 10:45 usertxt.txt

如果不设置粘滞位,用户linuxprobe是完全可能删除(或误删除)user1的文件的,例如linuxprobe删除了user1的test2.txt文件

[linuxprobe@linuxhaha]$ rm -rf test2.txt

[linuxprobe@linuxhaha]$ ls

newfile  usertxt.txt

所以,此时root用户需要进行如下设置

[root@linux~]# ls -l /home/haha

total 0

-rw-rw-r--. 1 linuxroot 0 Mar  4 17:23 newfile

-rw-rw-r--. 1 user1      root 0 Mar  5 10:45 usertxt.txt

 

[root@linux~]# ls -l /home/haha

total 0

-rw-rw-r--. 1 linuxroot 0 Mar  4 17:23 newfile

-rw-rw-r--. 1 user1      root 0 Mar  5 10:45 usertxt.txt

[root@linux~]# chmod -R o+t /home/haha

[root@linux~]# ls -l /home/haha

total 0

-rw-rw-r-T. 1 linuxroot 0 Mar  4 17:23 newfile

-rw-rw-r-T. 1 user1      root 0 Mar  5 10:45 usertxt.txt

 

此后,用户linuxprobe再也无法删除(或误删除)user1的文件

试验如下:

 [linuxprobe@linuxhaha]$ rm -rf usertxt.txt

rm: cannot remove ‘usertxt.txt’: Operation not permitted

同理,usre1用户也无法删除其它用户的文件

[user1@linuxhaha]$ rm -rf newfile

rm: cannot remove ‘newfile’: Operation not permitted

 

四、文件的隐藏属性

1. chattr [参数] 文件

用于设置文件的隐藏权限

例如:创建6个文件

[root@linux~]# echo "hellow" >  file

[root@linux~]# echo "hellow" >  file1

[root@linux~]# echo "hellow" >  file2

[root@linux~]# echo "hellow" >  file3

[root@linux~]# echo "hellow" >  file4

[root@linux~]# echo "hellow" >  file5

将file1设置为无法删除文件,仅能修改其中文件的内容。

[root@linux~]# ls -l file1

-rw-r--r--. 1 root root 7 Mar  5 11:37 file1

 [root@linux~]# chattr +i file1

[root@linux~]# ls -l file1

-rw-r--r--. 1 root root 7 Mar  5 11:37 file1

增加隐藏属性后,查看文件属性没有任何变化,但是文件file1已经无法删除了,而file却可以

[root@linux~]# rm -rf file

[root@linux~]# rm -rf file1

rm: cannot remove ‘file1’: Operation not permitted

设置file2文件为+a属性“仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)”

[root@linux~]# chattr +a file2

[root@linux~]# vim file2

试着修改内容后,无法保存,只得放弃

[root@linux~]# echo "world"  >>  file2

[root@linux~]# echo "world"  >>  file2

[root@linux~]# cat file2

hellow

world

 

2. lsattr [参数] 文件

用于显示文件的隐藏权限

[root@linux~]# lsattr file*

----i----------- file1

-----a---------- file2

 

 

五、文件的隐藏属性

1. setfacl [参数] 文件名称”

管理文件的ACL 规则。

setfacl 命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中,针对目录文件需要使用-R 递归参数;针对普通文件则使用-m 参数;如果想要删除某个文件的ACL,则可以使用-b 参数。

 

例如:普通用户linux无法访问root用户的/root目录

[root@linux~]# su - linux

[linux@linux~]$ cd /root

-bash: cd: /root: Permission denied

使用root用户设置

[root@linux~]# setfacl -Rm u:linux:wrx /root

 [root@linux~]# su - linux

 [linux@linux~]$ cd /root

 

2. getfacl 文件名称

查看root用户的/root目录

[root@linux~]# getfacl /root

getfacl: Removing leading '/' from absolute path names

# file: root

# owner: root

# group: root

user::r-x

user:linux:rwx

group::r-x

mask::rwx

other::---

六、 su 命令与sudo 服务

1. su命令

切换用户身份

su user

su - user 表示完全身份变更,包括环境变量

 

2. sudo 服务

sudo 命令把root的特定命令的执行权限赋予给指定用户,这样既可保证普通用户能够完成特定的工作,也可以避免泄露root 管理员密码。

让普通用户临时拥有root指定权限有2种sudo服务方法,例如让普通用户可以reboot

方法1:编辑 /etc/sudoers

方法2:visudo

修改/etc/sudoers

97 ## Allow root to run any commands anywhere

 98 root    ALL=(ALL)       ALL

 99 linux ALL=(ALL) /usr/sbin/reboot

说明:

上面的第一个ALL可以设置为来访IP,第二个(ALL)可以为(root)

reboot命令必须是全路径,不知道的话可以通过whereis reboot查询获得

 

[root@linux~]# vim /etc/sudoers

[root@linux~]# vim /etc/sudoers

[root@linux~]# su - linux

[linux@linux~]$ reboot

执行失败

[linux@linux~]$ sudo reboot

提示输入linux用户的密码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值