Неспособный к su в учетную запись: не мог открытое заседание

В zsh,

printf '<%s>\n' ${@[2,$#]}

то же как

printf '<%s>\n' $@[2,-1]

печатает непустые позиционные элементы 2 к последнему. Это совпадает с записью (если $ # == 5):

printf '<%s>\n' $2 $3 $4 $5

Так:

$ set 1 2 '' '*' 5
$ printf '<%s>\n' $@[2,-1]
<2>
<*>
<5>

Вкладывать эквивалент bash, Вам было бы нужно:

$ set 1 2 '' '*' 5
$ a=("$@")
$ IFS=; set -f
$ printf '<%s>\n' ${a[@]:1}
<2>
<*>
<5>

Вам нужен посреднический массив потому что ${@:2} не прокладывает себе путь (по крайней мере, не с 4.2.45).

Конечно, если Вы хотели все элементы, но первый независимо от того, пусты ли они или нет, необходимо было бы записать это:

$ printf '<%s>\n' "$@[2,-1]"
<2>
<>
<*>
<5>

в zsh и

$ printf '<%s>\n' "${@:2}"
<2>
<>
<*>
<5>

в bash.

Отметьте это zsh в конечном счете включенный ${array:first:n} синтаксис (только, когда это не будет конфликтовать с модификаторами стиля csh), таким образом, вышеупомянутый удар (на самом деле ksh) код будет также работать в более новых версиях zsh.

Относительно причины несоответствия между ${a[@]:1} по сравнению с ${@:2}, необходимо принять во внимание это в bash, вопреки zsh или csh или rc, но как ksh где bash скопированный его массивы с, массивы являются разреженными, и индексы запускаются в 0.

${a[@]:4:5} возвращает 5 первых элементов, indice которых больше или равен 4. Первый элемент в $@ имеет indice 1 ($1), в то время как массив, определенный как a=(...) установили его элементы с индексами, запускающимися в 0.

Ну, это не точно верно. В bash, "$@" расширяется как "$1" "$2" "$3" "$4" "$5", в то время как "${@:0:1}" похож "$0" если и только если $ #> 0. "$@" кажется, похож "${@:1}" в то время как $@ (без кавычек), только похож ${@:1} если $IFS сброшен или непуст. Это походит на ошибки мне. Поведение в ksh отличается и на этот раз более последователен.

3
04.12.2014, 00:41
7 ответов
root@hostname # su - oracle
could not open session

root@hostname # grep oracle.*nofile /etc/security/limits.conf
oracle          -       nofile          unlimited

установить nofile в limits.conf на некоторое количество вместо неограниченного:

root@hostname # vi /etc/security/limits.conf
root@hostname # grep oracle.*nofile /etc/security/limits.conf
oracle          -       nofile          65536
root@hostname # su - oracle
-bash-4.1$ id
uid=201(oracle) gid=5504(oinstall) groups=5504(oinstall),251(dba),5502(asmdba),5505(oper)
-bash-4.1$
7
27.01.2020, 21:08

Если "nofile" установлен на "unlimited" в /etc/security/limits.conf (или в файлах в limits.d), то пользователь не может авторизоваться.

3
27.01.2020, 21:08

Esto es lo que funcionó para mí, en mi caso su estaba funcionando para algunos usuarios. Entonces, revisé el contenido de /etc/pam.d/su y tenía las siguientes dos líneas:

sesión incluye sistema -autenticación

sesión pam opcional _xauth.so

Comenté el primero, reinicié la sesión y funcionó.

7
27.01.2020, 21:08

Комментарий «сессия включает систему -auth» сработал для меня.

env :docker oraclelinux :последний, после установки пакета oracle -база данных -сервер -12cR2 -preinstall.x86 _64.

2
27.01.2020, 21:08

комментарии «сессия требуется pam _limit.so» во всех файлах в «/etc/pam.d» решает

  • su :не удается открыть сеанс :Отказано в доступе
  • runuser :не может открыть сеанс :Отказано в доступе

(ОЛ7.7)

sed -i -r 's/^(session\s+required\s+pam_limits.so)/#\1/' /etc/pam.d/*
4
29.01.2020, 10:14

Я играл с докером и oraclelinux:7-slim, чтобы установить базу данных Oracle. После установки пакета oracle -database -preinstall -19c я перестал su -входить в учетную запись oracle. Здесь в limits.confговорят о «без ограничений на количество файлов». Я пробовал это, и это не сработало. Комментирование строки session include system-authв /etc/pam.d/suработает.

Однако до того, как я установил пакет, конфигурация была все той же, и я смог выполнить su - oracle. Даже после установки пакета, если я создам нового пользователя, принадлежащего к той же группе, что и оракул, я могу suвойти в его учетную запись. Так что должно было быть что-то, что изменилось в пакете.

После некоторого расследования я обнаружил, что пакеты устанавливаются oracle-database-preinstall-19c.confв /etc/security/limits.d/, и этот файл содержит все настройки ограничений оракула. Только когда я прокомментировал следующую строку, я смог suвойти в аккаунт оракула:

жесткий мемлок оракула 134217728

Блокировка памяти устанавливается на 128 Гб. Попытки установить меньшие значения не увенчались успехом. Только когда я прокомментировал.

Итак, теперь вы знаете, что это является причиной. Но, конечно, если вы закомментируете строку session include system-authв /etc/pam.d/su, это тоже сработает.

0
02.12.2020, 21:05

Убедитесь, что в строке pam_limits.soесть такие вкладки:

session^I^Irequired^Ipam_limits.so$

При добавлении этой строки важны вкладки.

sed -i '$a session^I^Irequired^Ipam_limits.so' /etc/pam.d/su

Если вкладки отсутствуют, то вы увидите что-то вроде этого:

[ azureadmin]# su - ALOGIN
Last login: Fri Jun 11 08:42:32 CDT 2021 on pts/0
su: cannot open session: Permission denied
0
11.06.2021, 14:05

Теги

Похожие вопросы