Я немного прочитал о chmod и хорошо разбираюсь в правах доступа к файлам. Но меня немного смущает понятие «владелец».
Если моя учетная запись пользователя является «владельцем» каталога, но у него нет разрешений (chmod 0000), имеет ли мой пользователь больше возможностей, чем другой случайный пользователь в системе? Предполагая, что ни один из пользователей не является суперпользователем?
Да. Как владелец, вы можете использовать chmod
, чтобы предоставить себе все необходимые разрешения.
Если моя учетная запись пользователя является «владельцем» каталога, но у него нет разрешений (chmod 0000), имеет ли мой пользователь больше возможностей, чем другой случайный пользователь в системе?
blockquote>Простой ответ: Нет , у владельца не будет никакого другого средства для того, чтобы быть владельцем каталога, когда он chmoded для [ 110]. Поскольку бит разрешения для владельца также равен
0
, что означает отсутствие прав на чтение / запись / выполнение для него.Проверьте бит разрешения файла Linux
.
Каталог - это просто особый вид файла, поэтому следующее относится в равной степени к каталогам и файлам.
Быть владельцем позволяет вам сбросить доступ к файлу, чтобы вы могли затем прочитать файл. Другие пользователи, кроме root, не смогут этого сделать.
До тех пор, пока вы не сбросите доступ, файл будет недоступен для вас так же, как и для других пользователей.
Быть владельцем файла не позволяет вам удалить (удалить его). У вас должен быть доступ на запись к каталогу, в котором вы его удалили.
Пример сценария, демонстрирующий, что можно и чего нельзя делать. (Не запускать с правами root, но требуется доступ sudo.):
#!/bin/bash
DIR=directory$
FILE=$DIR/file$
echo We can remove it - own both file and directory
mkdir $DIR
date > $FILE
chmod 0000 $FILE
ls -ld $DIR $FILE
rm -f $FILE
ls -ld $DIR $FILE
echo
echo We can not remove it - no write access to directory
date > $FILE
chmod 0000 $FILE
chmod -w $DIR
ls -ld $DIR $FILE
rm -f $FILE
ls -ld $DIR $FILE
echo
echo We can remove it - even if we do not own it
chmod 0000 $FILE
chmod +w $DIR
sudo chown root:root $FILE
ls -ld $DIR $FILE
rm -f $FILE
ls -ld $DIR $FILE
echo
echo We can not remove it - even if we can read it - do not own directory
date > $FILE
cat $FILE
sudo chown root:root $DIR
ls -ld $DIR $FILE
cat $FILE
rm -f $FILE
ls -ld $DIR $FILE
echo
sudo chown $LOGNAME $DIR
echo Now we can clean up
rm -f $FILE
rmdir $DIR
# EOF
chmod 00000
делает каталог / файл недоступным для владельца и группы. Единственное, что вы и группа, владеющая файлом, можете сделать, это удалить его с помощью rm -rf tmp/
. Ничего лучше, чем пример:
$ mkdir tmp
$ chmod 00000 tmp
$ cd tmp
bash: cd: tmp: Permission denied
Вы можете увидеть каталог с ls -l
d--------- 2 rinzwind rinzwind 4096 Oct 13 14:35 tmp
и только с sudo
вы можете войти в каталог ... [ 1110]
$ sudo su
# cd tmp
#
Что касается других сообщений: да, вы можете удалить файл / dir, который изменен на 00000:
$ mkdir tmp
$ chmod 00000 tmp
$ rm -rf tmp/
$ touch 1
$ chmod 00000 1
$ rm 1
rm: remove write-protected regular empty file `1'? y
$
Как владелец, вы также можете сбросить разрешения. Это то, что кому-то еще (кроме root) тоже разрешено.