Hel*_*mut 7 permissions root chmod chown
我做了一件蠢事:
chown -R root:root /usr
chmod -R g-w /usr
Run Code Online (Sandbox Code Playgroud)
显然,我能做的最好的事情就是重新安装系统。但是,到目前为止,我的系统运行良好 - 是否有任何不尽快修复此问题的立即危险的事情?我有 Ubuntu 18.04(没有互联网连接),它只是用作本地 NAS。
我这样做的原因是在进行更新时出现警告:
WARN: uid is 0 but '/usr' is owned by 1000
WARN: /usr is group writable!
Run Code Online (Sandbox Code Playgroud)
我问过,论坛上有人用“它是完全安全的”建议了上述命令。经验教训:不要相信互联网上的人,即使他们听起来完全相信。
显然,为什么/usr
组可写而不由 root 拥有的原因是因为我特定的 DIY-Nas Ubuntu (Odroid):
drwxrwxr-x 10 odroid odroid 4096 Apr 12 2018 usr
Run Code Online (Sandbox Code Playgroud)
也许我不应该使用-R
递归选项。现在没关系。
在过去的几个小时里,我浏览了各种帖子以了解我做了什么。它看起来像是chown
在/usr
中断setuid
和setgid
位上运行任何,所以我需要手动与现有系统进行比较,以在我再次修复所有权后恢复所有这些。为了修复sudo
command,我已经这样做了:
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
Run Code Online (Sandbox Code Playgroud)
除此之外,我看不到任何其他问题。当我登录到 Ubuntu 界面时,我收到了一些蓝牙软件的许可警告,但这并不是直接相关的。我知道出于安全原因,/usr 中的某些软件具有除root
(例如,请参阅此处的列表)以外的组- 但是否会对我的 nas 系统产生任何真正的负面影响,尤其是与文件处理相关的/归档东西,例如损坏或无法访问的文件?
请注意,我创建了一个新的 stackexchange 帐户,因为我太尴尬了..无论如何,非常感谢您的建议!
我认为您很幸运,因为您刚刚删除了组的“可写”位。这不会影响 SETGID 或 SETUID 位。如果它们之前设置,它们仍然设置。chmod -R 777 /usr
另一方面,该命令将所有位重置为 ,rwx
同时删除任何其他位,包括s
位。这就是为什么发布的chmod -R 777 /usr
人通常被迫重新安装。
也许我在我的系统上所做的观察可以帮助你。我已经运行了一些find
命令来查看哪些文件和目录会受到您发出的命令的影响。结果如下:
# Find all files and directories NOT owned by user root:
find usr -not -user root -ls
3407926 52 -rwsr-sr-x 1 daemon daemon 51464 Feb 20 2018 usr/bin/at
# Find all files and directories NOT owned by group root:
find usr -not -group root -ls
3418319 4 drwxrwsr-x 3 root staff 4096 Jan 5 2018 usr/local/lib/python3.6
3418322 4 drwxrwsr-x 2 root staff 4096 Jan 5 2018 usr/local/lib/python3.6/dist-packages
3419229 4 drwxrwsr-x 4 root staff 4096 Nov 13 20:03 usr/local/lib/python2.7
3419230 4 drwxrwsr-x 2 root staff 4096 Jan 26 2018 usr/local/lib/python2.7/dist-packages
1049153 4 drwxrwsr-x 2 root staff 4096 Nov 13 20:03 usr/local/lib/python2.7/site-packages
3544477 4 drwxrwsr-x 2 root staff 4096 Jan 5 2018 usr/local/share/fonts
3418324 4 drwxrwsr-x 3 root staff 4096 Jan 5 2018 usr/local/share/emacs
3544479 4 drwxrwsr-x 2 root staff 4096 Jan 5 2018 usr/local/share/emacs/site-lisp
3416934 372 -rwsr-xr-- 1 root dip 378600 Jun 12 19:20 usr/sbin/pppd
3410196 40 -rwxr-sr-x 1 root mail 39000 Apr 3 2018 usr/sbin/ssmtp
3408208 12 -rwxr-sr-x 1 root utmp 10232 Mär 11 2016 usr/lib/x86_64-linux-gnu/utempter/utempter
3419827 12 -rwxr-sr-x 1 root tty 10232 Aug 4 2017 usr/lib/mc/cons.saver
3428536 16 -rwxr-sr-x 1 root mail 14336 Jul 31 16:14 usr/lib/evolution/camel-lock-helper-1.2
3416858 44 -rwsr-xr-- 1 root messagebus 42992 Nov 15 2017 usr/lib/dbus-1.0/dbus-daemon-launch-helper
1183416 4 drwxrwsr-t 2 root lpadmin 4096 Nov 8 2017 usr/share/ppd/custom
3410118 44 -rwxr-sr-x 1 root mlocate 43088 Mär 1 2018 usr/bin/mlocate
3408029 16 -rwxr-sr-x 1 root tty 14328 Jan 17 2018 usr/bin/bsd-write
3414379 356 -rwxr-sr-x 1 root ssh 362640 Nov 5 12:51 usr/bin/ssh-agent
3410676 32 -rwxr-sr-x 1 root tty 30800 Jul 26 18:20 usr/bin/wall
3409008 72 -rwxr-sr-x 1 root shadow 71816 Jan 25 2018 usr/bin/chage
3416771 24 -rwxr-sr-x 1 root shadow 22808 Jan 25 2018 usr/bin/expiry
3407926 52 -rwsr-sr-x 1 daemon daemon 51464 Feb 20 2018 usr/bin/at
3409356 40 -rwxr-sr-x 1 root crontab 39352 Nov 16 2017 usr/bin/crontab
# find objects that have the group-writable bit set and are owned by user=root but group!=root:
find usr -perm -0020 -user root -not -group root -ls
3418319 4 drwxrwsr-x 3 root staff 4096 Jan 5 2018 usr/local/lib/python3.6
3418322 4 drwxrwsr-x 2 root staff 4096 Jan 5 2018 usr/local/lib/python3.6/dist-packages
3419229 4 drwxrwsr-x 4 root staff 4096 Nov 13 20:03 usr/local/lib/python2.7
3419230 4 drwxrwsr-x 2 root staff 4096 Jan 26 2018 usr/local/lib/python2.7/dist-packages
1049153 4 drwxrwsr-x 2 root staff 4096 Nov 13 20:03 usr/local/lib/python2.7/site-packages
3544477 4 drwxrwsr-x 2 root staff 4096 Jan 5 2018 usr/local/share/fonts
3418324 4 drwxrwsr-x 3 root staff 4096 Jan 5 2018 usr/local/share/emacs
3544479 4 drwxrwsr-x 2 root staff 4096 Jan 5 2018 usr/local/share/emacs/site-lisp
1183416 4 drwxrwsr-t 2 root lpadmin 4096 Nov 8 2017 usr/share/ppd/custom
Run Code Online (Sandbox Code Playgroud)
当然,您的里程可能有所不同,但我相信您只是“破坏”了少数文件。下面的绝大多数对象
/usr
由
或拥有root:root
并且通常具有rwxrwxr-x
或rwxr-xr-x
。删除该g-w
位并没有真正造成伤害,因为它删除了组的可写位,root
但是(至少在我的标准系统上)该组的唯一成员root
无论如何都是用户,并且他通过用户权限(您没有)拥有写访问权限't 更改)并且实际上不需要通过组成员身份进行写访问。
顺便说一句,我/usr
本身具有以下属性:
drwxr-xr-x 10 root root 4096 Jan 5 2018 usr/
Run Code Online (Sandbox Code Playgroud)
OP提到他遇到了错误
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
Run Code Online (Sandbox Code Playgroud)
发行后chmod g-w
和chown root:root
,不得不与修复
chmod 4755 /usr/bin/sudo
。事实证明,对chown g-w
确实不改变setuid位,但在chown root:root
做了。它显然清除了那些 SETUID(大概还有 SETGID 和 STICKY)位。对我来说,这是意外的行为,但我很确定有一个解释和/或原因。然而。我运行了另一个find
命令来查看下面的哪些文件/usr
设置了一个或多个 SETUID、SETGID 和 STICKY 位:
find usr -perm /7000 -printf '%M\t%u:%g\t%p\n'
drwxrwsr-x root:staff usr/local/lib/python3.6
drwxrwsr-x root:staff usr/local/lib/python3.6/dist-packages
drwxrwsr-x root:staff usr/local/lib/python2.7
drwxrwsr-x root:staff usr/local/lib/python2.7/dist-packages
drwxrwsr-x root:staff usr/local/lib/python2.7/site-packages
drwxrwsr-x root:staff usr/local/share/fonts
drwxrwsr-x root:staff usr/local/share/emacs
drwxrwsr-x root:staff usr/local/share/emacs/site-lisp
-rwsr-xr-- root:dip usr/sbin/pppd
-rwxr-sr-x root:mail usr/sbin/ssmtp
-rwxr-sr-x root:utmp usr/lib/x86_64-linux-gnu/utempter/utempter
-rwsr-sr-x root:root usr/lib/xorg/Xorg.wrap
-rwxr-sr-x root:tty usr/lib/mc/cons.saver
-rwsr-sr-x root:root usr/lib/snapd/snap-confine
-rwxr-sr-x root:mail usr/lib/evolution/camel-lock-helper-1.2
-rwsr-xr-- root:messagebus usr/lib/dbus-1.0/dbus-daemon-launch-helper
-rwsr-xr-x root:root usr/lib/openssh/ssh-keysign
-rwsr-xr-x root:root usr/lib/policykit-1/polkit-agent-helper-1
-rwsr-xr-x root:root usr/lib/eject/dmcrypt-get-device
drwxrwsr-t root:lpadmin usr/share/ppd/custom
-rwxr-sr-x root:mlocate usr/bin/mlocate
-rwxr-sr-x root:tty usr/bin/bsd-write
-rwsr-xr-x root:root usr/bin/traceroute6.iputils
-rwsr-xr-x root:root usr/bin/gpasswd
-rwxr-sr-x root:ssh usr/bin/ssh-agent
-rwsr-xr-x root:root usr/bin/passwd
-rwsr-xr-x root:root usr/bin/pkexec
-rwsr-xr-x root:root usr/bin/sudo
-rwxr-sr-x root:tty usr/bin/wall
-rwsr-xr-x root:root usr/bin/chfn
-rwxr-sr-x root:shadow usr/bin/chage
-rwsr-xr-x root:root usr/bin/arping
-rwxr-sr-x root:shadow usr/bin/expiry
-rwsr-sr-x daemon:daemon usr/bin/at
-rwxr-sr-x root:crontab usr/bin/crontab
-rwsr-xr-x root:root usr/bin/chsh
-rwsr-xr-x root:root usr/bin/newgrp
Run Code Online (Sandbox Code Playgroud)
这个列表不是很长,但它仍然包含一些我认为至关重要的文件。尤其是那些在最后三分之一,像passwd
,
crontab
等等,当然sudo
。
归档时间: |
|
查看次数: |
2156 次 |
最近记录: |